Снежок Стеммер [Java]

В настоящее время я использую Snowball Stemmer (Porter2) в своем Java-проекте для определения слов и т. Д. Тем не менее, это связано со словами, которые либо не обязательно должны быть основаны, либо слишком много их содержат? Например, online -> onlin, why -> whi, raise-> rais, appreciate -> appreci,

Есть ли способ, которым я мог бы попытаться предотвратить это ненужное основание, поскольку я хотел бы, чтобы оно давало мне слова, которые имеют смысл, а также слова, которые должны быть основаны, например: treating -> treat, records -> record, development -> develop и т.д., внедрив какой-то словарь, который позволит избежать слов? Или есть ли другие стеммеры, подобные Snowball, которые менее точны в своих способностях стебля?

Спасибо за помощь.

Вот моя функция.

1 ответ

Решение

Основная работа Портера Стеммера - группировка слов в набор основ. Эти основанные на словах слова хороши тем, что Портер существует для цели поиска, т. Е. Не имеет значения, является ли основа подлинным источником, важно то, что она одинакова для всей семьи слов.

Поскольку вы работаете с целью анализа частоты термина и коллокаций, я полагаю, вам нужен легкий или минимальный стеммер.

Вы можете проверить эту статью для стеммеров, используемых в Lucene. Вы можете заметить:

minimal_english

The EnglishMinimalStemmer в Lucene, который удаляет множественное число

Другие вопросы по тегам