15年前に書いた記事のリニューアル版です。
前回と同様、bigram language model に基づく、ランダム文生成を行います。
ある単語の次に現れる単語の分布を用いて、文章を生成していくだけです。
形態素解析(日本語の単語の認識)は、Yahoo!デベロッパーネットワークのテキスト解析 API の日本語形態素解析 (V2) を使います。
ベースとなるテキストデータは「日本国憲法」(nkkp.txt) を使います (ref. [2023-06-07-1])。
プログラム mamarkov-build.pl で、テキストデータ (nkkp.txt) を形態素解析し、「ある単語の次に現れる単語の分布」を計算し、データファイル (mamarkov-sample.tsv) に出力します。
実行コマンド:
ファイル:
mamarkov-sample.tsv には
このデータファイル (mamarkov-sample.tsv) を用いて、プログラム mamarkov-gen.pl で新たなテキストを生成します。
そのロジックは「RSS を読み込んでランダムな文章を生成する[2008-09-07-3]」で解説しているものと同じです。
実行コマンド:
出力例:
前回と同様、bigram language model に基づく、ランダム文生成を行います。
ある単語の次に現れる単語の分布を用いて、文章を生成していくだけです。
形態素解析(日本語の単語の認識)は、Yahoo!デベロッパーネットワークのテキスト解析 API の日本語形態素解析 (V2) を使います。
ベースとなるテキストデータは「日本国憲法」(nkkp.txt) を使います (ref. [2023-06-07-1])。
プログラム mamarkov-build.pl で、テキストデータ (nkkp.txt) を形態素解析し、「ある単語の次に現れる単語の分布」を計算し、データファイル (mamarkov-sample.tsv) に出力します。
- mamarkov-build.pl (github)
- nkkp.txt (github)
- mamarkov-sample.tsv (github)
実行コマンド:
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]」で解説しているものと同じです。
- mamarkov-sample.tsv (github)
- mamarkov-gen.pl (github)
実行コマンド:
cat mamarkov-sample.tsv | ./mamarkov-gen.pl
出力例:
配偶者の国民の原理に、これを証拠とが欠けたときは、及び団体は、この憲法第二以上の多数でこれを、これを選任する。
但し、又は一部の自由を委任ができる。
信教の議事機関は、社会的、国会を有する終審と異なった議決にも、個人の安全とする。
財産は、及び法律の下に保障及び残虐な刑罰を失う。
何人も、国務大臣は、一般行政機関が日本国民は、内閣は、可否同数の全部又は法律の目的を経なければならない。