使用nltk对阿拉伯语单词的令牌化



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

我想象征这个句子:

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

我正在编写的代码是:

import re
import nltk
lex = u" في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء"
wordsArray = nltk.word_tokenize(lex)
print " ".join(wordsArray)

问题是word_tokenize函数不会被单词分开。相反,它通过字母分裂,以使输出为:

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

有什么想法吗?

到目前为止我到达的内容:

通过在此处尝试文本,它似乎是由字母象征的。但是,其他标记器将其正确化。这是否意味着word_tokenize仅适用于英语?这对大多数NLTK函数都适用吗?

我总是建议使用nltk.tokenize.wordpunct_tokenize。您可以在http://text-processing.com/demo/tokenize/上尝试许多NLTK Tokenizers,然后亲自查看。

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

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

['فف__________ 'o', 'شش', 'idemelt', '迈 '培训', '...', '„ ZOLE', '', 'شاح了', 'فجأة', '} '..etherجة', 'ان缉', '骗', '贵 '„ ZOLE', 'شش']

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

['ف妖',''كل',''''''''م','→ح了جج了','opth'...'...'...','。'›','..',','";»»»»'»»»„„اسو请','qفف还有','。

import nltk
nltk.download('punkt')
text = 'أسلوب المقاولات أغلى وأكثر خسارة لرب العمل من تشغيل العمال بالأجور اليومية العمل لكنه أكثر راحة له وأبعد عن القلق.'
nltk.word_tokenize(text)
print(nltk.word_tokenize(text))
['أسلوب', 'المقاولات', 'أغلى', 'وأكثر', 'خسارة', 'لرب', 'من', 'تشغيل', 'العمال', 'بالأجور', 'اليومية', 'العمل', 'لكنه', 'أكثر', 'راحة', 'له', 'وأبعد', 'عن', 'القلق', '.']

最新更新