Разница между стумерами Lucene: EnglishStemmer, PorterStemmer, LovinsStemmer - PullRequest
4 голосов
/ 21 февраля 2011

Кто-нибудь сравнивал эти стеммеры из Lucene (пакет org.tartarus.snowball.ext): Английский Стеммер, ПортерСтеммер, ЛовинсСтеммер? Каковы сильные / слабые стороны алгоритмов позади них? Когда каждый из них должен быть использован? Или, может быть, есть еще несколько алгоритмов для английских слов stemming *

Спасибо.

Ответы [ 2 ]

18 голосов
/ 21 февраля 2011

Стеммер Lovins - это очень старый алгоритм, который не имеет большого практического применения, так как стеммер Портера намного сильнее. Основываясь на некотором быстром скимминге исходного кода, кажется, PorterStemmer реализует оригинальный алгоритм Портера (1980) , в то время как EnglishStemmer реализует его обновленную версию , что должно быть лучше.

В инструментах Stanford NLP доступен более сильный алгоритм стволов (фактически лемматизатор). Lucene-Stanford NLP от вашего настоящего моста доступен здесь здесь ( API документы ).

См. Также Мэннинг, Рагхаван и Шютце для получения общей информации о stemming и лемматизации.

0 голосов
/ 24 октября 2013

Я протестировал 3 стемеров Lucene, доступных из org.apache.lucene.analysis.en версии 4.4.0 , которые EnglishMinimalStemFilter, KStemFilter и PorterStemFilter, в задаче классификации документов, над которой я работаю на. Мои результаты подтверждают утверждения, сделанные авторами Введение в поиск информации , что для небольших обучающих корпусов при настройке классификации документов является вредным, а для крупных корпусов - не имеет значения .

Для поиска и индексации может оказаться более полезным использование стемминга (см., Например, Jenkins & Smith ), но даже там ответ на ваш вопрос зависит от деталей того, что вы делаете. Нет бесплатного обеда!

В конце концов, ничто не сравнится с эмпирическими тестами реального кода на реальных данных . Единственный способ узнать, что лучше, - это запустить для себя стеммеры в своем приложении.

...