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

Java 使用com.cybozu.labs.langdetect包检测字符串的语言,java,language-detection,Java,Language Detection,我正在搜索一个小的示例代码来检测JAVA中字符串的语言。为此,我下载并导入了以下GitHub项目: 不幸的是,我正在努力阅读API,我不知道如何让代码正常工作。非常感谢你的帮助。这是我到目前为止得到的。我得到一个NullPointerException,因为我不知道如何正确初始化检测器。非常感谢你的帮助 import com.cybozu.labs.langdetect.*; public class DetectLanguage { public static void main(

我正在搜索一个小的示例代码来检测JAVA中字符串的语言。为此,我下载并导入了以下GitHub项目:

不幸的是,我正在努力阅读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());
    }
}
探测器建造商签名为:

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"

它有用吗?如果没有,会发生什么?传递的是null,它需要DetectorFactory参数。至少努力阅读文档和/或code.hi@Kayaman。这不是关于NPE的问题,而是为什么会发生NPE。如果你想提供帮助,或者如果你不愿意做出有意义的贡献,就忽略这个问题,那就太好了。@Kayaman你完全没有理解这个网站的要点,如果你改为只读,那就更好了mode@MarianP一点也不,正如你从我的观点中所看到的,我在这里比你帮了很多忙。只是,如果你是编程新手,并试图做一些超出你技能范围的事情,那么指导你不是StackOverflow的工作。我明白这可能令人沮丧,但我是新来的并不是借口。如果你想教他有关这座图书馆的知识,那就去吧。这个问题就是不适合这样。我们不提供新库的教程,更不用说像这个这样的旧库了。但是,嘿,告诉你,我会把被骗的人除掉。让我们假设OP知道什么是NPE以及如何修复它。非常感谢!!它工作得很好!我对文件路径有一些问题,但在这里找到了一个解决方案,以防有人遇到同样的问题: