java 如何检测用户输入文本的语言?[已关闭]

qfe3c7zg  于 2023-02-28  发布在  Java
关注(0)|答案(7)|浏览(368)

我们不允许问题寻求有关书籍、工具、软件库等的推荐。你可以编辑问题,以便可以使用事实和引用来回答问题。
六年前关闭了。
Improve this question
我正在处理一个应用程序,接受用户输入不同的语言(目前3种语言固定)。要求是,用户可以输入文本,而不必麻烦选择语言通过提供的复选框在用户界面。
是否有现有的Java库来检测文本的语言?
我想要这样的东西:

text = "To be or not to be thats the question."

// returns ISO 639 Alpha-2 code
language = detect(text);

print(language);

结果:

EN
    • 我不想知道如何自己创建一个语言检测器**(我已经看到很多博客尝试这样做)。库应该提供一个简单的API,也完全离线工作。开源或商业封闭并不重要。

我还发现了SO上的这个问题(还有更多):
How to detect language
How to detect language of text?

yeotifhr

yeotifhr1#

这个Language Detection Library for Java应该能为53种语言给予超过99%的准确率。
另外,还有ApacheTika,它是一个内容分析库,提供的不仅仅是语言检测。

pcrecxhr

pcrecxhr3#

谷歌提供了一个API可以帮你做到这一点,我昨天偶然发现了这个,没有保留链接,但如果你,嗯,谷歌它,你应该设法找到它。
这和他们的翻译API差不多,它可以把文本翻译成你喜欢的任何语言,还有一个调用只是为了猜测输入语言。
谷歌是世界机器翻译的领导者之一;他们的东西基于极其庞大的文本语料库(大部分互联网,有点)和统计方法,通常“得到”它的权利,只是凭借有一个巨大的样本空间。
编辑:链接如下:http://code.google.com/apis/ajaxlanguage/
编辑二:如果坚持“线下”:Guess-Language是一个很好的选择,它是一个C++库,可以处理大约60种语言。

zbwhf8kr

zbwhf8kr4#

JLangDetect是一个替代方案,但它不是很健壮,而且语言基础有限。好消息是它是Apache许可证,如果它满足您的要求,您可以使用它。我猜在这里,但您是否在单跳和双跳事件之间释放空格键?
在0.4版本中,它非常健壮。我已经在自己的许多项目中使用过它,从来没有遇到过任何大问题。而且,当谈到速度时,它可以与非常专业的语言检测器相媲美(Eidogg.,仅少数语言)。

yyyllmsg

yyyllmsg5#

Detect Language API也提供了Java client
示例:

List<Result> results = DetectLanguage.detect("Hello world");

Result result = results.get(0);

System.out.println("Language: " + result.language);
System.out.println("Is reliable: " + result.reliable);
System.out.println("Confidence: " + result.confidence);
vsaztqbk

vsaztqbk6#

下面是另一个选项:Language Detection Library for Java
这是一个Java的库。

w8rqjzmb

w8rqjzmb7#

Just a working code from already available solution from cybozu labs:

package com.et.generate;

import java.util.ArrayList;
import com.cybozu.labs.langdetect.Detector;
import com.cybozu.labs.langdetect.DetectorFactory;
import com.cybozu.labs.langdetect.LangDetectException;
import com.cybozu.labs.langdetect.Language;

public class LanguageCodeDetection {

    public void init(String profileDirectory) throws LangDetectException {
        DetectorFactory.loadProfile(profileDirectory);
    }
    public String detect(String text) throws LangDetectException {
        Detector detector = DetectorFactory.create();
        detector.append(text);
        return detector.detect();
    }
    public ArrayList<Language> detectLangs(String text) throws LangDetectException {
        Detector detector = DetectorFactory.create();
        detector.append(text);
        return detector.getProbabilities();
    }
    public static void main(String args[]) {
        try {
            LanguageCodeDetection ld = new  LanguageCodeDetection();

            String profileDirectory = "C:/profiles/";
            ld.init(profileDirectory);
            String text = "Кремль россий";
            System.out.println(ld.detectLangs(text));
            System.out.println(ld.detect(text));
        } catch (LangDetectException e) {
            e.printStackTrace();
        }
    }

}

Output:
[ru:0.9999983255911719]
ru

配置文件可从以下网址下载:https://language-detection.googlecode.com/files/langdetect-09-13-2011.zip

相关问题