使用com.cybozu.labs.langdetect包检测字符串的语言

时间:2018-03-08 20:09:17

标签: java language-detection

我正在搜索一个小示例代码来检测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 个答案:

答案 0 :(得分:3)

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"