Ошибка, которую вы делаете здесь, в этом цикле
for(IndexWord word : collection) {
Synset[] senses = word.getSenses();
if(senses != null && senses.length > 0
&& senses[0].toString().toLowerCase().contains(token)) {
return true;
}
}
Строка Synset[] senses = word.getSenses()
возвращает все значения слова, но вы проверяете только первое (0-индекс). Слово будет доступно в одном из смыслов.
Как то так
for (IndexWord word : collection) {
Synset[] senses = word.getSenses();
for(Synset sense:senses){
if(sense.getGloss().toLowerCase().contains(token)){return true;}
}
}
Кроме того, формы слов ing могут быть недоступны в качестве значений. Я не уверен, почему вы хотите искать чувства, чтобы решить, является ли оно правильным словом.
код типа if(set.getLemma() != null)
return true;
должно быть достаточно, чтобы решить проверку орфографии, верно?