首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ISRIStemmer在文件中写入阿拉伯文本时出错

使用ISRIStemmer在文件中写入阿拉伯文本时出错
EN

Stack Overflow用户
提问于 2016-09-04 11:19:20
回答 1查看 607关注 0票数 0

我试图用阿拉伯语阻止文本文件(text.txt)的内容,使用nltk.stem.isri。text.txt文件包含以下阿拉伯文本:

تتنوعالمشاعرالتييشعربهاالإنسانخلالحياته،وتكونهذهالمشاعرتبعاًلمواقفأوأشخاصمعينين،ويعتبرالحبأحدالمشاعرالجميلةالتيتصيبالإنسانفتغيرمننظرتهللعالممنحولهويصبحإيجابياًأكثر،وهيالعلاقةالعاطفيةالتيتجمعبينالرجلوالمرأةأوبينالأشخاصالمختلفينفيحياته،وماتجرهمنمشاعرالاهتماموالمودةواللطف。الحبأيضاًحالةٌمنالانجذابوالإعجاببينالأشخاص،ويقالبأنهنوعٌمنالكيمياءالمتبادلة،إذيعبرعننوعٍمنالتفاعلبينالناس،وفيالحبيفرزالجسمهرمونالأوكسيتوسينوهوالهرمونالذييدعىبهرمونالمحبينوالمحبةالذييفرزهالجسمفوراللقاءبينالأحبة،وفيمايليمنسطورٍسنتحدثعنبعضالمعلوماتالعامةحولالحببشيءٍمنالتفصيلوالتوضيح。

通过引用前面的问题,我使用了以下代码:Python Stemming words in a File

代码语言:javascript
复制
# -*- 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()

它打印文件的内容和这个错误:

代码语言:javascript
复制
/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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-04 11:41:53

尝试将文件中的行解码为unicode,然后将其传递给词干分析器。我假设您的输入文件被编码为UTF8 (可能会看到错误),但是,您可以将编码更改为适合:

代码语言:javascript
复制
for line in f:
    line = line.decode('utf8')    # use the correct encoding here
    ...

或者,您可以使用io.open(),指定编码,然后将传入的流解码为unicode:

代码语言:javascript
复制
with io.open('test.txt', encoding='utf8') as f:
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39316345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档