Токизация арабских слов с использованием NLTK

Я использую NLTK word_tokenizer, чтобы разделить предложение на слова.

Я хочу отметить это предложение:

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

Код, который я пишу, это:

import re
import nltk

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

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

Проблема заключается в том, что функция word_tokenize не разбивается на слова. Вместо этого он разбивается буквами так, что вывод:

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

Любые идеи?

То, что я до сих пор достиг:

Попробовав текст в здесь, он, по-видимому, был обозначен буквами. Кроме того, однако, другие токенизаторы правильно их обозначили. Означает ли это, что word_tokenize предназначен только для английского языка? Это для большинства функций NLTK?

Ответы

Ответ 1

Я всегда рекомендую использовать nltk.tokenize.wordpunct_tokenize. Вы можете попробовать многие токенизаторы NLTK в http://text-processing.com/demo/tokenize/ и сами убедиться.

Ответ 2

это результат, который я получаю с моим кодом, но я помню, что unicode не работает хорошо в python 2, и я использовал 3.5

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

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