2014-10-10 28 views
1

如何用nltk snowballstemer幹所有西班牙語單詞?這是我的嘗試:如何使用nltk來阻止西班牙語單詞列表?

# 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] 

與形式給出問題是下面這樣的輸出:

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 

我怎樣才能返回莖給出的列表(opinion)名單?以及如何小寫完整的意見?

回答

4
>>> 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'.'] 
+0

我也有西班牙語編纂的麻煩,我能做些什麼來保持口音和重要的標點符號? – 2014-10-10 15:18:56

+0

你是如何閱讀該文件的?你在腳本的頂部有'# - * - coding:utf-8 - * - '嗎? – alvas 2014-10-10 15:21:45

+0

是的,這是一個帶'# - * - 編碼:utf-8 - * - '的輸出:return codecs.utf_8_decode(input,errors,True) UnicodeDecodeError:'utf8'編解碼器無法解碼位置字節0xed 6:無效的連續字節 – 2014-10-10 18:23:45

0

嘗試最後一行改成這樣:

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

'意見= [[spanish_stemmer.stem(字)的字sentence.split(」「)]在意見語句] 文件「/usr/local/lib/python2.7/site-packages/nltk/stem/snowball.py」,行3405,在詞幹 這些是意見的梗阻 r1,r2 = self._r1r2_standard(單詞,自我.__元音) 文件「/usr/local/lib/python2.7/site-packages/nltk/stem/snowball.py」,第236行,在_r1r2_standard 如果r1 [i]不在vo wels和r1 [i-1]元音: UnicodeDecodeError:'ascii'編解碼器無法解碼位置0中的字節0x8c:序號不在範圍內(128)' – 2014-10-10 18:41:32

+0

我猜是編碼問題。 – 2014-10-10 18:41:51

+0

爲了避免這個問題@johndoe,你可以試試這個: text = unicode(text,'utf-8') – Eric 2017-09-30 09:21:31

相關問題