关于python:使用NLTK对阿拉伯语单词进行标记

Tokenization of Arabic words using NLTK

我用nltk word_tokenizer把一个句子分成几个单词。

我想把这句话标记一下:

1
??_????? ?? ?? ??? ?????? ???? ...???? ??? ???? ???? ????? ..????? ??? ???? ???? ???? ???

我写的代码是:

1
2
3
4
5
6
7
import re
import nltk

lex = u" ??_????? ?? ?? ??? ?????? ???? ...???? ??? ???? ???? ????? ..????? ??? ???? ???? ???? ???"

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

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

1
"? ? _ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"

有什么想法吗?

我到目前为止所做的:

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


我一直建议使用nltk.tokenize.wordpunct_tokenize。您可以在http://text-processing.com/demo/tokenize/上试用许多NLTK tokenizer,并亲自查看。


这是我用代码得到的输出,但我记得在python 2中Unicode并不好用,我用了3.5

1
nltk.word_tokenize('??_????? ?? ?? ??? ?????? ???? ...???? ??? ???? ???? ????? ..????? ??? ???? ???? ???? ??? ')

[’????????,"??""??""???,"????????""?????""……""?????""???,"?????""?????""??????,"……??????,"???,"?????""?????""?????""???]