23

我正在使用NLTK word_tokenizer将句子拆分为单词。

我想标记这句话:

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

我正在写的代码是:

import re
import nltk

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

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

问题是该word_tokenize函数没有按单词拆分。相反,它按字母拆分,因此输出为:

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

有任何想法吗 ?

到目前为止我所达到的:

通过尝试此处的文本,它似乎是由字母标记的。然而,其他的分词器也正确地对其进行了分词。这是否意味着word_tokenize仅适用于英语?这适用于大多数 NLTK 功能吗?

4

2 回答 2

11

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

于 2012-10-24T00:02:57.597 回答
2

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

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

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

于 2017-05-17T15:17:13.860 回答