У меня есть около 500 предложений, в которых я хотел бы составить набор нграмм. У меня возникли проблемы с удалением стоп-слов. Я попытался добавить 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. Кроме того, в этом примере «каждый» является стоп-словом, поэтому «человек» должен быть первым ngram.
- Почему стоп-слова добавляются в мой список, когда я использую StopFiler?
Любая помощь приветствуется!