Ответ 1
Я всегда рекомендую использовать nltk.tokenize.wordpunct_tokenize
. Вы можете попробовать многие токенизаторы NLTK в http://text-processing.com/demo/tokenize/ и сами убедиться.
Я использую 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
. Вы можете попробовать многие токенизаторы NLTK в http://text-processing.com/demo/tokenize/ и сами убедиться.
это результат, который я получаю с моим кодом, но я помню, что unicode не работает хорошо в python 2, и я использовал 3.5
nltk.word_tokenize('في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء ')
[ 'في_بيتنا', 'كل', 'شي', 'لما', 'تحتاجه', 'يضيع', '...', 'ادور', 'على', 'شاحن', 'فجأة', 'يختفي', '..لدرجة', 'اني', 'اسوي', 'نفسي', 'ادور', 'شيء']