3

Brian W. Kernighan と Rob Pike による「The Practice of Programming」という本を読んでいます。第 3 章では、ソース テキストを読み取り、それを使用して「読みやすい」ランダム テキストを生成するマルコフ連鎖アプローチのアルゴリズムを提供します (意味するのは、出力が意味不明な英語よりも適切な英語に近いことを意味します)。

set w1 and w2 to the first two words in the source text
print w1 and w2
loop:
   randomly choose w3, one of the successors of prefix w1 and w2 in the source text
   print w3
   replace w1 and w2 by w2 and w3
   repeat loop

私の質問は、w2 と w3 の新しい値がソース テキストに後継者を持たない状況を処理する標準的な方法は何ですか?

よろしくお願いします!

4

3 に答える 3

1

ここであなたのオプション:

  1. 単語をランダムに選択しますか? (常に動作します)
  2. 新しい W2 をランダムに選択しますか? (おそらくまだループする可能性があります)
  3. 以前の W1 と W2 に戻しますか? (おそらくまだループする可能性があります)

おそらく、#2 または #3 を 1 回試してから、#1 にフォールバックします。これは常に機能します。

于 2013-05-06T02:31:52.223 に答える
1

あなたが説明している状況では、特定のデータセット内の 3 タプルの統計的頻度である3-gramsが考慮されています。吸着状態のないマルコフ行列を作成するには、つまり af_2(w1,w2) -> w3との点がないf_2(w2,w3) = 0場合、可能性を拡張する必要があります。@ThomasWの回答の一般化された拡張は次のとおりです。

  1. 設定された予測子f_2(w1,w2) != 0がそれから引き出す場合
  2. 設定された予測子f_1(w2) != 0がそれから引き出す場合
  3. 設定された予測子f_0() != 0がそれから引き出す場合

つまり、1 グラム セットよりも 2 グラム セットよりも 3 グラム セットから通常どおりに描画します。最後のステップでは、統計的頻度によって重み付けされた単語をランダムに描画するだけです。

于 2013-05-06T02:50:48.593 に答える
0

これは NLP における深刻な問題であり、簡単な解決策がないものだと思います。1 つのアプローチは、マッピングを一般化するために、実際の単語に加えて品詞にタグを付けることです。プログラムは品詞を使用して、単語シーケンスの前例がない場合、単語 W2 と W3 の後に続く品詞を少なくとも予測できます。「このマッピングがトレーニング例で実行されると、これらのトレーニング例でタグ付けモデルをトレーニングできます。新しいテスト文が与えられると、モデルからタグのシーケンスを復元できます。モデル。" コロンビアノートより

于 2013-05-06T02:33:15.643 に答える