夏目漱石なランダム文生成
せっかくランダム文生成ができたので、コーパスを変えてもう少し遊んでみました。青空文庫から『吾輩は猫である』を使ってみようと思います。
$ wget http://www.aozora.gr.jp/cards/000148/files/789_14547.html
文字コードがシフト JIS なので変換しておきます。
$ iconv -f SHIFT_JIS -t UTF8 789_14547.html >789_14547_utf8.html
ファイルの中身をざっと眺めてみたところ ruby タグが使われています。次のようにすればよさそうです。
- rb タグの中身が img の場合は外字なので捨てる。このときは rt タグの中身 (ひらがな) を生かす
- rb タグの中身がテキストの場合は rb タグの中身を生かして残りを捨てる
- その他のタグは全部捨ててしまう
こんな感じでしょうか。
cat $1 |\ # $1 が入力として sed 's/<rp>[^<]*<\/rp>//g' |\ # rp タグは不要なので捨てる sed 's/<rb><img [^>]*><\/rb><rt>\([^<]*\)<\/rt>/\1/g' |\ # rb タグの中身が img の場合 sed 's/<rb>\([^<]*\)<\/rb><rt>[^<]*<\/rt>/\1/g' |\ # rb タグの中身がテキストの場合 sed 's/<[^>]*>//g' |\ # 残りの全タグを捨てる grep -v '[<>]' # <!DOCTYPE ...> を捨てる
あとは python で同じように。
>>> print ''.join(ngram.generate(100, ['吾輩', 'は'])) 吾輩は元来地上の者ではない。こう先方の口上を真似ているのである。「どうも驚ろいたまあと、徐々上り込む。逃がすものか」「それ見たがその注意をしたのでありましたろう」と姉の面影を存しても別段主人の庭は竹垣の外がすぐ解釈して、すこぶる幽邃な梵刹です。年は四五遍繰り返したあとには白い湯でも朗読するの