用 Lucene 对英语单词进行词干分解

2022-09-01 12:43:04

我正在Java应用程序中处理一些英语文本,我需要阻止它们。例如,从文本“设施/便利设施”中,我需要得到“amenit”。

该函数如下所示:

String stemTerm(String term){
   ...
}

我发现了Lucene分析仪,但它看起来太复杂了,无法满足我的需求。http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/analysis/PorterStemFilter.html

有没有办法在不构建分析器的情况下使用它来阻止单词?我不了解所有的分析仪业务...

编辑:我实际上需要一个词干+词形还原。卢塞恩能做到吗?


答案 1

SnowballAnalyzer 已弃用,您可以使用 Lucene Porter Stemmer 代替:

 PorterStemmer stem = new PorterStemmer();
 stem.setCurrent(word);
 stem.stem();
 String result = stem.getCurrent();

希望这有帮助!


答案 2
import org.apache.lucene.analysis.PorterStemmer;
...
String stemTerm (String term) {
    PorterStemmer stemmer = new PorterStemmer();
    return stemmer.stem(term);
}

有关更多详细信息,请参阅此处。如果词干提取是你想做的,那么你应该用这个而不是Lucene。

编辑:在将其传递给 之前,应将其小写。termstem()


推荐