首页 > 解决方案 > 如何用 spacy 标记 html 标签?

问题描述

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

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

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

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

它将加入一些标签:

<br><p>

或分开,如:

<
n
class="ggg
"
>

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

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

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

标签: spacy

解决方案


恕我直言,删除 HTML 标签并转换为纯文本是正确的方法,而不是使 html 标签成为“停用词”,因为其中一些标签实际上是可以出现在文本中的有效词,不应被忽略(例如,<body>body)。

如果你有一个像

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

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

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

这显然呈现为 ' S oup' 并且应该被视为单词soup而不是单词sand oup

现在,如果出于某种原因您必须假定任何 HTML 标记边界是一个单词分隔符(在大多数情况下是错误的),您应该执行以下操作:使用 HTML 流标记器,例如 libxml2startElementcharacters仅为 and 编写处理程序。前者应输出一个空格,后者应在获取字符时输出字符。这会将您的 HTML 输入转换为纯文本(就像 HTML 标记删除器会做的那样),但还会在每个元素标记后添加一个空格,因此<span>word</span><span>word</span>将转换为:“(space)word(space)word”。当存在嵌套标签时,这可能会添加多个空格,但是当您将清理后的文本拆分为单词以进行进一步处理时,您可以轻松处理此问题。


推荐阅读