Si usted está interesado en el mecanismo por el cual detección de idioma puede llevarse a cabo, lo que se refieren a la siguiente article (pitón basados) que utiliza una (muy) Método ingenuo, pero es una buena introducción a este problema en particular y machine learning (solo una gran palabra) en general.
Para las implementaciones Java, JLangDetect y Nutch como lo sugieren los otros carteles son bastante buenos. También echa un vistazo a Lingpipe, JTCL y NGramJ.
Para el problema en el que tiene múltiples idiomas en la misma página, se puede utilizar un detector de límite de frase para cortar una página en frases y luego tratar de identificar el idioma de cada oración. Suponiendo que una oración contenga solo un idioma (principal), aún debe obtener buenos resultados con cualquiera de las implementaciones anteriores.
Nota: Un detector de límite de frase (SBD) es teóricamente un lenguaje específico (problema de la gallina del huevo ya que se necesita uno para el otro). Pero para los idiomas basados en scripts latinos (inglés, francés, alemán, etc.) que usan principalmente períodos (aparte de exclamaciones, etc.) para delimitar oraciones, obtendrá resultados aceptables incluso si usa un SBD diseñado para inglés. Escribí un SBD en inglés basado en reglas que funcionó muy bien para el texto en francés. Para las implementaciones, consulte OpenNLP.
Una opción alternativa al uso del SBD es utilizar una ventana deslizante de, digamos, 10 fichas (espacios en blanco delimitados) para crear un pseudo-frase (PS) y tratar de identificar la frontera, donde los cambios en el lenguaje. Esto tiene la desventaja de que si su documento completo tiene n fichas, realizará aproximadamente n-10 operaciones de clasificación en cadenas de 10 tokens de longitud cada una. En el otro enfoque, si la oración promedio tiene 10 tokens, habría realizado aproximadamente n/10 operaciones de clasificación. Si n = 1000 palabras en un documento, está comparando 990 operaciones versus 100 operaciones: una diferencia de orden de magnitud.
Si tiene frases cortas (menos de 20 caracteres), la precisión de la detección de idioma es pobre en mi experiencia. Particularmente en el caso de sustantivos propios y sustantivos que son los mismos en idiomas como "chocolate". P.ej. ¿Es "Nueva York" una palabra en inglés o una palabra en francés si aparece en una oración en francés?
@EugeneP: french sería más "Je suis un bel homme ...";) pero es poco probable que un detector de idiomas detecte ese error (o al menos un uso muy poco común). – SyntaxT3rr0r
@WizardOfOdds Je suis un bonhomme alors, merci, quand meme;) – EugeneP
Además, espero que ya haya verificado esto: http://stackoverflow.com/questions/1383503/how-to-determine-the-natural-language-of- a-document –