【问题标题】:remove Stopwords in java删除java中的停用词
【发布时间】:2011-03-12 01:21:49
【问题描述】:

我有一个停用词列表,其中包含大约 30 个单词和一组文章。

我想解析每篇文章并从中删除那些停用词。

我不确定最有效的方法是什么。

例如,如果存在空格,我可以循环遍历停止列表并替换文章中的单词,但它似乎不太好。

谢谢

【问题讨论】:

    标签: java stop-words


    【解决方案1】:

    替换单词效率低下。您最好的选择可能是逐字解析文章,并将每个单词复制到新的 StringBuffer;除非它是停用词,在这种情况下,您可以复制任何您想要的内容。 StringBuffer 在这里比 String 效率高很多。

    如果只有 30 个左右,那么如何存储停用词可能并不重要。一套可能是一个不错的选择。

    【讨论】:

      【解决方案2】:

      当且仅当它不在停用词列表中时,从输入中读取一个单词,并将其复制到您的 StringBuilder(或放置结果的任何地方)。如果您将停用词放入 HashTable 之类的东西中,您将能够更快地搜索它们。

      编辑:哎呀,不知道我在想什么,但你想要一个集合,而不是 HashTable(或任何其他字典)。

      【讨论】:

        【解决方案3】:

        根据Sun Java Tutorials,您可以在正则表达式中使用与Perl 兼容的\b 分隔符。如果你用它们包围这个词,它将只匹配那个词,无论它后面是标点符号还是空格。

        【讨论】:

          【解决方案4】:
          • 将停用词放入java.util.Set
          • 将输入拆分为单词
          • 对于输入中的每个单词,查看它是否包含在停用词集中,如果没有则写入输出

          【讨论】:

          • @Elham:这是一个选项。如果输入非常大,您可以通过使用扫描器一次读取一个单词来避免将其完全(可能两次)保存在内存中。
          猜你喜欢
          • 2016-05-21
          • 2012-09-10
          • 2010-12-12
          • 1970-01-01
          • 2014-06-06
          • 2015-02-25
          • 1970-01-01
          • 1970-01-01
          • 2018-02-25
          相关资源
          最近更新 更多