简体   繁体   中英

How to stem a list of words in spanish with nltk?

How can i stem all spanish words in the following list with nltk snowballstemer?. This is what i tried:

# coding=utf-8


from sklearn.feature_extraction.text import CountVectorizer
import nltk.stem

vectorizer= CountVectorizer(min_df=1)

opinion = ["""
Hola compis!
No sabÌa como se ponÌa una lavadora hasta que conocÌ
esta y es que es muy sencilla de utilizar! Todo un gustazo
cuando estamos aprendiendo para emanciparnos, que si nos
ponen facilidad con las tareas de la casa pues mejor que mejor.


Antes de esta tenÌamos otra de la marca Otsein, de estas
que van incluidas en el mobiliario y adem·s era de carga superior,
pero tan antigua que seg˙n mi madre, nadie la podÌa tocar porque
solo la entendÌa ella.
Esta es de la marca Aeg y dentro de este tipo de lavadoras de
esta marca las habÌa m·s caras o m·s baratas y est· digamos que
est· en el punto medio. Es de color blanco y tiene carga frontal,
 con una capacidad de 6kg. En casa a pesar de ser cuatro,
 se ponen lavadoras casi todos o todos los dÌas.


En su parte de arriba encontramos la ";zona de mandos";,
donde se puede echar el detergente, aunque en nuestro caso
lo al ser gel lo ponemos directamente junto con la ropa.
Luego tiene la rueda para elegir el programa y los intermitentes
que indican en que paso del programa estaba.
Como todas tiene programas m·s cortos y m·s largos, incluso
un programa que seria como lavar a mano y otro ideal para
estores, que salen casi secos y planchaditos para colgar y
ya est·. Es muy f·cil de aprenderla y adem·s tiene indicador
por sonido de cuando acaba, lista para abrir y tender.
Saludillos!
"""]

spanish_stemmer = nltk.stem.SnowballStemmer('spanish')
print "\n these are the stems of opinion",
opinion = [[spanish_stemmer(word) for word in sentence.split(" ")]for sentence in opinion]

the problem with that aproach is the following this is the output:

Traceback (most recent call last):
 these are the stems of opinion
  File "/Users/user/PycharmProjects/untitled/prueba stem.py", line 47, in <module>
    opinion = [[spanish_stemmer(word) for word in sentence.split(" ")]for sentence in opinion]
TypeError: 'SnowballStemmer' object is not callable

How can i return the list of stems given the list ( opinion )? and how to lowercase the complete opinion?

>>> from nltk import word_tokenize
>>> from nltk.stem import SnowballStemmer
>>> stemmer = SnowballStemmer('spanish')
>>> 
>>> stemmer.stem('cuando')
u'cuand'
>>> stemmer.stem('apprenderla')
u'apprend'
>>> 
>>> text = 'En su parte de arriba encontramos la ";zona de mandos";, donde se puede echar el detergente, aunque en nuestro caso lo al ser gel lo ponemos directamente junto con la ropa.'
>>> stemmed_text = [stemmer.stem(i) for i in word_tokenize(text)]
>>> stemmed_text
[u'en', u'su', u'part', u'de', u'arrib', u'encontr', u'la', u'``', u';', u'zon', u'de', u'mand', u"''", u';', u',', u'dond', u'se', u'pued', u'echar', u'el', u'detergent', u',', u'aunqu', u'en', u'nuestr', u'cas', u'lo', u'al', u'ser', u'gel', u'lo', u'pon', u'direct', u'junt', u'con', u'la', u'rop', u'.']

Try to change last line to this:

...
opinion = [[spanish_stemmer.stem(word) for word in sentence.split(" ")]for sentence in opinion]
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM