python - texto - Tokenización de palabras árabes utilizando NLTK
nltk python tutorial español (2)
Siempre recomiendo usar nltk.tokenize.wordpunct_tokenize
. Puede probar muchos de los tokenizadores NLTK en here y ver por sí mismo.
Estoy usando word_tokenizer
para dividir una oración en palabras.
Quiero tokenizar esta frase:
في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء
El código que estoy escribiendo es:
import re
import nltk
lex = u" في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء"
wordsArray = nltk.word_tokenize(lex)
print " ".join(wordsArray)
El problema es que la función word_tokenize
no se divide por palabras. En su lugar, se divide por letras para que la salida sea:
"ف ي _ ب ي ت ن ا ك ل ش ي ل م ا ت ح ت ا ج ه ي ض ي ع ... ا د و ر ع ل ى ش ا ح ن ف ج أ ة ي خ ت ف ي .. ل د ر ج ة ا ن ي ا س و ي ن ف س ي ا د و ر ش ي ء"
Algunas ideas ?
Lo que he llegado hasta ahora:
Al probar el texto here , parece que se ha identificado mediante letras. También, sin embargo, otros tokenizadores lo tokenizaron correctamente. ¿ word_tokenize
significa que word_tokenize
es solo para inglés? ¿Eso va para la mayoría de las funciones de NLTK?
este es el resultado que obtengo con mi código, pero recuerdo que Unicode no funciona bien en Python 2 y usé 3.5
nltk.word_tokenize(''في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء '')
[''في_بيتنا'', ''كل'', ''شي'', ''لما'', ''تحتاجه'', ''يضيع'', ''...'', ''ادور'', ''على'', ''شاحن'', ''يجتة'' , ''..لدرجة'', ''اني'', ''اسوي'', ''نفسي'', ''ادور'', ''شيء'']