Проблема с стеммером Python: неправильный стем

Привет, я пытаюсь найти слова с помощью стеммера Python, я пробовал Porter и Lancaster, но у них та же проблема. Они не могут правильно образовать слова, оканчивающиеся на "er" или "e".

например, они вытекают

computer -->  comput

rotate   -->  rotat

это часть кода

line=line.lower()
line=re.sub(r'[^a-z0-9 ]',' ',line)
line=line.split()
line=[x for x in line if x not in stops]
line=[ porter.stem(word, 0, len(word)-1) for word in line]
# or 'line=[ st.stem(word) for word in line]'
return line

любая идея исправить эту проблему?


person user3803558    schedule 07.08.2014    source источник
comment
Какой стеммер? Не могли бы вы включить минимальный, полный и проверяемый пример (с исходным кодом).   -  person GWW    schedule 08.08.2014
comment
Привет, я обновил вопрос, эта проблема возникает с обоими стеммерами в строке, где вызывается стеммер   -  person user3803558    schedule 08.08.2014
comment
чего вы пытаетесь достичь?   -  person Padraic Cunningham    schedule 08.08.2014
comment
я пытаюсь получить основу каждого слова, например, кошки -> кошка или играть -> играть   -  person user3803558    schedule 08.08.2014
comment
почему computer -> comput не правильно? Я могу ошибаться, но comput выглядит как основа для computing, computed, computer, computation. Например, rotat кажется обычным для rotate, rotation и т. д.   -  person Steve K    schedule 08.08.2014


Ответы (1)


Цитируя страницу в Википедии, In computational linguistics, a stem is the part of the word that never changes even when morphologically inflected, whilst a lemma is the base form of the word. For example, given the word "produced", its lemma (linguistics) is "produce", however the stem is "produc": this is because there are words such as production. ваш код, скорее всего, дает правильные результаты. Кажется, вы ожидаете лемму, которая не является тем, что выдает стеммер (за исключением случаев, когда лемма равна основе)

person Steve K    schedule 08.08.2014