the stanford natural language corenlp java nlp language-detection
https://language-detection.googlecode.com/files/langdetect-09-13-2011.zip

java - natural - stanford nlp models



¿Cómo detectar el idioma del texto ingresado por el usuario? (7)

Estoy tratando con una aplicación que acepta la entrada del usuario en diferentes idiomas (actualmente 3 idiomas fijos). El requisito es que los usuarios puedan ingresar texto y no molestarse en seleccionar el idioma a través de la casilla provista en la interfaz de usuario.

¿Hay una biblioteca Java existente para detectar el idioma de un texto?

Quiero algo como esto:

text = "To be or not to be thats the question." // returns ISO 639 Alpha-2 code language = detect(text); print(language);

resultado:

EN

No quiero saber cómo crear un detector de idioma por mi cuenta (he visto muchos blogs tratando de hacer eso). La biblioteca debe proporcionar un APi simple y también funcionar completamente fuera de línea. El código abierto o comercial cerrado no importa.

También encontré estas preguntas en SO (y algunas más):

Cómo detectar el lenguaje
¿Cómo detectar el idioma del texto?




Google ofrece una API que puede hacer esto por usted. Me encontré con esto ayer y no mantuve un enlace, pero si tú, umm, busca Google, deberías encontrarlo.

Esto estaba en algún lugar cerca de la descripción de su API de traducción, que traducirá el texto para usted en el idioma que desee. Hay otra llamada solo para adivinar el idioma de entrada.

Google se encuentra entre los líderes mundiales en traducción mecánica; ellos basan sus cosas en corpus de texto extremadamente grandes (la mayor parte de Internet, un poco) y un enfoque estadístico que generalmente "lo hace" bien simplemente por el hecho de tener un gran espacio de muestra.

EDITAR: Aquí está el enlace: http://code.google.com/apis/ajaxlanguage/

EDIT 2: Si insistes en "fuera de línea": una buena respuesta al alza fue la sugerencia de Guess-Language . Es una biblioteca C ++ y maneja aproximadamente 60 idiomas.


Una alternativa es el JLangDetect pero no es muy robusto y tiene una base de lenguaje limitada. Lo bueno es que es una licencia de Apache, si cumple con sus requisitos, puede usarla. Estoy adivinando aquí, pero ¿liberas la tecla espacio entre el evento de salto simple y doble? La versión 0.2 ha sido lanzada here .

En la versión 0.4 es muy robusto. He estado usando esto en muchos proyectos propios y nunca tuve ningún problema importante. Además, cuando se trata de velocidad, es comparable a detectores de lenguaje muy especializados (por ejemplo, solo algunos idiomas).



Detect Language API también proporciona un cliente Java .

Ejemplo:

List<Result> results = DetectLanguage.detect("Hello world"); Result result = results.get(0); System.out.println("Language: " + result.language); System.out.println("Is reliable: " + result.reliable); System.out.println("Confidence: " + result.confidence);


Just a working code from already available solution from cybozu labs: package com.et.generate; import java.util.ArrayList; import com.cybozu.labs.langdetect.Detector; import com.cybozu.labs.langdetect.DetectorFactory; import com.cybozu.labs.langdetect.LangDetectException; import com.cybozu.labs.langdetect.Language; public class LanguageCodeDetection { public void init(String profileDirectory) throws LangDetectException { DetectorFactory.loadProfile(profileDirectory); } public String detect(String text) throws LangDetectException { Detector detector = DetectorFactory.create(); detector.append(text); return detector.detect(); } public ArrayList<Language> detectLangs(String text) throws LangDetectException { Detector detector = DetectorFactory.create(); detector.append(text); return detector.getProbabilities(); } public static void main(String args[]) { try { LanguageCodeDetection ld = new LanguageCodeDetection(); String profileDirectory = "C:/profiles/"; ld.init(profileDirectory); String text = "Кремль россий"; System.out.println(ld.detectLangs(text)); System.out.println(ld.detect(text)); } catch (LangDetectException e) { e.printStackTrace(); } } } Output: [ru:0.9999983255911719] ru

Los perfiles se pueden descargar desde: https://language-detection.googlecode.com/files/langdetect-09-13-2011.zip