たまには「プレイ」しましょう
今回の要約: 実は、自然言語はプログラミング言語的な面も持っていた。
長いので要点だけ。
最初に考えていた事: 自然言語はプログラミング言語とは違い、チューリング完全ではない
あとで気付いた事:
- 自然言語の中でも、小説や歌なら、TAP言語での「プレイ」に相当しないか?
- どうも相当していそうに思える。では、人間はどのように、小説や歌を「プレイ」しているのか?ちょっと順を追って考えてみる。
- 人間の頭の中に、空の無名モジュール空間を用意する(小説/歌を読む/聴く前の状態)。
- このモジュール空間に、小説/歌に出てくる内容を順番に、かつ、副作用的(破壊的)に反映していく。反映するオブジェクト等に足りない情報は、先に定義された情報を再利用するか、とりあえず未定義のままにしておいてあとで補完する。必要になった段階でも未定義のままだった場合は、自分の常識から適当な値を採用する。
- ちなみに、この足りない情報を補う為の挙動は、非常に手続き的にも見えるし、「あとで補完」という点に注目するならば遅延評価的にも見える。この辺りは人によって実装が違っている可能性すらある。
- これを最後まで繰り返す。
- 尚、この結果完成されたモジュール空間だけでなく、この構築の流れこそが、小説/歌の「プレイ」の重要な要素である点に注意。
- この流れを見ると、「自然言語はevalを持っている」と言わざるを得ない。
- つまり、自然言語は「世界がどのような状態になっているかを記述する為の(チューリング不完全な)言語」であると同時に、「人間の脳内に仮想世界を構築する為のインストラクション群」でもある、と言えそうだ。
- インストラクション群として見た場合の自然言語はチューリング完全なのか、という点も気になるので考えてみる。
- 「りんごが三つある」時に「りんごを一つ食べた」ら、「残りのりんごは何個か」。
- この文章を「スキャン」しても、単なる「問題文」があるだけだが、人間の脳内で「プレイ」すれば、答えは簡単に出てくる。これはチューリング完全であると言ってよいと思う。
- どうも相当していそうに思える。では、人間はどのように、小説や歌を「プレイ」しているのか?ちょっと順を追って考えてみる。
- とりあえず結論として、自然言語はプログラミング言語的な面も持っている、と言ってよいようだ。
備考:
- 上の説明では、「プレイ」についての解釈にブレのある可能性が残っている。
- 人がよくする「ちゃんと考えてるのか」という問いは、「単にtable lookupだけで済ませずに『プレイ』してるか」と解釈できそうな気がする。
- 前述の自然言語の解釈だと、「他者への命令/お願い」の扱いが謎になる。ここでは仮に、他者への呼びかけは「俺は君に『○○してほしい』と呼びかけている」のショートカットだと解釈する事で、前述の「記述言語」及び「構築インストラクション」の範疇に含める事にした。けど、自然言語の初期発生を考えると、記述言語よりも呼びかけの方が普通にプリミティブな気もする。とりあえず今回は最後までこの解釈で通してしまったけど、もうちょっと考えないと駄目かもしれない。