0

カスタム検索エンジンを開発しており、各単語を適切な言語固有のステマーに渡す必要があります。

私は最近、UTF8 バッファの印象的な言語検出を提供するCompact Language Detector (CLD) http://blog.mikemccandless.com/2011/10/language-detection-with-googles-compact.htmlを発見しました。

CLD は特定のバッファーの言語を検出するのに優れていますが、バッファーから単語境界を抽出し、これらの単語ごとに言語を検出する必要があります。

何か案は?

4

2 に答える 2

2

幸運を :)

正直なところ、これは高度な NLP のトピックであり、確実に行うのは非常に困難です。

まず第一に、多くの言語では単語の境界をそのように検出することはできません。特に表意文字言語 (中国語、日本語など) では、トークン化のために十分に訓練された学習アルゴリズムが必要です。
誰かがそれを行ったという噂がありますが (Basis Technology を参照)、これはライセンス料を支払う余裕がある場合にのみ役立ちます。

ところで。多くの単語はいくつかの言語でまったく同じように書かれている可能性があり、信頼できる言語検出は得られません。さらに悪いことに、アルゴリズム (通常は n グラムベースの検出器) は、何か (正しいか間違っているか) を検出するためにいくつかのオクテットを必要とします。

私が言ったように、頑張ってください。もし私があなたなら、自分の戦略を再考します;)

于 2012-05-09T20:13:53.457 に答える
0

ICU を使用して、基本的に次のことを行う言語検出エンジンを開発しました。

  1. ICU BreakIteratorと英語 ( Locale::getEnglish() ) ルールを使用して基本的な「単語」を発見する
  2. #1 の単語をエンジンにフィードすると、スコアでソートされた「真の」言語が返されます

入力は UTF-8 であるため、目的のために、 UText *を取るsetText()メソッドを使用できます(ここにリンクされている例に注意してください。必要なものはほとんど同じですが、C++ API を使用することもできます)。 UTF-8 をトラバースするように設定できます。

于 2012-05-09T20:09:15.457 に答える