樹木型の文章自動生成

 前回のこのブログで公開したプログラムは文章を自動生成するというもの。
 それは、部分ごとにあらかじめ候補になる文を複数用意しておいて、ランダムにそれをつないでいくことで文章になる。
 プログラムとしては難しいものではなくて、よく初心者向けのサンプルである「おみくじ」を長くしたようなものである。
 たとえば――

  あなたの運勢は**です。

 これの**の部分を「大吉」とか「凶」に変えるやつ。
 こういう部分的に(あるいは一文まるごとでも)可変する文を連ねただけの話。
 このような自動生成の方法は、枝のように分かれた選択肢をたどっていくということで《樹木型》と呼べると思う(あるいは《ツリー型》)。

 では、この《樹木型》の自動生成ではどんな文章が作れるだろうか?
 可変する場所と選択肢を増やしていけば、どんな文章でも作れる、そう思いますよね。
 理論上はそうです、しかしそれを実際にやるとなるとこれがなかなかむずかしい。

 たとえば――

  aの出身地はbです。

 という文があったとしてaには〔私、あなた、彼、彼女〕の四種類、bには〔東京、千葉、埼玉〕の三種類のどれかが入るようにする。ここまではいい。
 だが真ん中の「出身地」を変えることはできるだろうか。「目的地」「旅行先」などにすることはできる(真偽は問わず意味が通ればよい)。
 しかしたとえばそこを「運勢」などとした場合は、おかしくなる。あなたの運勢は埼玉です、とか。
 こうした短い文ならば第二項の選択肢それぞれに対応する第三項の選択肢のグループを用意するのはさほどの手間ではない。しかし、これを短いものでも小説一作分行うとなると、膨大な手間になる、ということはお分かりいただけると思う。

 何が言いたいのかというと、文章にはそれぞれ固有の「構造」というようなものがあって、この構造に沿って変更できる部分は、同類の言葉で置き換えても意味は通る。しかし、構造が崩れてしまうような部分を変更するとなると、全体を一から考え直さなければならなくなる、ということです。
 だから、前回のバットマン文をクトゥルー文に書き換えるというように、元ネタがあってそのパロディというか劣化コピーというかシミュラクルというか、そういった似て異なる文を作るのには《樹木型》の自動生成が使えるが、構造自体を可変させるような自動生成はなかなかむずかしい。


 あと、「構造に沿って変更できる部分は、同類の言葉で置き換えても意味は通る」と書きましたが、この「同類の言葉」というのは「対義語」つまり反対の意味の言葉でもわりといける。
 そのことはレヴィ=ストロースが『神話論理』という本でいってるらしい、私は読んでないのだが。新書の『はじめての構造主義』とか『レヴィ=ストロース入門』とかを読んでヒントを得たのだ。それでだいぶ以前に作ったプログラムがこれ――

home.g06.itscom.net


 どういうものかは、まあ試してみて欲しい。