古い記事
ランダムジャンプ
新しい記事
15年前に書いた記事のリニューアル版です。


前回と同様、bigram language model に基づく、ランダム文生成を行います。
ある単語の次に現れる単語の分布を用いて、文章を生成していくだけです。

形態素解析(日本語の単語の認識)は、Yahoo!デベロッパーネットワークのテキスト解析 API の日本語形態素解析 (V2) を使います。

ベースとなるテキストデータは「日本国憲法」(nkkp.txt) を使います (ref. [2023-06-07-1])。
プログラム mamarkov-build.pl で、テキストデータ (nkkp.txt) を形態素解析し、「ある単語の次に現れる単語の分布」を計算し、データファイル (mamarkov-sample.tsv) に出力します。


実行コマンド:
cat nkkp.txt | ./mamarkov-build.pl > mamarkov-sample.tsv

ファイル:
wc -l nkkp.txt
    224 nkkp.txt

tail -1 nkkp.txt
但し、この憲法によって、後任者が選挙又は任命されたときは、当然その地位を失う。

wc -l mamarkov-sample.tsv
    868 mamarkov-sample.tsv

head mamarkov-sample.tsv | tail -3
あれば  、      、      、      、
い      ない
いかなる        特権    差別    奴隷    宗教    宗教    場合

mamarkov-sample.tsv には
  • 「あれば」のあとには「、」しか現れない(4回)
  • 「いかなる」のあとに続く単語は「宗教」が2回、「特権」「差別」「奴隷」「場合」が1回ずつである
などの統計情報(日本国憲法のテキストの)が格納されています。

このデータファイル (mamarkov-sample.tsv) を用いて、プログラム mamarkov-gen.pl で新たなテキストを生成します。
そのロジックは「RSS を読み込んでランダムな文章を生成する[2008-09-07-3]」で解説しているものと同じです。


実行コマンド:
cat mamarkov-sample.tsv | ./mamarkov-gen.pl

出力例:
配偶者の国民の原理に、これを証拠とが欠けたときは、及び団体は、この憲法第二以上の多数でこれを、これを選任する。

但し、又は一部の自由を委任ができる。

信教の議事機関は、社会的、国会を有する終審と異なった議決にも、個人の安全とする。

財産は、及び法律の下に保障及び残虐な刑罰を失う。

何人も、国務大臣は、一般行政機関が日本国民は、内閣は、可否同数の全部又は法律の目的を経なければならない。

関連記事