43

さまざまな言語(現在、3つの言語が修正されています)でユーザー入力を受け入れるアプリケーションを扱っています。要件は、ユーザーがテキストを入力でき、UIに用意されているチェックボックスを使用して言語をわざわざ選択しないことです。

テキストの言語を検出するための既存の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(およびさらにいくつか)でこの質問を見つけました:

言語
を検出する方法テキストの言語を検出する方法は?

4

7 に答える 7

20

ここに2つのオプションがあります

于 2010-07-12T21:16:15.137 に答える
6

Googleは、これを実行できるAPIを提供しています。私は昨日これに出くわし、リンクを保持していませんでしたが、あなたが、うーん、それのためにグーグルなら、あなたはそれを見つけることができなければなりません。

これは、テキストを好きな言語に翻訳する翻訳APIの説明に近いところにありました。入力言語を推測するためだけの別の呼び出しがあります。

Googleは、機械的な翻訳で世界をリードする企業の1つです。彼らは非常に大きなテキストのコーパス(ほとんどのインターネット、ちょっと)と、通常は巨大なサンプルスペースを持っているという理由だけでそれを正しく「取得」する統計的アプローチに基づいています。

編集:ここにリンクがあります:http ://code.google.com/apis/ajaxlanguage/

編集2:「オフライン」を主張する場合:よく支持された答えは、Guess-Languageの提案でした。これはC++ライブラリであり、約60の言語を処理します。

于 2010-07-12T10:11:44.763 に答える
2

代替手段はJLangDetect ですが、これはあまり堅牢ではなく、言語ベースも限られています。良いことは、それが Apache ライセンスであることです。それが要件を満たしていれば、それを使用できます。ここで推測ですが、シングルジャンプとダブルジャンプのイベントの間でスペースキーを離しますか?バージョン 0.2 がここでリリースされました。

バージョン 0.4 では、非常に堅牢です。私はこれを自分の多くのプロジェクトで使用してきましたが、大きな問題はありませんでした。また、速度に関しては、非常に専門的な言語検出器 (少数の言語のみなど) に匹敵します。

于 2010-07-12T10:19:40.000 に答える
0
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からダウンロードできます 。

于 2015-08-04T13:31:44.380 に答える
0

ここに別のオプションがあります:Java用言語検出ライブラリ

これは Java のライブラリです。

于 2013-07-10T12:38:53.077 に答える