Python nltk无法标记阿拉伯语文本

2024-05-14 13:07:23 发布

您现在位置:Python中文网/ 问答频道 /正文

使用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']


Tags: in标记importdocwordstopwordstokenize
2条回答

对于我来说,以下代码在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)      

这一行为您提供了正确的stopwords:sw = stopwords.words('arabic')

因为我没有停止词列表,所以我无法处理该部分,但标记化部分似乎工作得很好:

import nltk
from nltk.tokenize import word_tokenize
doc_a = "ذهب محمد الى المدرسه على دراجته. هذا اول يوم له في المدرسة"
tokens = nltk.word_tokenize(doc_a)
print(tokens)

这是我收到的输出:

此外,还有来自各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各各1577']

相关问题 更多 >

    热门问题