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?

17
demandé sur Garrett Hyde 2012-10-23 20:59:57

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.

7
répondu Jacob 2012-10-24 00:02:57

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('في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء ')

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

1
répondu Pradi KL 2017-05-17 15:17:13