依我看,删除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>
将被转换为:“(空格)单词(空格)单词”。当存在嵌套标记时,这可能会添加多个空格,但当您将清理后的文本拆分为单词以进行进一步处理时,您可以轻松地处理此问题。