【发布时间】:2011-03-12 01:21:49
【问题描述】:
我有一个停用词列表,其中包含大约 30 个单词和一组文章。
我想解析每篇文章并从中删除那些停用词。
我不确定最有效的方法是什么。
例如,如果存在空格,我可以循环遍历停止列表并替换文章中的单词,但它似乎不太好。
谢谢
【问题讨论】:
标签: java stop-words
我有一个停用词列表,其中包含大约 30 个单词和一组文章。
我想解析每篇文章并从中删除那些停用词。
我不确定最有效的方法是什么。
例如,如果存在空格,我可以循环遍历停止列表并替换文章中的单词,但它似乎不太好。
谢谢
【问题讨论】:
标签: java stop-words
替换单词效率低下。您最好的选择可能是逐字解析文章,并将每个单词复制到新的 StringBuffer;除非它是停用词,在这种情况下,您可以复制任何您想要的内容。 StringBuffer 在这里比 String 效率高很多。
如果只有 30 个左右,那么如何存储停用词可能并不重要。一套可能是一个不错的选择。
【讨论】:
当且仅当它不在停用词列表中时,从输入中读取一个单词,并将其复制到您的 StringBuilder(或放置结果的任何地方)。如果您将停用词放入 HashTable 之类的东西中,您将能够更快地搜索它们。
编辑:哎呀,不知道我在想什么,但你想要一个集合,而不是 HashTable(或任何其他字典)。
【讨论】:
根据Sun Java Tutorials,您可以在正则表达式中使用与Perl 兼容的\b 分隔符。如果你用它们包围这个词,它将只匹配那个词,无论它后面是标点符号还是空格。
【讨论】:
java.util.Set
【讨论】: