我正在Java应用程序中处理一些印尼语文本,我需要阻止它们。
目前我正在使用lucene indonesian stemmer。 org.apache.lucene.analysis.id.IndonesianAnalyzer;
但结果不尽如人意。
有人能建议我使用不同的词干吗?
答案 0 :(得分:2)
“enang”是一个词干。茎不一定是实际的词。例如,在英语中,“争辩”“争论”和“争论”减少到词干“论证”。 “争论”不是一个英语单词,但它是一个有意义的词干。这就是限制器的工作原理。只要您以相同的方式将词干分析器应用于索引数据和查询,它就应该可以正常工作。
如果你不想要这样的行为,根本不使用词干分析器。
除了词干分析器,印尼分析仪相当容易复制。它的其他组件只涉及StandardTokenizer
,StandardFilter
,LowercaseAnalyzer
和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构造函数时遇到问题。