あらためて人工無脳をつくろう(1)

どうも俺は設計と実装をごっちゃにして考え過ぎる。実装に気が取られると、設計は二の次三の次。人工無脳作りを通してつくづく感じた。よろしくない。というわけで、しばらく時間空いて忘れた部分もあるしもう一度人工無脳の設計から考えなおす。

「発言=最短経路問題」と考える。「ノード=単語」で、「経路長=単語のつながりの「ありそうさ」具合」、「出発点=文頭」、「到達点=文末」ととする。一回一回の人工無脳の発言をそういう最短経路問題と考えて、人工無脳の出力する文章を「ありそう」なものにする。簡単化したのが下図。ノードを辿って、例えば「ああ、なんか疲れた。」みたいな文章を出力する、と。

まあDP(ダイナミックプログラミング=動的計画法ダイクストラ法(たぶん?)とかさえ把握しておけば、一番短い道を見つけるのはそんなに難しくもないですね。きっと。知らんけど。実際には遅過ぎたりするかもしれないけど、とりあえずいいとする。
で難しいのが「ありそうさ」具合を導出することかなと。「ありそうさ」は前後の単語、文章、会話の流れ、その時の気分などなど、様々な要因により決まる。これはまあ、とにかくマルコフモデルだなんだと適当にあれこれして、それなりな数値を計算で得られればいいや。これはまた後で煮詰める。
実際の人間が発言するときは、別に文章の頭っから順番に文末までの単語を考えているわけでもない。言いたい単語を言葉でつなげて文章になると考えられる。すなわち経路問題で言うところの「中継点」にあたるんじゃないかと。(経路問題に中継点という概念が使われるのか、よく知らないけど)

図にするとこんな上のような感じで。

test