Determinar automáticamente el lenguaje natural de una página web dada su URL

Estoy buscando una manera de determinar automáticamente el lenguaje natural utilizado por una página web, dada su URL.

En Python, una función como:

def LanguageUsed (url): #stuff 

Lo que devuelve un especificador de idioma (por ejemplo, ‘en’ para inglés, ‘jp’ para japonés, etc …)

Resumen de los resultados: Tengo una solución razonable que funciona en Python utilizando el código de PyPi para oice.langdet . Hace un trabajo decente en discriminar el inglés frente al no inglés, que es todo lo que necesito en este momento. Tenga en cuenta que debe obtener el html usando Python urllib. Además, oice.langdet es una licencia GPL.

Para una solución más general que usa Trigrams en Python, como han sugerido otros, vea esta Receta del Libro de cocina de Python de ActiveState .

La API de detección de idioma natural de Google funciona muy bien (si no es la mejor que he visto). Sin embargo, es Javascript y sus TOS prohíben automatizar su uso.

Esto generalmente se logra utilizando modelos de n-gtwigs de caracteres. Aquí puede encontrar un identificador de lenguaje de vanguardia para Java. Si necesita ayuda para convertirlo a Python, solo pregunte. Espero eso ayude.

Lo mejor es usar la API de detección de lenguaje natural de Google . Devuelve un código iso para el idioma de la página, con un índice de probabilidad.

Consulte http://code.google.com/apis/ajaxlanguage/documentation/

No hay nada acerca de la URL que indique el idioma.

Una opción sería utilizar un kit de herramientas de lenguaje natural para tratar de identificar el idioma según el contenido, pero incluso si puede hacer que la parte de PNL funcione, será bastante lento. Además, puede que no sea confiable. Recuerde, la mayoría de los agentes de usuario pasan algo como

 Accept-Language: en-US 

con cada solicitud, y muchos sitios web grandes servirán contenido diferente basado en ese encabezado. Los sitios más pequeños serán más confiables porque no prestarán atención a los encabezados de idiomas.

También puede usar la ubicación del servidor (es decir, en qué país se encuentra el servidor) como proxy para el idioma que usa GeoIP . Obviamente no es perfecto, pero es mucho mejor que usar el TLD.

Es posible que desee probar la detección basada en ngram.

TextCat DEMO (LGPL) parece funcionar bastante bien (reconoce casi 70 idiomas). Hay un puerto de python proporcionado por Thomas Mangin aquí utilizando el mismo corpus.

Edición: la página de competidores de TextCat también proporciona algunos enlaces interesantes.

Edit2: Me pregunto si sería difícil hacer un envoltorio de Python para http://www.mnogosearch.org/guesser/

nltk podría ayudar (si tiene que tratar con el texto de la página, es decir, si los encabezados y la url en sí no determinan el idioma lo suficientemente bien para sus propósitos); No creo que NLTK ofrezca directamente la función “dígame en qué idioma se encuentra este texto” (aunque NLTK es grande y está en continuo crecimiento, por lo que podría tenerlo), pero puede intentar analizar el texto dado de acuerdo con varias opciones posibles. idiomas naturales y verifique cuáles dan el análisis, el conjunto de palabras, y c más sensatos, de acuerdo con las reglas de cada idioma.

No hay un método general que funcione únicamente en las URL. Puede verificar el dominio de nivel superior para tener una idea, buscar partes de la URL que puedan ser indicativas de un idioma (como “en” o “es” entre dos barras), y asumir que todo lo desconocido está en inglés, pero No es una solución perfecta.

Por lo que sé, la única forma general de determinar el lenguaje natural utilizado por una página es tomar el texto de la página y verificar ciertas palabras comunes en cada idioma. Por ejemplo, si “a”, “an” y “el” aparecen varias veces en la página, es probable que incluya texto en inglés; “el” y “la” podrían sugerir español; y así.

En Python, el paquete langdetect (que se encuentra aquí ) puede hacer esto. Se basa en la detección automática de idiomas de Google y admite de forma predeterminada 55 idiomas.

Se instala utilizando

 pip install langdetect 

Y luego, por ejemplo, ejecutando

 from langdetect import detect detect("War doesn't show who's right, just who's left.") detect("Ein, zwei, drei, vier") 

Volverá ‘en’ y ‘de’ respectivamente.