Кажется, PorterStemmer не работает

Я новичок в python и практикуюсь с примерами из книги.
Может ли кто-нибудь объяснить, почему, когда я пытаюсь запустить какой-то пример с этим кодом, ничего не меняется?

>>> from nltk.stem import PorterStemmer
>>> stemmer=PorterStemmer()
>>> stemmer.stem('numpang wifi stop gadget shopping')
'numpang wifi stop gadget shopping'

но когда я это делаю он работает

>>> stemmer.stem('shopping')
'shop'

3 ответов


попробуйте это:

res = ",".join([ stemmer.stem(kw) for kw in 'numpang wifi stop gadget shopping'.split(" ")])

проблема в том, что, вероятно, этот стеммер работает на отдельных словах. в вашей строке нет слова "root", а единственное слово" shopping "имеет корень"shop". таким образом, вам придется вычислить stemming отдельно

edit:

из их исходный код ->

Stemming algorithms attempt to automatically remove suffixes (and in some
cases prefixes) in order to find the "root word" or stem of a given word. This
is useful in various natural language processing scenarios, such as search.

поэтому, я думаю, вы действительно вынуждены разделить свою строку самостоятельно


Stemming-это процесс сокращения данного слова до его базовой или измененной формы, Здесь вы пытаетесь создать целое предложение,

выполните следующие действия :

from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer
sentence = "numpang wifi stop gadget shopping"
tokens = word_tokenize(sentence)
stemmer=PorterStemmer()

Output=[stemmer.stem(word) for word in tokens]

попробуйте это:

from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize

stemmer = PorterStemmer()

some_text = "numpang wifi stop gadget shopping"

words = word_tokenize(some_text)

for word in words:
    print(stemmer.stem(word))