我有大約500個句子,我想編譯一組ngram。我無法刪除停用詞。我嘗試添加lucene StandardFilter和StopFilter,但我仍然遇到同樣的問題。這裏是我的代碼:Java Lucene停用詞過濾器
for(String curS: Sentences)
{
reader = new StringReader(curS);
tokenizer = new StandardTokenizer(Version.LUCENE_36, reader);
tokenizer = new StandardFilter(Version.LUCENE_36, tokenizer);
tokenizer = new StopFilter(Version.LUCENE_36, tokenizer, stopWords);
tokenizer = new ShingleFilter(tokenizer, 2, 3);
charTermAttribute = tokenizer.addAttribute(CharTermAttribute.class);
while(tokenizer.incrementToken())
{
curNGram = charTermAttribute.toString().toString();
nGrams.add(curNGram); //store each token into an ArrayList
}
}
例如,我測試的第一個短語是:「對於每個聽的人」。在這個例子中,curNGram被設置爲「For」,這是我的列表stopWords中的一個停用詞。另外,在這個例子中,「every」是一個停用詞,所以「person」應該是第一個ngram。
- 爲什麼停用詞被添加到我的列表中時,我正在使用StopFiler?
所有幫助表示讚賞!
stopWords是如何創建的?你是否使用[StopFilter.makeStopSet]創建它(http://lucene.apache.org/core/3_6_0/api/all/org/apache/lucene/analysis/StopFilter.html#makeStopSet(org.apache.lucene.util) .Version,%20java.util.List,%20boolean))? – femtoRgon
我使用靜態函數逐行讀取txt文件。 – CodeKingPlusPlus