代码之家  ›  专栏  ›  技术社区  ›  Роман Коптев

如何用spacy标记html标记?

  •  0
  • Роман Коптев  · 技术社区  · 7 年前

    我需要用spacy标记html文本。或者在标记化后合并标记。它们可以是任何html标记,例如:

    <br> <br/> <br > <n class="ggg">
    

    文档中有一个标签合并的例子
    标记,但它不能处理所有类型的标记。如果我写下这样的规则:

    [{'ORTH': '<'}, {}, {'ORTH': '>'}]
    

    它将加入一些标签:

    <br><p>
    

    或者像这样分开:

    <
    n
    class="ggg
    "
    >
    

    我也尝试过编写自定义标记器,但在空格方面遇到了问题。

    我希望每个html标记都是一个单独的标记,例如:

    <br>
    <br >
    <n class="ggg">
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Leo K    7 年前

    依我看,删除HTML标记并转换为纯文本是正确的做法,而不是让HTML标记成为“停止词”,因为其中一些标记实际上是有效的词,可以出现在文本中,不应被忽略(例如。, <body> vs body ).

    如果你有一个像

    <span>word</span><span>word</span>
    

    它呈现为 wordword 在用户代理中,实际上应该被解释为一个单词。例如,您可能会看到一个HTML页面,其中包含以下内容:

    <p><strong>S</strong>oup .... </p>
    

    这显然表现为 s “oup”应被视为 soup 而不是说 s oup .

    如果你出于什么原因 必须 假设任何HTML标记边界都是一个单词分隔符(大多数情况下都是错误的),您应该执行以下操作:使用HTML流标记器,例如libxml2和用于 startElement characters 只有前者应输出单个空格,后者应在获取字符时输出字符。这将把你的HTML输入转换成纯文本(就像HTML标记移除器一样),但也会在每个元素标记后添加一个空格,所以 <span>word</span><span>word</span> 将被转换为:“(空格)单词(空格)单词”。当存在嵌套标记时,这可能会添加多个空格,但当您将清理后的文本拆分为单词以进行进一步处理时,您可以轻松地处理此问题。