【发布时间】:2012-11-21 20:18:57
【问题描述】:
我有大约 500 个句子,我想在其中编译一组 ngram。我无法删除停用词。我尝试添加 lucene StandardFilter 和 StopFilter 但我仍然遇到同样的问题。这是我的代码:
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 创建它?
-
我使用静态函数逐行读取一个txt文件。