python - Detectando si el texto es inglés(a granel)
nlp language-detection (4)
Estoy buscando una forma simple de detectar si un breve fragmento de texto, unas pocas frases, es inglés o no. Me parece que este problema es mucho más fácil que tratar de detectar un lenguaje arbitrario. ¿Hay algún software que pueda hacer esto? Estoy escribiendo en Python, y preferiría una biblioteca de Python, pero otra cosa estaría bien también. Probé con Google, pero luego me di cuenta de que el TOS no permitía las consultas automáticas.
Aunque no es tan bueno como el de Google, he tenido buenos resultados utilizando Apache Nutch LanguageIdentifier, que viene con sus propios modelos de ngram prediseñados. Obtuve resultados bastante buenos en un gran corpus (50GB pdf, texto en su mayoría) de datos del mundo real en varios idiomas.
Está en Java, pero estoy seguro de que puede volver a leer los perfiles de ngram si quiere volver a implementarlo en Python.
EDITAR: Esto no funcionará en este caso, ya que OP está procesando texto a granel, lo que va en contra de los TOS de Google.
Use la API de detección de idioma de Google Translate. Ejemplo de Python de los documentos:
url = (''https://ajax.googleapis.com/ajax/services/language/detect?'' +
''v=1.0&q=Hola,%20mi%20amigo!&key=INSERT-YOUR-KEY&userip=INSERT-USER-IP'')
request = urllib2.Request(url, None, {''Referer'': /* Enter the URL of your site here */})
response = urllib2.urlopen(request)
results = simplejson.load(response)
if results[''responseData''][''language''] == ''en'':
print ''English detected''
Leí un método para detectar Enlgish langauge usando Trigrams
http://en.wikipedia.org/wiki/Trigram
Puede revisar el texto e intentar detectar los trigramas más utilizados en las palabras. Si los más usados coinciden con los más utilizados entre las palabras en inglés, el texto puede escribirse en inglés
Intenta buscar en este proyecto de rubí:
Google Translate API v2 permite consultas automáticas pero requiere el uso de una clave API que puede obtener libremente en la consola de API de Google .
Para detectar si el texto es inglés, puede usar la función de detect_language_v2()
(que usa esa API) de mi respuesta a la pregunta Python: ¿puedo detectar el código de lenguaje de cadena unicode? :
if all(lang == ''en'' for lang in detect_language_v2([''some text'', ''more text''])):
# all text fragments are in English