我正在使用 NLTK word_tokenizer
将一个句子分成单词。
我想将这句话标记为:
في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء
我写的代码是:
import re
import nltk
lex = u" في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء"
wordsArray = nltk.word_tokenize(lex)
print " ".join(wordsArray)
问题是word_tokenize
函数不会被单词拆分。相反,它按字母分割,以便输出为:
"ف ي _ ب ي ت ن ا ك ل ش ي ل م ا ت ح ت ا ج ه ي ض ي ع ... ا د و ر ع ل ى ش ا ح ن ف ج أ ة ي خ ت ف ي .. ل د ر ج ة ا ن ي ا س و ي ن ف س ي ا د و ر ش ي ء"
有什么想法吗?
到目前为止我所得到的:
通过尝试here中的文字,它似乎被字母标记。但是,其他标记符也正确地标记了它。这是否意味着word_tokenize
仅适用于英语?这是否适用于大多数NLTK功能?
答案 0 :(得分:9)
我总是建议使用nltk.tokenize.wordpunct_tokenize
。您可以在http://text-processing.com/demo/tokenize/试用许多NLTK标记器并自行查看。
答案 1 :(得分:2)
这是我用我的代码获得的输出,但我记得unicode在python 2中表现不佳并且我使用了3.5
nltk.word_tokenize('في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء ')
[ 'في_بيتنا', 'كل', 'شي', 'لما', 'تحتاجه', 'يضيع', '...', 'ادور', 'على', 'شاحن', 'فجأة', 'يختفي', '..لدرجة', 'اني', 'اسوي', 'نفسي', 'ادور', 'شيء']