Un método estadístico sencillo que he utilizado antes:
obtener una cantidad decente de texto de entrenamiento de la muestra en el idioma que se desea detectar. Divídelo en trigramas, p.
"Hello foobar" en trigramas es: 'Hel', 'ell', 'llo', 'lo', 'o f', 'fo', 'foo', 'oob', 'oba', 'bar'
Para todos los datos fuente, cuente la frecuencia de aparición de cada trigrama, presumiblemente en un dict donde key = trigram y value = frequency. Puede limitar esto a las 300 combinaciones de 3 letras más frecuentes o algo si lo desea. Saca el dict a otro lado.
Para saber si una nueva muestra de texto está escrita en el mismo idioma, repita los pasos anteriores para el texto de muestra. Ahora, todo lo que tienes que hacer es calcular una correlación entre las frecuencias de trigrama de muestra y las frecuencias de trigrama de entrenamiento. Tendrá que jugar un poco para elegir una correlación de umbral por encima de la cual esté dispuesto a considerar que la entrada es turca o no.
Este método ha demostrado ser muy precisa, superando a métodos más sofisticados, ver
Cavnar & Trenkle (1994): "N-Gram-Based Text Categorization"
Usando trigramas resuelve el problema de la utilización de listas de palabras, ya que hay un gran número de palabras en cualquier lenguaje dado, especialmente dadas las diferentes permutaciones gramaticales. Intenté buscar palabras comunes, el problema es que a menudo dan un falso positivo para algún otro idioma, o ellos mismos tienen muchas permutaciones. El método estadístico no requiere mucho espacio de almacenamiento y no requiere un análisis complejo. Por cierto, este método solo funciona para lenguajes con un sistema de escritura fonética, pero funciona mal con lenguajes que usan un lenguaje ideográfico (es decir, chino, japonés, coreano).
Alternativamente Wikipedia tiene una sección sobre Turquía en its handy language recognition chart.
Duplicado: http://stackoverflow.com/questions/257125/human-language-of-a-document –
@ S.Lott: He agregado un enlace a la pregunta. – jfs