Совместимость Stemmers между NLTK и Lucene

Я использую Lucene в Java для индексации корпуса и извлечения из него списков слов. Я использую EnglishAnalyzer. Затем я передаю список слов Python, чтобы он сделал некоторые вещи с NLTK. Есть ли в NLTK стеммер, полностью совместимый со стеммером, используемым в EnglishAnalyzer от Lucene?

Я знаю, что мог бы также использовать PyLucene, чтобы обойти это, но я хотел бы свести к минимуму зависимости.


person Marc Schulder    schedule 05.07.2012    source источник


Ответы (2)


Вы можете попробовать различные стеммеры NLTK по адресу http://text-processing.com/demo/stem/ и используйте результаты для сравнения с работой Lucene EnglishAnalyzer. Скорее всего, он реализует один из распространенных алгоритмов Портера или Ланкастера.

person Jacob    schedule 06.07.2012

Итак, если я не ошибаюсь, у lucene есть несколько стеммеров, которые вносят другие (а именно, снежный ком, эготор, стемпель). Учитывая только стеммер Snowball и стеммер Porter NLTK, даже API-интерфейс NLTK предположил, что стеммер Snowball более надежен. см. http://nltk.googlecode.com/svn/trunk/doc/api/nltk.stem.porter-module.html.

Если мы сделаем несколько сравнений для английского стемминга (используя http://snowball.tartarus.org/demo.php и http://text-processing.com/demo/stem/)

Снежный ком:

cat -> cat
computer -> comput
argues -> argu

Портер NLTK:

cat computer argue ->
cat comput argu

Таким образом, из демоверсий кажется, что они почти одинаковы, но, чтобы быть уверенным, я бы придерживался снежного кома и продолжал кодировать в Java, потому что NLTK API предлагает это.

P/S: Привет, Марк Шулер (я сумасшедший азиат, который произносит твоё имя без буквы "д")

person alvas    schedule 18.09.2012