我在 Java 中使用 Lucene 来索引语料库并从中提取词干词表。我使用EnglishAnalyzer进行词干。然后我把单词表交给 Python 来用 NLTK 做一些事情。NLTK 中是否有与 Lucene 的 EnglishAnalyzer 使用的词干分析器完全兼容的词干分析器?
我知道我也可以使用 PyLucene 来规避这一点,但我想尽量减少依赖关系。
您可以在http://text-processing.com/demo/stem/上试用各种 NLTK 词干分析器,并使用结果与 Lucene 的 EnglishAnalyzer 的工作方式进行比较。它很可能实现了一种常见的算法,即 Porter 或 Lancaster。
所以如果我没记错的话,lucene 有几个由其他人贡献的词干分析器(即雪球、egothor、stempel)。仅考虑雪球词干分析器与 NLTK 搬运工词干分析器,甚至 NLTK api 都建议雪球词干分析器更可靠。请参阅http://nltk.googlecode.com/svn/trunk/doc/api/nltk.stem.porter-module.html。
如果我们对英语词干进行多次比较(使用http://snowball.tartarus.org/demo.php和http://text-processing.com/demo/stem/)
雪球:
cat -> cat
computer -> comput
argues -> argu
NLTK 搬运工:
cat computer argue ->
cat comput argu
所以从演示来看,它们似乎几乎相同,但可以肯定的是,我会坚持滚雪球并继续用 java 编码,因为 NLTK api 建议这样做。
P/S:嗨 Marc Schuler,(我是疯狂的亚洲人,你的名字不带“d”)