昨日の、
の、追加補足です。
■書きたいシーンが思いつかない場合
小説を書き始めるにあたって、まずは書きたいシーンを思い浮かべる必要があるのですが、この初手から思いつかない場合があります。その場合は、テンプレートを使います。穴埋め式とも言いましょうか。例えば、
・(人物A)が(人物B)を倒す
といったものです。既にキャラクターを思い描けている場合は、そのキャラ名を入れても構いませんが、そうでなければ、そのカッコの中に職業や役職などを入れます。
・勇者が魔王を倒す
・生徒会長が校長を倒す
・バイト店員が社長を倒す
などですね。この場合、「倒す」は物理的ではなく抽象的な意味で構いません。また、スタート時点での力関係は「人物A<人物B」の方が好ましいです。そうでないと、単なるイジメになってしまいますからね(笑)。
■その他のテンプレート
テンプレートとしては、他にも、
・(人物A)が(人物B)を助ける
・(人物A)が(人物B)の秘密を知る
・(人物A)が(人物B)の隠れた性格を知る
・(人物A)が(人物B)に仕事を依頼する
・(人物A)が(場所C)でバイトを始める
・(人物A)がこれまで住んでいた(場所C)を追い出される
等々、これまで読んだ本やアニメ・ゲームなどのストーリーから抽出して、リスト化しておくと便利です。
■原因・結果シーンテンプレート
上記のようなシーンテンプレートは、物語自動生成プログラムを作る場合にはとてもマッチしており、単に空欄をランダムに埋めるだけですみます。
ただ、1つのシーンがそれによって作られたとしても、物語にはなりません。前回の記事で説明したとおり、複数のシーンを結びつける必要があります。
そのために、前述のテンプレートを拡張し、原因テンプレートと結果テンプレートのセットを考えます。
原因:(人物A)が(人物B)を助ける
結果:(人物B)が(人物A)に好意を持つ
だとか、
原因:(人物A)が(人物B)の秘密を知る
結果1:(人物B)は(人物A)を殺害しようとする
結果2:(人物B)は(人物A)に口止めをお願いする
結果3:(人物A)は(人物B)に脅迫する
というように、複数の結果からどれかを選ぶというセットも考えられます。
また、その結果シーンを原因シーンとして、新たな結果シーンに結びつけていくことで、ストーリーがつながっていくことになります。
なお、原因シーンと結果シーンは、シナリオ上即時に連結する必要はなく、間に他のシーンを挟んでも構いません。
■それでも書きたいシーンが思いつかない場合
この段階で登場人物のイメージが出来上がってきていれば、あとはいくつかシーンを想像し連結していき、矛盾点を潰していけば1本のストーリーになると思いますが、それでもまだ想像力が喚起されない場合があります。
その場合は、キャラクターの個性を強化します。たとえば、先ほど職業・役職を割り当てると説明しましたが、1人に複数の職業・役職を割り当てます。
・小学生だけど総理大臣
・国王だけどパン職人
・教師だけどアサシン
・公務員だけどプロボクサー
等々、意外性のある組み合わせにすることで、二面性から独特なキャラクターを生み出しやすくなるかと思います。
また、職業でなくても、正確や特性でも構いません。
■複数職業割り当てにおけるAIの問題
上記の複数職業割り当てを物語自動生成で利用する場合、一つ問題が生じます。それは、世界観の設定を変更しても矛盾する組み合わせが生じる問題です。たとえば、
・小学生だけど中学生
といったものです。
解決方法としては、職業リストの組み合わせテーブルを手作業で作っておく方法がありますが、職業が100あるとすると100×100=10000通りになり、人海戦術でやるとしても、それなりの分量になります。
プログラム的にこれを排除するためには、
・中学生は小学校の卒業資格を保有している必要がある
・小学校の卒業資格を保有している者は小学生になれない
といった論理式を記述しておいて処理する方法もありますが、これもまた前回の記事の話と同様に、どこまで書いておけばいいのかと、これですべてを網羅できるわけではない問題があります。
■まとめ
前回含めて、小説の書き方入門とAIの話が混じって、読んでいる方にはややこしかったかもしれませんが、あくまで個人的な目標は物語自動生成の実現です。
現状の課題としては、自動生成過程で発生した矛盾をどうやって判定して修正するかなのですが、知識や概念を記号で表現するオントロジー工学の延長線上に実現の可能性があるのかは、個人的には少し疑問に思っています。
記号で表現すると、どうしても抜け落ちる情報があり、また論理的な矛盾ではなく、感情的にしっくりこないといった判定が困難です。そのあたりはニューラルネットワーク系のコネクショニズムの方面から新しいアイディアが出来ていたらいいなぁと思う次第です。