0

我正在 Java 应用程序中处理一些印尼语文本,我需要阻止它们。

目前我正在使用 lucene indonesian stemmer。org.apache.lucene.analysis.id.IndonesianAnalyzer;

但结果并不令人满意。

谁能建议我不同的词干分析器?

4

1 回答 1

2

“enang”是一个词干。词干不必是实际的单词。例如,在英语中,“argue”、“argues”和“arguing”简化为词干“argu”。“argu”不是英文单词,但它是一个有意义的词干。这就是词干分析器的工作方式。只要您以相同的方式将词干分析器应用于索引数据和查询,它应该可以正常工作。

如果您不想要这样的行为,那么使用词干分析器根本没有任何意义。

除了词干分析器,IndianAnalyzer 相当容易复制。它的其他组件只涉及 a StandardTokenizerStandardFilterLowercaseAnalyzer和 a StopFilter。这只是一个StandardAnalyzer带有印度尼西亚停用词集的设置,当您开始使用它时,您可以创建一个没有词干分析器的印度尼西亚分析器,如下所示:

//If you are using the default stopword location defined in the IndonesianAnalyzer you could load them like this.
CharArraySet defaultStopSet = StopwordAnalyzerBaseloadStopwordSet(false, IndonesianAnalyzer.class, IndonesianAnalyzer.DEFAULT_STOPWORD_FILE, "#");
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43, defaultStopSet);

我不确定您是否会在将默认停用词文件上的阅读器传递到 StandardAnalyzer 构造函数时遇到问题。

于 2013-08-02T15:07:32.463 回答