ロシアの記憶ベースの形態

機械学習で有望なアプローチの1つは、既に検討した例を記憶し、同様のサンプルを見つけることに基づいています。 たとえば、復号化されたオーディオレコーディングのコレクションが既にあり、新しいサウンドファイルが表示された場合、同様のサンプルを探し、それに基づいて認識を構築します。 この原理に基づいて、ロシア語の形態をどのように構築できるかを考えてみましょう。



ほとんどの場合、単語の形式は、単語の接尾辞を変更することによって形成されます。 さらに、最も単純なケースでは、正規形が決定されるルールはトリプル(n、newsuffix、morphinfo)によって設定されます。 たとえば、「 people 」という単語の場合、ルールは次の形式になります- (4、「person」、「名詞、男性、主格の場合、複数形」) 。 単語が複数の通常の単語形式( wine- > wine、wine )を持つことができる場合、ルールはいくつかのトリプルで構成されます。 接頭辞を使用して単語形式も形成される例は考慮しません。 基本的に、これは最上級の形容詞に適用され、原則的には単一の単語として解釈できます(たとえば、 「最高」、「最高」 )。 各単語にこのようなルールを設定することにより、通常の単語形式を簡単に取得できます。



AOTプロジェクトの辞書には約500万の単語形式が含まれており、これらを使用して、単語の通常の形式を決定するための約3万のルールを作成します。 実際、これらは非常に処理された結果であり、アルゴリズムの構築に非常に必要です。 さらに、一見、正しいルールを見つけるには、500万語すべてのフォームを保存する必要があるようです。 現実には、そうではありません。



単語の正規形を見つけるためのヒューリスティックを作成してみましょう。これは同時に、保存される情報量を減らすのに役立ちます。 これを行うには、次のパターンを使用します。共通の接尾辞に2つの単語が長くなるほど、通常の形式の形成に関するルールが同じになる可能性が高くなります。



次のように進みます。すべての単語形式を逆順にした単語の辞書式順序でソートします。 たとえば、単語a、weapon、side、seaの場合、 a、side、weapon、seaの順序が真になります。 次のパターンを取得します。互いに並べ替えられた単語は、同じ規則を持つ可能性が高くなります。 次に、規則がその前の単語の規則と一致するすべての単語をリストから削除します。 約50万語が自由に使えるようになります。つまり、保存される情報の量を10倍減らすことができました。 したがって、任意の単語の通常の単語形式を取得するには、残りのリストからこの単語を超えない最大の単語を見つけて、そこからルールを適用する必要があります。 このアルゴリズムは、辞書にあるすべての単語に対して正しく機能し、なじみのない例に対して優れたヒューリスティックを提供します。 このアプローチは、luceneでロシア語のサポートを追加するためにも使用されました。



また、占有される情報の量を減らすために、6つの連続した文字が32ビット整数として表される追加のコーディングを実行できます。 したがって、目的のルールを検索するために使用されるパターンのリストは、2次元の数値配列として表され、1行が1単語に対応します。 目的のサンプルを見つけるには、バイナリ検索を使用する必要があります。 このアルゴリズムの速度は、毎秒約20万ワードです。 さらに、さらに改善することも可能です。たとえば、情報を保存および検索するためにプレフィックスツリーを使用します。 しかし、これは次の会話のトピックです。



All Articles