著者 | Ctrip のシニア R&D マネージャーである mczhao は、自然言語処理テクノロジーの分野に注力しています。
消費者向けホットスポットや新しいインターネット有名人のミームが継続的に出現する中、電子商取引プラットフォームの NLP タスクでは、今まで見たことのない単語がいくつか出てきます。これらの単語はシステムの既存の語彙に含まれていないため、「未登録単語」と呼ばれます。
一方で、語彙集内の単語の不足は、語彙集に基づく一部の単語セグメンターの単語分割の品質に影響を及ぼし、間接的にテキストの想起とハイライト プロンプトの品質に影響を与えます。つまり、ユーザーテキストの検索精度と検索結果の解釈可能性です。
一方、主流のNLP深層学習アルゴリズムであるBERT/Transformerなどでは、中国語を処理する際に単語ベクトルの代わりに単語ベクトルが使用されることが多いです。理論的には、単語ベクトルを使用した方が効果が高いはずですが、未登録の単語があるため、実際には単語ベクトルを使用した方が効果が高くなります。語彙がより完全であれば、単語ベクトルを使用するよりも単語ベクトルを使用する効果が高くなります。
要約すると、新語の発見は現時点で解決しなければならない問題です。
業界では、中国語の新語発見というこの問題に対して、比較的成熟した解決策が存在します。入力はコーパスであり、これらのテキストを NGram にセグメント化した後、候補セグメントが生成されます。これらの断片の統計的特徴を計算し、これらの特徴に基づいてこの断片が単語であるかどうかを判断します。
業界の主流のアプローチは、人気、結束力、左右隣接キャラクターの豊富さの 3 つの側面の指標を数えて観察することです。これら 3 つの指標について説明した記事はインターネット上に多数ありますので、ここでは簡単に紹介しますが、詳細については、Hello NLP と Smooth NLP の 2 つの新語発見記事を参照してください。
人気度を表現するには単語の頻度を使用します。すべてのコーパス内のすべての断片の出現回数をカウントすると、それらの高頻度断片は多くの場合 1 つの単語になります。
#1.2 凝集度 点相互情報量を使用して凝集度を測定します:#たとえば、Han Ting が単語であるかどうかを判断します、log(P("Han Ting")/P("Han")P("Ting"))。 Hanting が単語になる確率は、「Hanting」の人気に正比例し、「Han」と「ting」という単語の人気に反比例します。これは理解するのが簡単です。たとえば、漢字で最も一般的な単語は「的」です。どの漢字でも「的」と一致する確率は非常に高くなりますが、「x の」または「的 x」を意味するわけではありません。 「」も同じ単語です。ここでは、「的」という単一単語の人気が抑制的な役割を果たしています。
1.3 左右の隣接文字の豊富さ
左右の隣接エントロピーは、左右の文字の豊富さを表します。左右の隣接エントロピーは、候補単語断片の左側または右側に出現する単語の分布のランダム性です。左側のエントロピーと右側のエントロピーを分離することも、2 つのエントロピーを 1 つのインジケーターに結合することもできます。
たとえば、セグメント「シャングリラ」は熱量と凝集度が非常に高く、そのサブセグメントに対応します。セグメント「Shangri-La」 「Gri」の人気と凝集性も非常に高いですが、「Shangri」の後に「La」という単語が現れることが多いため、その右隣のエントロピーが非常に低く、単語形成が阻害されます。 「シャングリ」は別の単語ではありえないと判断できます。
2. 従来の方法の制限
従来の方法の問題は、しきい値パラメーターを手動で設定する必要があることです。 NLPの専門家は、現在のコーパスの断片の確率分布を理解した上で、これらの指標を数式で組み合わせたり、単独で使用したりして、判定基準となる閾値を設定し、それを用いた判定結果も高い精度を実現します。
ただし、確率分布や単語の頻度は静的ではなく、コーパスがますます豊富になるにつれて、またはコーパスの重み付けされた人気度 (通常は対応する製品の人気度) が変動するため、専門家は、 set 式のパラメータとしきい値も常に調整する必要があります。これは多くの人的資源を無駄にし、人工知能エンジニアを単なる調整者に変えてしまいます。
#3. 深層学習に基づく新語発見 3.1 単語頻度確率分布図 業界における上記のアルゴリズムの 3 つの指標には、単語頻度という基本的なソース機能が 1 つだけあります。統計手法では、通常、いくつかの単純で重要な統計がヒストグラムや箱ひげ図などの図の形で表示されます。モデルの介入がなくても、人々はそれらを見るだけで一目で正しい判断を下すことができます。裁判官。コーパスを制限された長さのすべての断片に切り取り、断片の単語頻度を 0 ~ 255 に正規化し、2 次元行列にマッピングできます。行は開始文字を表し、列は終了文字を表します。1 ピクセルは断片、ピクセル点の明るさは候補単語断片の人気度です。上の写真は「浦東空港ラマダホテル」という短文の単語出現頻度確率分布図です。肉眼でそれを確認できてとても驚きました。 「浦東」、「浦東空港」、「空港」、「ラマダ ホテル」など、明るい直角二等辺三角形のブロックを大まかに分離できます。これらのブロックは、対応するフラグメントが必要な単語であることを判断できます。
単語頻度確率分布マップを観察することで、短文セグメンテーション問題を画像セグメンテーションに変換できます。問題 。初期の画像セグメンテーション アルゴリズムは、上記の新語発見アルゴリズムに似ています。エッジのグレースケールの変化を検出するためのしきい値ベースのアルゴリズムでもあります。テクノロジーの発展に伴い、現在では深層学習アルゴリズムが一般的に使用されており、より有名なものはU-Net 画像セグメンテーション アルゴリズム。
U-Net の前半では、畳み込みダウンサンプリングを使用して、異なる粒度で複数の層の特徴を抽出します。アップサンプリングにより、これらの特徴は同じ解像度で連結され、最終的に完全接続層 Softmax を通じてピクセルレベルの分類結果が取得されます。
単語頻度確率分布マップの分割は、グラフの分割と似ています。これらはすべて、位置が隣接し、同様のグレー レベルを持つパーツを切り出します。したがって、短い文を分割するには、画像分割アルゴリズムを参照し、完全な畳み込みネットワークを使用することもできます。畳み込みを使用する理由は、短い文章でも画像でも、局所的な情報、つまり最先端に近いピクセルに注目するためです。多層ネットワークを使用する理由は、多層プーリングにより異なる層の地物のしきい値判定を示すことができるためです。たとえば、地図の地形を切り取るとき、傾き (一次微分/差分) だけでなく、傾きの変化(二次)、導関数/差分)、2 つはそれぞれしきい値処理され、組み合わせ方法は単純な線形重み付けではなく、シリアル ネットワークです。
新しい単語の発見シナリオでは、次のアルゴリズムを設計します。
#U-Net と比較すると、次の違いがあります:
1) ダウンサンプリングとアップサンプリングが廃止されました。その理由は、一般的にセグメンテーションに使用される短文は比較的短く、単語頻度分布図の解像度も高くないため、モデルも簡素化されています。
2) U-Net は 3 つのカテゴリ (ブロック 1、ブロック 2、エッジ上) ですが、このアルゴリズムでは 2 つのカテゴリ (ピクセルが単語かどうか) のみが必要です。 U-Net はいくつかの連続したブロックと分割線を出力し、ある点が正であるかどうかだけを必要とします。
#下の図は、モデルのトレーニング後にモデルによって予測された結果を示しています。出力結果では、「上海」(上段と海の列)、「虹橋」、「ビジネス地区」の 3 つの単語に対応するピクセルが特定されたことがわかります。
トレーニングされたモデルを使用し、Ctrip のランドマーク ライブラリにランドマーク名を入力すると、自動的にセグメント化され、いくつかの新しい単語を発見できます, 以下に示すように、一部悪いケースもありますが、全体的な精度は良好です。
これらの単語を辞書にインポートすると、検索語のセグメント化の精度が向上し、その単語の辞書の範囲が広がります。セグメンテーションの結果が向上します。検索語のセグメント化は一般に過剰に想起し、想起漏れを排除する傾向があるため、業界では単語のセグメント化による想起に対するより抜本的なアプローチを採用しており、精度は通常、その後の並べ替えによって解決されます。したがって、単語の分割の精度は向上しましたが、ユーザーの目から見ると、検索結果の精度はそれほど向上していません。ただし、単語の分割エラーによって引き起こされる不適切な強調表示の問題の一部は解決できます。
4. モデルの内部分析
モデルがどのように機能するかを調べたい場合は、中間層の畳み込みカーネルを表示できます。まず、モデルの畳み込み層の畳み込みカーネルの数を 4 から 1 に単純化します。トレーニング後、TensorFlow の API:model.get_layer('Conv2').__dict__ を介して中間層を表示します。 Conv2 層のコンボリューション カーネルは次のとおりであることがわかりました。
最初の効果と 1 番目の効果、モデルの 2 番目の行です。効果は逆です。ピクセルに対応する前の行から、現在の行の差 (重み付き) を引いたものです。グレースケールの差が大きい場合、このピクセルによって表される文字列は、言葉。
1 行目と 2 列目の絶対値 0.04505884 が比較的小さいこともわかります。これは、最初の行の前方パラメータから 2 行目と 2 行目を引いた値である可能性があります。 3 番目の列から 2 番目の負の列を引いた値が互いに打ち消し合います。
この記事では、非常に単純な構造を持つ完全な畳み込みネットワーク モデルについて説明しますが、まだ多くの余地があります。改善のためです。
まず、機能の選択範囲を拡大します。 たとえば、この記事の入力特徴には単語頻度のみが含まれていますが、左右の隣接エントロピーも入力特徴に含まれている場合、セグメンテーション効果はより正確になります。
2 つ目は、ネットワークの深さを増やすことです。 モデル分析を通じて、畳み込みの最初の層は主に 0 で満たされたピクセルによって生成されるケースを処理することであることがわかりました。実際に実際の熱に焦点を当てている畳み込みの層は 1 つだけです。3x3 畳み込みの場合一次差分の結果については、現在のピクセルの前後 2 行目と 2 列目は考慮されません。コンボリューション カーネル サイズを適切に拡張したり、ネットワークを深くしたりして、モデルの視野を大きくすることができます。しかし、ネットワークを深くすると、過剰適合の問題も生じます。
最後に、このモデルは語彙を補足して単語分割効果を向上させるために使用できるだけでなく、候補単語の想起や単語分割の参照として直接使用することもできます。単語分割プロセスにおける単語分割パス スコアリングこのモデルの予測結果は、両方のステップに適用できます。
以上がCNNに基づく新語発見アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。