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

标签 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());
    }
}

最佳答案

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"

关于java - 使用 com.cybozu.labs.langdetect 包检测字符串的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49181637/

相关文章:

java - 将 Spring Boot 服务注入(inject)非托管类

nlp - (人类)文档的语言

vim - Vim 中如何调用特定于编程语言的设置以及如何检测 + 覆盖它们?

java - 我如何通过 tika 检测波斯语网页?

python网站语言检测

c++ - 在运行时可以检测到 C++03 和 C++11 之间的哪些差异(如果有)?

java - 如何在 Elasticsearch 上使用嵌套聚合?

java - java中的字符串转换抛出数组索引超出范围异常

java - 运行 Maven jar 文件时无法找到或加载主类

java - 将 DBCursor 添加到 memcached