Вопрос по nlp, java, machine-learning – Каковы основные различия и преимущества алгоритмов Портера и Ланкастера Стемминга? [закрыто]

47

Я работаю над задачами классификации документов в Java.

Оба алгоритма были настоятельно рекомендованы, каковы преимущества и недостатки каждого из них и что чаще используется в литературе для задач обработки естественного языка?

Ваш Ответ

1   ответ
102

основное различие между алгоритмами прокачки портера и ланкастера заключается в том, что прокачка ланкастера значительно более агрессивна, чем прокачка портера. В настоящее время используются три основных алгоритма стемминга: Porter, Snowball (Porter2) и Lancaster (Paice-Husk), причем континуум агрессивности в основном следует тем же принципам. Портер - наименее агрессивный алгоритм, специфика каждого алгоритма довольно длинная и техническая. Вот вам что сломать:

Porter: Наиболее часто используемый стеммер, без сомнения, также один из самых нежных стеммеров. Один из немногих стеммеров, который на самом деле имеет поддержку Java, что является плюсом, хотя он также является наиболее интенсивным в вычислительном отношении из алгоритмов (предоставлено не очень значительным запасом). Это также самый старый алгоритм с большим запасом.

Porter2: Почти повсеместно считается улучшением по сравнению с портерами, и на то есть веские причины. Сам Портер фактически признает, что это лучше, чем его оригинальный алгоритм. Чуть быстрее время вычислений, чем у портера, с довольно большим сообществом вокруг него.

Lancaster: очень агрессивный алгоритм, иногда с ошибками. В случае с Портером и снежным комом стеблевые представления обычно довольно интуитивны для читателя, а для Ланкастера - не так, так как многие короткие слова будут полностью запутаны. Самый быстрый алгоритм здесь, и он значительно сократит ваш рабочий набор слов, но если вы хотите большего различия, не инструмент, который вы хотели бы.

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

@ TheManWithNoName Оригинальный ответ о том, что такое Snowball, смутил меня, потому что это не то, что я читал. Спасибо за устранение путаницы. Gerry
а самом деле @Snowball - это язык, разработанный Мартином Портером для точного определения стеммеров, сам по себе он не является стеммером. Алгоритм, на который вы ссылаетесь, известен как «английский Stemmer» или «Porter2 Stemmer». Это очень похоже на "Porter Stemmer", но с немного улучшенными правилами. Если вы проводите сравнения для исследования, «Портер» (оригинал) используется гораздо чаще, но если вы хотите практической точности, придерживайтесь «Портер2». «Paice-Husk» по умолчанию является тяжелым стеммером, но полезен, если вы катите свои собственные правила, поскольку он использует отдельный файл правил. Время вычислений между 3 довольно тривиально. TheManWithNoName
В пользу ответа, путаница между языком снежного кома и предполагаемым родителем снежного кома широко распространена. Например, NLTK использует терминологиюSnowballStemmer: Nltk.org / HOWTO / stem.html juanmirocks

Похожие вопросы