
このサイトでのユーザー入力の言語を決定する問題を一度だけ解決したいと思います。
多言語のHabrahabrをやっていると想像してみてください:-)、ユーザーに彼が書いている言語を尋ねたくありません。 コンピューターはそのような問題に対処すべきだと思います。
タスクステートメント
- テキストの断片から言語を決定する必要があります。 断片の長さは、数語から数十文です。 これはまとまりのあるテキストでも、たとえば記事のタイトルでもかまいません。
- テキストはUTF-8エンコーディングで提供されます。
- 興味のある言語のセットはハードコードされています。 言語の数は5..10。です。 動作中のアプリケーションでは、より小さな数に制限して、判定の精度を高めることもできます。
- テキストには他の言語が含まれている場合があります。 メインを決定する必要があります(たとえば、単語の60%以上)。
- 私の仕事では、常に正確に決定する必要はありません たとえば、ほとんどの場合、ウクライナ語とロシア語を区別する必要はありません。
- テキストの著者は彼が書く言語を知っています 。
既存のソリューションは適切ではありません。 問題は、それらが数学者とプログラマーによって作成されたことです。 これらのソリューションは主に1つのパラメーターを分析し、テキストが何らかの言語で書かれているという奇妙な確率を与えます。 そして、確率は必要ありません。 言語を決定する必要があります:-)。 2番目の問題は、他の言語を含むテキストでは統計アルゴリズムがバラバラになることです。
多くのパラメータを順番に分析する必要があると思います。
実験のために、テキストの
なじみのない言語を視覚的に特定しようとしました。 たとえば、ポルトガル語とドイツ語を区別するのは簡単ですが、どちらかはわかりません。
私の行動のアルゴリズムは次のようなものです。
- 私は言葉に現れる文字のセットを見ます。 さらに、テキスト全体ではなく、言葉に従っています。 テキストに「外来」語が含まれている場合があります。 この段階では、言語の3分の2がすでに除外されています。
- 特徴的な接続詞と前置詞を探します-それらに従って同じ文字のセットを持つ言語を分割できます
- 定義された言語で書かれていることを前提にテキストを読み込もうとしています。 この段階で何が起こるかを言うのは難しいです...これは言語の文法の複雑な分析だと思います。 私は知っている言葉を認識し、語尾を確認します。
失敗したアルゴリズムの例
vitali.at.tut.byは、テキスト内の2文字の組み合わせの数をカウントすることに基づく統計アルゴリズムです。 テストに失敗しました、なぜなら バイナリがサイトから削除されました。
大麦モジュール 。
この記事はトルコ語で書かれていると言う
生きた例です。
ニューラルネットワークの分類子とセマンティック分析に関する記事がまだあり
ます 。
次数nおよびベースMのポリグラムモデルでは、テキストはベクトル{f i }、i = 1..M nで表されます。ここで、f iはテキスト内のi番目のn-gramの出現頻度です。形式a 1 ... a n-1 a n ...
-ニクロムは理解しませんでした私はこれ以上見ませんでした。
一貫性のあるアルゴリズムの例
Googleの翻訳者は言語を数語で完全に定義します。 彼は文に「外来」語を含めても混乱しません。
PS
また、JavaScriptを使用して、クライアント側でこれを行うという奇妙な欲求があります。 いくつかの単語を分析するには、Google Language APIにアクセスする必要はないと思います...
PS 2
その結果、Google Language APIを使用しました...物議を醸すケースでは、辞書検索を使用しているのではないかと疑っていますが、クライアント側でそれを買う余裕はありません。