我正在尝试使用nltk.stem.isri在阿拉伯语中阻止文本文件(text.txt)的内容。 text.txt文件包含以下阿拉伯文本:
تتنوعالمشاعرالتييشعربهاالإنسانخلالحياته,وتكونهذهالمشاعرتبعالمواقفأوأشخاصمعينين,ويعتبرالحبأحدالمشاعرالجميلةالتيتصيبالإنسانفتغيرمننظرتهللعالممنحولهويصبحإيجابياأكثر,وهيالعلاقةالعاطفيةالتيتجمعبينالرجلوالمرأةأوبينالأشخاص المختلفينفيحياته,وماتجرهمنمشاعرالاهتماموالمودةواللطف。 الحبأيضاحالةمنالانجذابوالإعجاببينالأشخاص,ويقالبأنهنوعمنالكيمياءالمتبادلة,إذيعبرعننوعمنالتفاعلبينالناس,وفيالحبيفرزالجسمهرمونالأوكسيتوسينوهوالهرمونالذييدعىبهرمونالمحبينوالمحبةالذييفرزهالجسمفوراللقاءبينالأحبة,وفيمايليمنسطور سنتحدثعنبعضالمعلوماتالعامةحولالحببشيءمنالتفصيلوالتوضيح。
我通过参考上一个问题使用了以下代码:Python Stemming words in a File
# -*- coding: UTF-8 -*-
from nltk.stem.isri import ISRIStemmer
def stemming_text_1():
with open('test.txt', 'r') as f:
for line in f:
print line
singles = []
stemmer = ISRIStemmer()
for plural in line.split():
singles.append(stemmer.stem(plural))
print ' '.join(singles)
stemming_text_1()
它打印文件的内容并出现此错误:
/home/waheeb/anaconda2/lib/python2.7/site-packages/nltk/stem/isri.py:154: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
if token in self.stop_words:
Traceback (most recent call last):
File "Arabic_stem.py", line 15, in <module>
stemming_text_1()
File "Arabic_stem.py", line 12, in stemming_text_1
singles.append(stemmer.stem(plural))
File "/home/waheeb/anaconda2/lib/python2.7/site-packages/nltk/stem /isri.py", line 156, in stem
token = self.pre32(token) # remove length three and length two prefixes in this order
File "/home/waheeb/anaconda2/lib/python2.7/site-packages/nltk/stem /isri.py", line 198, in pre32
if word.startswith(pre3):
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in position 0: ordinal not in range(128)
答案 0 :(得分:1)
尝试将文件中的行解码为 unicode ,然后再将其传递给词干分析器。我假设您的输入文件编码为UTF8(似乎很可能会查看错误),但是,您可以将编码更改为适合:
for line in f:
line = line.decode('utf8') # use the correct encoding here
...
或者你可以使用io.open()
,指定编码,Python会将传入的流解码为unicode:
with io.open('test.txt', encoding='utf8') as f:
...