Comment détecter la langue du texte saisi par l'utilisateur? [fermé]

il s'agit d'une application qui accepte les entrées de l'utilisateur dans différentes langues (actuellement 3 langues fixes). L'exigence est que les utilisateurs peuvent entrer du texte et ne prennent pas la peine de sélectionner la langue par l'intermédiaire d'une case dans l'INTERFACE utilisateur.

Existe-t-il une bibliothèque Java existante pour détecter la langue d'un texte?

je veux quelque chose comme ça:

text = "To be or not to be thats the question."

// returns ISO 639 Alpha-2 code
language = detect(text);

print(language);

résultat:

EN

Je ne veux pas savoir comment créer un détecteur de langue par moi-même (j'ai vu beaucoup de blogs essayant de le faire). La bibliothèque devrait fournir une APi simple et travailler aussi complètement hors ligne. Open-source ou commercial fermé n'a pas d'importance.

j'ai aussi trouvé cette questions sur SI (et quelques autres):

comment détecter la langue

comment détecter la langue du texte?

36
demandé sur Community 2010-07-12 14:07:28

7 réponses

18
répondu Jay Askren 2014-08-29 18:06:21

Ce Détection de la Langue de la Bibliothèque Java devrait donner plus de précision de 99% pour les 53 langues.

alternativement , il y a Apache Tika , une bibliothèque pour l'analyse de contenu qui offre beaucoup plus que la détection de langue.

23
répondu yvespeirsman 2015-05-15 07:01:40

Google propose une API qui peut faire cela pour vous. Je suis tombé sur ça hier et je n'ai pas gardé de lien, mais si vous, euh, cherchez sur Google pour ça, vous devriez réussir à le trouver.

c'était quelque part près de la description de leur API de traduction, qui va traduire du texte pour vous dans n'importe quelle langue que vous aimez. Il y a un autre appel pour deviner la langue d'entrée.

Google est l'un des leaders mondiaux de la traduction mécanique; ils leurs trucs sur des corpuscules extrêmement grands de texte (la plupart de L'Internet, en quelque sorte) et une approche statistique qui habituellement "obtient" il droit simplement en vertu d'avoir un espace d'échantillon énorme.

EDIT: voici le lien: http://code.google.com/apis/ajaxlanguage /

EDIT 2: Si vous insistez sur "offline": Un bien upvoted répondre à la suggestion de Deviner Langue . C'est une bibliothèque C++ et gère environ 60 langue.

5
répondu Carl Smotricz 2010-07-12 10:25:59

Détecter la Langue de l'API fournit aussi client Java .

exemple:

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);
2
répondu Laurynas 2013-10-21 19:47:10

une alternative est le JLangDetect mais il n'est pas très robuste et a une base linguistique limitée. La bonne chose est que C'est une licence Apache, si elle satisfait vos exigences, vous pouvez l'utiliser. Je suppose ici, mais est-ce que vous relâchez la touche espace entre le saut simple et le saut double? La Version 0.2 a été publiée ici .

dans la version 0.4 il est très robuste. Je l'ai utilisé dans de nombreux projets de mon propre et jamais eu de problèmes majeurs. De plus, lorsqu'il s'agit de vitesse, elle est comparable à des détecteurs de langage très spécialisés (p. ex., peu de langues seulement).

2
répondu Manny 2015-01-10 09:49:44

voici une autre option: bibliothèque de détection de langage pour Java

c'est une bibliothèque en Java.

0
répondu Omar Jaafor 2013-07-10 12:38:53
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
Les profils

peuvent être téléchargés à partir de: https://language-detection.googlecode.com/files/langdetect-09-13-2011.zip

0
répondu Anand Kumar 2015-08-04 13:31:44