NLP の基礎 - 言語モデル (LM)

NLP の基礎: 言語モデル (LM)

言語モデル(LM、Language Model)は、文が意味的に滑らかかどうかを判断するために使用されます。最初に文を分割すると、文の確率は各単語の同時確率として表すことができます: P ( s ) = P ( w 1 , w 2 , ... , wn ) P(s)=P(w_1, w_2,...,w_n)P ()=P ( w1w2w

チェーンルール: P(A,B,C,D)=P(A)P(B|A)P(C|A,B)P(D|A,B,C) に従って、次のように変換できます。 :

P ( s ) = P ( w 1 , w 2 , . . , wn ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) 。P ( wn ∣ w 1 , w 2 , w 3 , ... , wn − 1 ) P(s)=P(w_1,w_2,...,w_n)=P(w_1)P(w_2|w_1)P (w_3|w_1,w_2)...P(w_n|w_1,w_2,w_3,...,w_{n-1})P ()=P ( w1w2w)=P ( w1) P ( w2w1) P ( w3w1w2P ( ww1w2w3wn 1)
对于概率 P ( w n ∣ w 1 , w 2 , w 3 , . . . , w n − 1 ) P(w_n|w_1,w_2,w_3,...,w_{n-1}) P ( ww1w2w3wn 1)、条件が非常に長く、コーパス内に単語が見つからない場合、簡単にスパース性が発生するため、マルコフ仮定が導入されます。

  • ユニグラム モデル(1 グラム): P ( wn ∣ w 1 , w 2 , w 3 , . . . , wn − 1 ) = P ( wn ) P(w_n|w_1,w_2,w_3,...,w_{ n-1})=P(w_n)P ( ww1w2w3wn 1)=P ( w)
  • バイグラム モデル(2 グラム): P ( wn ∣ w 1 , w 2 , w 3 , . . , wn − 1 ) = P ( wn ∣ wn − 1 ) P(w_n|w_1,w_2,w_3,.. .,w_{n-1})=P(w_n|w_{n-1})P ( ww1w2w3wn 1)=P ( wwn 1)
  • トライグラム モデル(3 グラム): P ( wn ∣ w 1 , w 2 , w 3 , ... , wn − 1 ) = P ( wn ∣ wn − 2 , wn − 1 ) P(w_n|w_1,w_2, w_3,...,w_{n-1})=P(w_n|w_{n-2},w_{n-1})P ( ww1w2w3wn 1)=P ( wwn 2wn 1)
  • Nグラムモデル

したがって、言語モデルは次のように表現できます。

  • ユニグラムモデル: P ( w 1 , w 2 , . . , wn ) = ∑ i = 1 n P ( wi ) P(w_1,w_2,...,w_n)= \sum_{i=1}^n P (w_i)P ( w1w2w=i = 1P ( w私は)
  • バイグラムモデル: P ( w 1 , w 2 , . . , wn ) = P ( w 1 ) ∑ i = 2 n P ( wi ∣ wi − 1 ) P(w_1,w_2,...,w_n)= P (w_1)\sum_{i=2}^n P(w_i|w_{i-1})P ( w1w2w=P ( w1)i = 2P ( w私はwi 1)
  • トライグラムモデル: P ( w 1 , w 2 , . . , wn ) = P ( w 1 ) P ( w 2 ∣ w 1 ) ∑ i = 3 n P ( wi ∣ wi − 1 , wi − 2 ) P( w_1,w_2,...,w_n)= P(w_1)P(w_2|w_1)\sum_{i=3}^n P(w_i|w_{i-1},w_{i-2})P ( w1w2w=P ( w1) P ( w2w1)i = 3P ( w私はwi 1wi 2)

では、各単語の確率を推定するにはどうすればよいでしょうか? コーパス内に出現する単語の頻度を数えて確率を推定する、これがモデルのトレーニング プロセスです。

たとえば、次のような作業のさまざまな段階や選択に従って、さまざまな LM を構築しますか?

  • N グラムにおける N の選択: ユニグラム、バイグラム、トリグラムなど。
  • さまざまなスムージング方法: ラプラス スムージング、補間、グッド チューリング スムージングなど 10 種類以上の方法。(出現確率0を回避する確率を計算します。テキスト分類の問題では、学習サンプルに単語が出現しない場合、その単語の確率は0となり、出現確率が0の場合、そのテキストの出現確率も0となります。乗算が使われます。)
  • 前処理方法:コーパスから特定の人名や地名、ストップワードなどを一部削除します。

1. モデル評価(確率推定)

さまざまな選択肢に応じて多くの LM が存在しますが、その中から最適なものを選択するにはどうすればよいでしょうか? トレーニングされた言語モデルは良いのか悪いのか?

理想的には:

  1. 言語モデル A、B があるとします。
  2. スペルミス修正、機械翻訳 (MT、機械翻訳) などの特定のタスクを選択します。
  3. 両方のモデルをこのタスクに適用します
  4. 最後に精度を比較してAとBの性能を判定します

核心思路:P ( w 1 , w 2 , . . , wn ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) 。P ( wn ∣ w 1 , w 2 , w 3 , ... , wn − 1 ) P(w_1,w_2,...,w_n)= P(w_1)P(w_2|w_1)P(w_3|w_1, w_2)...P(w_n|w_1,w_2,w_3,...,w_{n-1})P ( w1w2w)=P ( w1) P ( w2w1) P ( w3w1w2P ( ww1w2w3wn 1)確率積を最大化します。

特定のタスクに配置する必要のない簡単な評価メソッド - Perplexity :

Perplexity = 2 − x , x : 平均対数尤度 \text{Perplexity}=2^{-x}, \quad x:average\quad log\quad likelihood困惑=2xバツ:平均_ _ _ _ _ _ログ_ _like i k e l i ho o d
例,バイグラム モデル:バイグラム モデル: P ( w 1 , w 2 , w 3 , w 4 , w 5 ) = P ( w 1 ) P ( w 2 ∣ w 1
) P ( w 3 ∣ w 2 ) P ( w 4 ∣ w 3 ) P ( w 5 ∣ w 4 ) x = log P ( w 1 ) + log P ( w 2 ∣ w 1 ) + log P ( w 3 ∣ w 2 ) + log P ( w 4 ∣ w 3 ) + log P ( w 5 ∣ w 4 ) 5 ⟹ パープレキシティ = 2 − x バイグラム モデル: P(w_1,w_2,w_3,w_4,w_5)=P(w_1) P(w_2|w_1)P(w_3|w_2)P(w_4|w_3)P(w_5|w_4)\\ x =\frac{logP(w_1)+logP(w_2|w_1)+logP(w_3|w_2)+ logP(w_4|w_3)+logP(w_5|w_4)}{5} \Longrightarrow \text{複雑さ}=2^{-x}ビッググラムモデル_ _ _ _ _ _ _ _:P ( w1w2w3w4w5)=P ( w1) P ( w2w1) P ( w3w2) P ( w4w3) P ( w5w4)バツ=5l o g P ( v1)+l o g P ( v2w1)+l o g P ( v3w2)+l o g P ( v4w3)+l o g P ( v5w4)困惑=2x
Perplexity が小さいほど (LM 内のすべての単語の確率の積が大きいほど)、LM は優れています。

2. スムージング方法

N-Gram モデルを使用するときに発生する可能性のあるスパース データの問題を解決するために、さまざまな平滑化アルゴリズムが設計されています。
確率を計算する際、出現確率が 0 になることは避けなければなりません。テキスト分類の問題では、学習サンプルに単語が出現しない場合、その単語の確率は 0 となり、テキストの出現確率は 0 になります。テキストの出現確率を計算するために乗算が使用される場合も 0 になります。

使用できる平滑化方法: ラプラス平滑化、補間、グッドチューリング平滑化および 10 を超える方法。

  • アドワンスムージング(ラプラススムージング)

P ( wi ∣ wi − 1 ) = c ( wi − 1 , wi ) + 1 c ( wi − 1 ) + VP(w_i|w_{i-1})=\frac{c(w_{i-1}, w_i)+1}{c(w_{i-1})+V}P ( w私はwi 1)=c ( wi 1)+Vc ( wi 1w私は)+1

、V は語彙集のサイズです (正規化の場合は分母 + V、すべての確率の合計 = 1)

  • Add-Kスムージング(ラプラススムージング)

P ( wi ∣ wi − 1 ) = c ( wi − 1 , wi ) + kc ( wi − 1 ) + k VP(w_i|w_{i-1})=\frac{c(w_{i-1}, w_i)+k}{c(w_{i-1})+kV}P ( w私はwi 1)=c ( wi 1)+kV _c ( wi 1w私は)+

、V は辞書のサイズです (V=set(corpus))

  • 補間 補間

    補間アルゴリズムを使用する場合、異なる次数の N-Gram モデルは線形に重み付けされ、使用前に結合されます。単純な線形補間は次の式で定義できます。

P ( wi ∣ wi − 2 , wi − 1 ) = λ 1 P ( wi ) + λ 2 P ( wi ∣ wi − 1 ) + λ 3 P ( wi − 2 , wi − 1 ) λ 1 + λ 2 + λ 3 = 1 P(w_i|w_{i-2},w_{i-1})=\lambda_1P(w_i)+\lambda_2P(w_i|w_{i-1})+\lambda_3P(w_{i-2} ,w_{i-1}) \\ \lambda_1 + \lambda_2 + \lambda_3 = 1P ( w私はwi 2wi 1)=1P ( w私は)+2P ( w私はwi 1)+3P ( wi 2wi 1)1+2+3=1

  • グッドチューリングスムージング

    基本的な考え方: 観測カウントの高い N グラムの数を使用して確率量のサイズを再推定し、それをカウントが 0 以下の N グラムに割り当てます。

    アイデア: トレーニング データ内で r+1 回発生する n グラムの確率質量を、r 回発生する n グラムに再割り当てします。

    Good Turing では、カウント r ごとに、 r ' r'に調整を加えます。r'nr n_rnrr 回出現した N グラムを表します。

r ' = ( r + 1 ) nr + 1 / nr P ( x : c ( x ) = r ) = r ' / N r'= (r+1)n_{r+1}/n_r \\ P(x :c(x)=r)=r'/Nr=( r+1 ) nr + 1/ nrP ( ×:c ( x )=r )=r' /N

3. スペル修正における LM の応用 (Spell Correction)

一般に、スペルミスには 2 つのタイプがあります。1 つ目は単語のスペルが間違っていること、2 つ目は、間違った単語はなく、文法に問題があることです。

間違った単語については、以前の方法 VS 現在の方法

之前的方法:

用户输入 --> 从词典中寻找编辑距离最小的词(需要遍历整个词典O(|V|) --> 返回

现在的方法:

用户输入 --> 生成编辑距离为1,2的字符串(candidates) --> 过滤 (根据上下文)--> 返回

フィルタリングの方法は?

w は正しい形式に変更したものです c:
c ∗ = arg ⁡ max ⁡ c ∈ C は P ( c ∣ w ) = arg ⁡ max ⁡ c ∈ C は P ( w ∣ c ) P ( c ) / を候補としますP ( w ) = arg ⁡ max ⁡ c ∈ C 候補 P ( w ∣ c ) P ( c ) \begin{aligned} c^{*} &= \mathop{\arg\max}\limits_{c \in 候補} P(c|w) \\ &= \mathop{\arg\max}\limits_{c \in 候補} P(w|c)P(c)/P(w) \\ &= \mathop{\ arg\max}\limits_{c \in 候補} P(w|c)P(c) \\ \end{aligned}c=c 候補_ _ _ _ _ _ _ _arg _マックスP ( c w )=c 候補_ _ _ _ _ _ _ _arg _マックスP ( w c ) P ( c ) / P ( w )=c 候補_ _ _ _ _ _ _ _arg _マックスP ( w c ) P ( c )

P ( w ∣ c ) P(w|c)P ( w c )は (w,c)、 P ( c ) P(c)に関連するスコアです。P ( c )は言語モデルです

まず、単語のスペルが間違っています。

  1. 1 つ目は、可能な限り候補を取得することです。最適な正しい単語をフィルタリングして除外する方法は 2 つあります。
  • 距離の編集

    異なる編集距離で (w,c) の関連スコアを設定します (たとえば、d=1、スコア = 0.8、d=2、スコア = 0.2、その他、スコア = 0)。

  • 収集されたデータ
    P(w|c): ユーザーが c を綴るとき、w に綴る可能性はどの程度ありますか?
    関連する履歴データは検索エンジンから取得できます。たとえば、検索ワード「appl」と入力すると、その履歴が表示されます。検索ボックスに関連する可能性が表示されます。一致する単語、出現頻度をカウントできます。

  1. 次に、候補単語に対する N-gram の確率最大化に従って、最適な単語 c を選択します。

次に、間違った単語はなく、文法上の問題もあります。

LMと照合してください。

私の個人公開アカウント: HsuDanに注目してください。私の学習体験、ピット回避の概要、インタビュー体験、最新の AI テクノロジー情報について詳しく共有します。

おすすめ

転載: blog.csdn.net/u012744245/article/details/124237078