当使用 nltk包 来标记阿拉伯语文本时,它会显示为数字! 标记化英文文本时没问题
UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xd8:序数不在范围内(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'\ u0627 \ u0644 \ u0645 \ u062f \ u0633 \ u0633 \ u0629']
答案 0 :(得分:0)
对我来说,以下代码在python 3.X下为我工作:
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
doc_a = "ذهب محمد الى المدرسه على دراجته. هذا اول يوم له في المدرسة"
doc_a = doc_a.decode('utf-8')
sw = stopwords.words('arabic')
tokens = nltk.word_tokenize(doc_a)
stopped_tokens = [i for i in tokens if not i in sw]
for item in stopped_tokens:
print(item)
此行会为您提供正确的停用词:sw = stopwords.words('arabic')
。
答案 1 :(得分:0)
由于我没有停用词列表,我无法在那部分工作,但令牌化部分似乎运作良好:
import nltk
from nltk.tokenize import word_tokenize
doc_a = "ذهب محمد الى المدرسه على دراجته. هذا اول يوم له في المدرسة"
tokens = nltk.word_tokenize(doc_a)
print(tokens)
这是我收到的输出:
['ذهب','محمد','الى','المدرسه','على','دراجته','。','هذا','اول','يوم','له','في ','المدرسة']