[解決済み] Stupid Backoffの実装の明確化
質問
こんにちは。 バカなバックオフ (2ページ目、式5)の平滑化手法を担当しているプロジェクトで、その実装について質問させてください。これはNLPで使用される平滑化アルゴリズムで、Good-Turingは最もよく知られた類似のアルゴリズムだと思います。
アルゴリズムを簡単に説明すると ある文に単語が出現する確率を求める場合、まずn-gramレベルでその単語の文脈を探し、そのサイズのn-gramがない場合は(n-1)-gramに再帰してそのスコアに0.4を乗算します。この再帰は1-gramで停止する。
つまり、"a sunny day"の文脈における"day"の確率を求める場合、まずトライグラムの"a sunny day"がコーパスに存在するかを調べ、存在しなければビッググラムの "sunny day" で試して、最後に "day" をコーパスサイズ(学習データ中の単語総数)で割って頻度を得れば良いのである。
私の疑問は N-gramのサイズを小さくするたびに、スコアに0.4を乗算すればよいのでしょうか?
つまり、上記の例では、tri-gramやbi-gramを見つけることができなかった場合、最終的なスコアは次のようになります。
0.4 * 0.4 * 頻度(日) / corpus_size?
それとも、最終段階で一度だけ掛けて、バックオフの回数に関係なく、最終スコアに0.4を掛けるだけで良いのでしょうか?
解答方法を教えてください。
基本的には、上の数学で説明されているように、式5を読みます。
つまり、インスタンスが観測されなかった "a sunny day" について、S("day" | "a sunny") を計算することになります。 また、""a sunny day" "という三文型が見つからない場合は、式5のケース2を取り、S("day" "a sunny")をα * S("day" "sunny") と推定します。
もしまた、"sunny day"の観測がない場合、S("day" | "sunny") を alpha * S("day") と近似し、これは終止形 f("day") / N(観測した単グラムの数)であるとします。
αを0.4にすることで、上に書き出したとおりのものが得られます。
お役に立てれば幸いです。
-bms20
関連
-
[解決済み] Stupid Backoffの実装の明確化
-
TypeError: zip 引数 #1 は反復をサポートしなければならない 解決策。
-
BERT事前学習に基づく中国語名前付き固有表現認識のTensorFlow実装
-
pyhanlpレポートについて FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/jvm' エラー解決法
-
[解決済み】2つのテキスト文書間の類似性を計算する方法は?
-
[解決済み] lemmatizationとstemmingの違いは何ですか?
-
[解決済み] 単語中の音節を検出する
-
[解決済み] Did you mean "を実装するには?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Stupid Backoffの実装の明確化
-
TypeError: zip 引数 #1 は反復をサポートしなければならない 解決策。
-
BERT事前学習に基づく中国語名前付き固有表現認識のTensorFlow実装
-
pyhanlpレポートについて FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/jvm' エラー解決法
-
[解決済み】2つのテキスト文書間の類似性を計算する方法は?
-
[解決済み] lemmatizationとstemmingの違いは何ですか?
-
[解決済み] 単語中の音節を検出する
-
[解決済み] Did you mean "を実装するには?重複