Kneser-Neyスムージングでは、見えない単語はどのように処理されますか?


15

私が見たものから、(二次)Kneser-Ney平滑化式は何らかの形で次のように与えられます

PKN2(wn|wn1)=max{C(wn1,wn)D,0}wC(wn1,w)+λ(wn1)×Pcont(wn)

正規化係数次のように与えられますλ(wn1)

λ(wn1)=DwC(wn1,w)×N1+(wn1)

および単語w_nの継続確率Pcont(wn)wn

Pcont(wn)=N1+(wn)wN1+(w)

ここで、N1+(w)は、コンテキストwの数w、または単純に、特定の単語wの前にある個別の単語\ bulletの数です。私が理解したことから、式は再帰的に適用できます。w

現在、これはさまざまなnグラム長の未知のコンテキストで既知の単語を適切に処理しますが、説明されていないのは、辞書にない単語がある場合の対処方法です。ユニグラムの再帰ステップでP_ {cont}(/)= P ^ 0_ {KN}(/)= \ frac {1} {V}であると述べているこの例に従っみました。文書では、これを使用して-ChenとGoodmanを引用して、上記の式をP ^ 1_ {KN}(w)= P_ {cont}(w)として正当化します。Pcont(/)=PKN0(/)=1VPKN1(w)=Pcont(w)

しかし、未知の単語w=unknownが存在する場合にどのように機能するかはわかりません。これらの場合、Pcont(unknown)=0somethingため、明らかに、未知の単語はトレーニングセットに関して何も継続しません。同様に、n-gramのカウントはC(wn1,unknown)=0ます。

さらに、不明な単語のシーケンス(たとえば、OOD単語のトライグラム)が検出されると、wC(wn1,w)用語全体がゼロになる場合があります。

私は何が欠けていますか?


私もKNと格闘しています。見えないバイグラムP(w1w2)の確率は、最後のユニグラムw2の継続確率に戻る可能性があると思います。目に見えないユニグラムが残っているときは何もありませんでした。次はどうする?知りません。
momobo 14

私は現時点で自分でKNを実装しようとしていますが、この同じ問題に固執しています。二人とも解決策を見つけることができましたか?
jbaiter

私は目に見えないユニグラム(周波数と周波数の周波数にパワー関数をフィッティング)のGood-Turing平滑化に戻りました...結果はさまざまです。
サンサイド

回答:


6

Dan Jurafskyは、この問題について少し説明しているN-Gramモデルに関する章を公開しています。

再帰の終了時に、ユニグラムは一様分布で補間されます:

PKN(w)=max(cKN(w)d,0)wcKN(w)+λ(ϵ)1|V|

未知の単語を含めたい場合は<UNK>、カウント0の通常の語彙エントリとして含まれているだけなので、その確率は次のようになります。

λ(ϵ)|V|

私は何この手段を見つけることを試みたが、かどうかわからないですしましただけを意味。この場合、カウントがゼロになると、おそらくがになると仮定します。LIM X 0のx λ ε Dϵlimx0xλ(ϵ)d

λ(wi1)=dc(wi1)|{w:c(wi1,w)>0}|

次に、未知の単語には割引の一部が割り当てられます。つまり、

λ(ϵ)|V|=d|V|

私はこの答えにはまったく自信がありませんが、それがさらに考えを喚起する場合に備えて、それを公表したかったのです。

更新: もう少し掘り下げて、空の文字列( "")を示すためにが通常使用されるように見えますが、これが計算にどのように影響するかはまだ明確ではありません。 は今でも最良の推測ですϵλd|V|


2
良い答えですが、あなたのように私は100%自信がありません。私はperlスクリプトresearch.microsoft.com/en-us/um/redmond/groups/srg/papers / ...のバージョンをPython で実装しました-しかし、閉じた語彙(probの問題0 )-すなわち、すべてのテストユニグラムも訓練中です。月によって示唆されるようにlagunita.stanford.edu/c4x/Engineering/CS-224N/asset/slp4.pdf I前処理中に<UNK>と、各単語の最初のインスタンスを置き換えます。ただし、パーティショニング時には、「goofedup」のような列車にないテストユニグラムがいくつかあります。だから私はd / | V |を使用しました ここに。ありがとう!
ジョシュモレル

1

<UNK>ジュラフスキーは、トレーニング中に非常にまれにしか発生しない単語を選択して、単にそれらを変更することを提案していますが、モデルをトレーニングするには多くの方法があります<UNK>

次に、通常どおり確率をトレーニングします。

3:40から始まるこのビデオをご覧ください–

https://class.coursera.org/nlp/lecture/19

<UNK>私の経験から、このアプローチはに非常に多くの確率質量を割り当てますが、別のアプローチは、トレーニングで見られる最初の単語として単純に単語を考慮することです<UNK>


0

ほんの少しの考えですが、私はこの問題の専門家には程遠いので、質問に答えるつもりはありませんが、分析するつもりです。

簡単なことは、合計を1に強制することでを計算することです。空の文字列はトレーニングセットに表示されず(何も予測できないため)、合計は1でなければならないため、これは合理的です。この場合、は次のように推定できます: ここで、はバイグラムモデルから取得されることに注意してください。λ(ϵ)λ(ϵ)

λ(ϵ)=1wmax(CKN(w)d,0)wCKN(w)
CKN(w)

別のオプションは<unk>、Randyが言及した方法で確率を推定し、それを通常のトークンとして扱うことです。

このステップは、式の一貫性を確保するために行われたと思います。用語はコンテキストに依存せず、すべてのトークンの確率に固定値を割り当てることに注意してください。次の単語を予測する場合、この用語を予測できます。一方、2つ以上の異なるコンテキストで各トークンに割り当てられたKneser-Ney確率を比較する場合は、この用語を使用できます。λ(ϵ)|V|


回答は、実際の回答を想定しています。
マイケルR.チャーニック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.