Python 使用NLTK对阿拉伯语单词进行标记化

Python 使用NLTK对阿拉伯语单词进行标记化,python,tokenize,nltk,Python,Tokenize,Nltk,我正在使用NLTKword\u标记器将一个句子拆分成单词 我想把这句话标记化: في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء 我写的代码是: import re import nltk lex = u" في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نف

我正在使用NLTK
word\u标记器
将一个句子拆分成单词

我想把这句话标记化:

في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء 
我写的代码是:

import re
import nltk

lex = u" في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء"

wordsArray = nltk.word_tokenize(lex)
print " ".join(wordsArray)
问题在于
word\u tokenize
函数没有按单词分割。相反,它按字母拆分,以便输出为:

"ف ي _ ب ي ت ن ا ك ل ش ي ل م ا ت ح ت ا ج ه ي ض ي ع ... ا د و ر ع ل ى ش ا ح ن ف ج أ ة ي خ ت ف ي .. ل د ر ج ة ا ن ي ا س و ي ن ف س ي ا د و ر ش ي ء"
有什么想法吗

到目前为止,我已经做到了:


通过尝试输入文本,它似乎被字母标记。然而,其他标记化者也正确地标记了它。这是否意味着
word\u tokenize
仅适用于英语?这适用于大多数NLTK函数吗?

我总是建议使用
NLTK.tokenize.wordputt\u tokenize
。您可以在上试用许多NLTK标记器,自己看看。

这是我的代码得到的输出,但我记得unicode在python 2中不太适用,我使用了3.5

nltk.word_tokenize('في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء ')
[1601;يببتا”, 'كل', 'شي', 'لما', 'تحتاجه', 'يضيع', '...', 'ادور', 'على', 'شاحن', 'فجأة', 'يختفي', '..لدرجة', 'اني', 'اسوي', 'نفسي', 'ادور',
“شيء”]

有帮助吗?(和词干分析器)大多数标记化器之间的区别是什么?这是否意味着大多数NLTK函数不能与阿拉伯语一起使用?TreebankWordTokenizer是在《华尔街日报》文本(即ascii)上训练的,因此它在unicode文本上永远无法正常工作。PunctWordTokenizer是针对更多种类的文本进行训练的,但我发现它比其他使用正则表达式的文本更不可预测,这使得它们可以在任何语言上使用,并具有可预测的结果。NLTK通常适用于阿拉伯文和任何unicode文本,只是一些模型希望使用ascii,因此,unicode不能很好地使用。