2

私が与えられたテキスト(長いまたは短いの両方)を持っている場合、あなたは通常どの方法でそれが書かれている言語を検出しますか?

は明らかです:

  • 使用するモデルをトレーニングするには、トレーニングコーパスが必要です(使用する場合はニューラルネットワークなど)。

私の頭に浮かぶ最も簡単なことは次のとおりです。

  • テキストで使用されている文字を確認してください(たとえば、ひらがなは日本語でのみ使用され、ウムラウトはおそらくヨーロッパの言語でのみ使用されます。フランス語、トルコ語、…)
  • 言語の特定の組み合わせを見つけるには、チェックを2文字または3文字のペアに増やします
  • 辞書を検索して、どの単語がどの言語で出現するかを確認します(ステミングは言語に依存するため、おそらくステミングなしでのみ)

しかし、もっと良い方法があると思います。私は既存のプロジェクトを検索していません(これらの質問はすでに回答済みです)が、隠れマルコフモデル、ニューラルネットワークなどの方法を検索しています…このタスクに使用できるものは何でも。

4

2 に答える 2

2

私が取り組んでいる製品では、辞書ベースのアプローチを使用しています。トレーニングコーパス内のすべての単語の最初の相対確率が計算され、これがモデルとして保存されます。

次に、入力テキストが単語ごとに処理され、特定のモデルが最適に一致するかどうかが確認されます(他のモデルよりもはるかに優れています)。

場合によっては、すべてのモデルが非常に悪い一致を提供します。

いくつかの興味深い点:

  1. ソーシャルメディアを使用しているため、正規化された一致と正規化されていない一致の両方が試行されます(このコンテキストでは、正規化は記号から発音区別符号を削除することです)。正規化されていない一致の重みは高くなります
  2. この方法は、非常に短いフレーズ(1〜2語)では、特にこれらの単語が少数の言語で存在する場合、かなりうまく機能しません。これは、ヨーロッパの少数の言語の場合です。

また、より良い検出のために、あなたが説明したように、文字ごとのモデルを追加することを検討しています(特定の言語には特定の固有の文字があります)

ところで、ICUライブラリを使用して単語を分割します。ヨーロッパと東の言語にかなり適しています(現在、中国語をサポートしています)

于 2012-05-17T13:20:52.637 に答える
0

CavnarandTrenkleアルゴリズムを確認してください。

于 2012-05-18T17:16:30.500 に答える