有人比较了Lucene的这些词干分析器(包org.tartarus.snowball.ext): EnglishStemmer,PorterStemmer,LovinsStemmer? 它们背后的算法的优点/缺点是什么? 什么时候应该使用它们? 或者也许还有一些算法可用于英语单词词干?
感谢。
答案 0 :(得分:18)
Lovins词干分析器是一种very old算法,由于Porter词干分析器更强大,所以它没有太多实际应用。基于对源代码的一些快速略读,似乎PorterStemmer
实现了Porter的original (1980) algorithm,而EnglishStemmer
实现了他的updated version,这应该更好。
Stanford NLP工具提供了更强大的词干分析算法(实际上是一个词形变换器)。您可以使用Lucene-Stanford NLP真正的桥梁here(API docs)。
有关词干和词形还原的一般信息,另请参阅Manning, Raghavan & Schütze。
答案 1 :(得分:0)
我在我正在处理的文档分类问题中测试了3 Lucene stemmers available from org.apache.lucene.analysis.en
version 4.4.0 EnglishMinimalStemFilter
,KStemFilter
和PorterStemFilter
。我的结果证实了Introduction to Information Retrieval的作者声称对于文档分类设置中的小型训练语料库来说是有害的,并且对于大型语料库来说,没有区别。
对于搜索和索引,词干可能更有用(例如,参见Jenkins & Smith),但即使在那里,您的问题的答案取决于您正在做的事情的细节。 There is no free lunch!
在一天结束时,没有什么能比实际数据的实际代码经验测试。你真正知道哪个更好的唯一方法就是在你的应用程序中为自己运行词干分析器。