Определить язык строк с помощью пакета com.cybozu.labs.langdetect

Я ищу небольшой пример кода для определения языка строки в JAVA. Для этого я скачал и импортировал следующий проект GitHub: https://github.com/shuyo/language-detection

К сожалению, я с трудом читаю API и не знаю, как заставить мой код работать. Помощь очень ценится. Вот что у меня так далеко. Я получаю исключение NullPointerException, потому что я не знаю, как правильно инициализировать детектор. Любая помощь приветствуется.

import com.cybozu.labs.langdetect.*;

public class DetectLanguage {

    public static void main(String[] args) throws LangDetectException {

        String sample = "Comment vous appelez-vous?";   // french demo text
        Detector d = new Detector(null);                // initialize detector
        d.append(sample);
        System.out.println(d.detect());
    }
}

1 ответ

Решение

Detector подпись конструктора:

public Detector(DetectorFactory factory)

Так что посмотрите на DetectorFactoryСинглтон без getInstance() метод:
Вы должны создать свой детектор так:

Detector d = DetectorFactory.create();

Но если вы просто делаете это, не достаточно...

com.cybozu.labs.langdetect.LangDetectException: need to load profiles

Итак, минимальный и полный пример работы:

try {
    String sample = "Comment vous appelez-vous?";
    // Prepare the profile before
    DetectorFactory.loadProfile("/language-detection/profiles");
    // Create the Detector
    Detector d = DetectorFactory.create();
    d.append(sample);

    System.out.println(d.detect()); // Ouput: "fr"
} catch (LangDetectException e) {
    e.printStackTrace();
}

И когда вы проверяете эти строки:

String sample = "Comment vous appelez-vous ?"; // "fr"
String sample = "Buongiorno come stai ?"; // "it"
String sample = "Hello how are you ?"; // "en"
Другие вопросы по тегам