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