2010-07-05 19 views
23

¿Cómo puedo detectar en qué idioma está escrito un texto utilizando NLTK?NLTK y detección de idioma

Los ejemplos que he visto usan nltk.detect, pero cuando lo he instalado en mi mac, no puedo encontrar este paquete.

Respuesta

26

¿Has encontrado el siguiente fragmento de código?

english_vocab = set(w.lower() for w in nltk.corpus.words.words()) 
text_vocab = set(w.lower() for w in text if w.lower().isalpha()) 
unusual = text_vocab.difference(english_vocab) 

de http://groups.google.com/group/nltk-users/browse_thread/thread/a5f52af2cbc4cfeb?pli=1&safe=active

O el siguiente archivo de demostración?

https://web.archive.org/web/20120202055535/http://code.google.com/p/nltk/source/browse/trunk/nltk_contrib/nltk_contrib/misc/langid.py

+0

PS, todavía se basó en nltk.detect, sin embargo. ¿Alguna idea sobre cómo instalar eso en una Mac? – niklassaers

+0

No creo que la detección sea un módulo nativo para nltk. Aquí está el código: http://docs.huihoo.com/nltk/0.9.5/api/nltk.detect-pysrc.html Probablemente pueda descargarlo y ponerlo en su biblioteca de Python, que puede estar en : /Library/Python/2.x/site-packages/nltk ... –

+0

Mira esto ... http://blog.alejandronolla.com/2013/05/15/detecting-text-language-with-python -and-nltk/ –

15

Aunque esto no está en la NLTK, he tenido grandes resultados con otra biblioteca basado en Python:

https://github.com/saffsd/langid.py

Esto es muy simple para importar e incluye un gran número de idiomas en su modelo.

18

Esta biblioteca no es de NLTK tampoco, pero sin duda ayuda.

$ sudo PIP instalar langdetect

versiones soportadas de Python 2.6, 2.7, 3.x

>>> from langdetect import detect 

>>> detect("War doesn't show who's right, just who's left.") 
'en' 
>>> detect("Ein, zwei, drei, vier") 
'de' 

https://pypi.python.org/pypi/langdetect?

P.S .: No hay que esperar que esto funcione correctamente siempre:

>>> detect("today is a good day") 
'so' 
>>> detect("today is a good day.") 
'so' 
>>> detect("la vita e bella!") 
'it' 
>>> detect("khoobi? khoshi?") 
'so' 
>>> detect("wow") 
'pl' 
>>> detect("what a day") 
'en' 
>>> detect("yay!") 
'so' 
+1

Gracias por señalar que no siempre funciona. 'detectar (" ¡Lo hiciste en casa! ")' me está dando "fr". Me pregunto si hay algo mejor. –

+1

Aquí hay otra observación divertida: no parece dar la misma respuesta cada vez. '>>> detect_langs (" Hola, soy christiane amanpour. ") [it: 0.8571401485770536, es: 0.14285811674731527] >>> detect_langs (" Hola, soy christiane amanpour. ") [it: 0.8571403121803622, fr: 0.14285888197332486] >>> detect_langs ("Hola, soy christiane amanpour.") [it: 0.999995562246093] ' –

Cuestiones relacionadas