Определить язык строк с помощью пакета 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"