La segmentation des mots arabes en utilisant NLTK
j'utilise NLTKword_tokenizer
pour diviser une phrase en mots.
je veux marquer cette phrase:
في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء
Le code que j'ai écris:
import re
import nltk
lex = u" في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء"
wordsArray = nltk.word_tokenize(lex)
print " ".join(wordsArray)
le problème est que Le word_tokenize
la fonction ne se sépare pas par des mots. Au lieu de cela, il se divise en lettres de sorte que la sortie est:
"ف ي _ ب ي ت ن ا ك ل ش ي ل م ا ت ح ت ا ج ه ي ض ي ع ... ا د و ر ع ل ى ش ا ح ن ف ج أ ة ي خ ت ف ي .. ل د ر ج ة ا ن ي ا س و ي ن ف س ي ا د و ر ش ي ء"
des idées ?
Ce que j'ai trouvé:
En essayant le texte dans ici, il semble que segmenté par des lettres. Aussi, cependant, d'autres tokenizers tokenized il correctement. Est-ce à dire que word_tokenize
est uniquement en anglais? Cela vaut-il pour la plupart des fonctions NLTK?
2 réponses
je recommande toujours nltk.tokenize.wordpunct_tokenize
. Vous pouvez essayer de nombreux tokenizers NLTK àhttp://text-processing.com/demo/tokenize/ and see for yourself.
c'est la sortie que j'obtiens avec mon code, mais je me souviens qu'unicode ne va pas bien en python 2 et j'ai utilisé 3.5
nltk.word_tokenize('في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء ')
['في_بيتنا', "كل", 'شي', "لما", "تحتاجه", "يضيع", '...', "ادور", "على", "شاحن", "فجكة", "يختفي", '..لدرجة", "اني", "اسوي", "نفسي", "ادور", 'شيء']