この作品は、マルコフ連鎖を用いて文章を自動生成するプログラムです。 画面上の「旗」を押すと、あらかじめ用意された文章データをもとに、新しい文章が生成されます。※中を見て学習データを増やすことができます。 例文としては夏目漱石の「吾輩は猫である」を使用しており、その単語のつながりを学習した文章が出力されます。 作品の中身を開くと、文章生成の挙動を調整するための引数(パラメータ)を変更することができます。 これらの値を変更することで、生成される文章の雰囲気、ランダム性、長さなどが変化します。 temperature は、次に来る単語の選ばれ方のランダム性を調整する値です。 値を小さくすると確率の高い単語が選ばれやすくなり、元の文章に近い安定した文章になります。 値を大きくすると、低確率の単語も選ばれやすくなり、より自由で予測しにくい文章になります。 top_p は、確率の合計を基準にして単語候補を制限する引数です。 確率の高い単語から順に足し合わせ、その合計が指定した値以内に収まる範囲で候補が選ばれます。 小さい値では無難な文章になりやすく、大きい値では表現の幅が広がります。 top_k は、次に来る単語の候補を確率の高い順に最大で指定した個数までに制限します。 値を小さくすると文章は安定しますが単調になりやすく、値を大きくすると多様な表現が出やすくなります。 max_word は、生成される文章の最大単語数を指定します。 この数に達すると、途中であっても文章生成は終了します。 Connection with the previous word は、直前の単語とのつながりをどれだけ重視するかを調整する引数です。 値を高くすると文脈を重視した自然な文章になりやすく、低くするとランダム性の高い文章になります。なお、値が高い場合元の文章に近い安定した文章になります。 out は、次に来る単語の候補数に関する条件を設定する引数です。 指定した数以上の候補が存在する状態を理想としますが、候補が完全になくなることを防ぐため、 最低でも 1 個の候補は必ず保持されるように設計されています。 ただし、top_k や out による制限を行う前の段階で、 そもそも次に続く単語の候補が存在しない場合は、 その時点で文章生成は終了します。 なお、out の値を大きくすると、より多くの候補を検討するため処理時間が長くなり、 精度が下がる場合があります。 また、候補数がそれ以上増えなくなった場合は、 指定した数に達していなくても生成は終了します。 これらの引数を調整することで、 マルコフ連鎖による文章生成の仕組みや、 確率によって文章が作られる過程を体験することができます。
マルコフ連鎖をscratchで作成しました サムネイル画像はAi生成です 流れている音声はAi生成です