当使用nltk包标记阿拉伯文本时,结果显示为数字!! 当标记英文文本时没有问题
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in position 0: ordinal not in range(128)
# -*- coding: utf-8 -*-
import nltk
from nltk.tokenize import word_tokenize
import stop_words
from stop_words import get_stop_words
doc_a = "ذهب محمد الى المدرسه على دراجته. هذا اول يوم له في المدرسة"
sw = get_stop_words('ar')
tokens = nltk.word_tokenize(doc_a)
stopped_tokens = [i for i in tokens if not i in sw]
print(stopped_tokens)
当设置tokens = nltk.word_tokenize(unicode(doc_a,"utf-8"))
结果
[u'\u0630\u0647\u0628', u'\u0645\u062d\u0645\u062f', u'\u0627\u0644\u0645\u062f\u0631\u0633\u0647', u'\u062f\u0631\u0627\u062c\u062a\u0647', u'.', u'\u0627\u0644\u0645\u062f\u0631\u0633\u0629']
对我来说,下面的代码在python 3.X下适用:
这行代码为您提供正确的停止字:
sw = stopwords.words('arabic')
。在由于我没有停止词列表,所以我无法处理该部分,但标记化部分似乎运行良好:
这是我收到的输出:
‘‘两个’的‘’,‘‘两个’,‘‘’,‘‘’,‘‘‘’‘‘’‘‘‘’‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘له','في','
相关问题 更多 >
编程相关推荐