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

时间:2012-10-23 16:59:57

标签: python tokenize nltk

我正在使用 NLTK word_tokenizer将一个句子分成单词。

我想将这句话标记为:

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

我写的代码是:

import re
import nltk

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

wordsArray = nltk.word_tokenize(lex)
print " ".join(wordsArray)

问题是word_tokenize函数不会被单词拆分。相反,它按字母分割,以便输出为:

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

有什么想法吗?

到目前为止我所得到的:

通过尝试here中的文字,它似乎被字母标记。但是,其他标记符也正确地标记了它。这是否意味着word_tokenize仅适用于英语?这是否适用于大多数NLTK功能?

2 个答案:

答案 0 :(得分:9)

我总是建议使用nltk.tokenize.wordpunct_tokenize。您可以在http://text-processing.com/demo/tokenize/试用许多NLTK标记器并自行查看。

答案 1 :(得分:2)

这是我用我的代码获得的输出,但我记得unicode在python 2中表现不佳并且我使用了3.5

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

[ 'في_بيتنا',  'كل',  'شي',  'لما',  'تحتاجه',  'يضيع',  '...',  'ادور',  'على',  'شاحن',  'فجأة',  'يختفي',  '..لدرجة',  'اني',  'اسوي',  'نفسي',  'ادور',  'شيء']