第225回 作ってみた! ソシュールが夢見た言語システム


ロボマインド・プロジェクト、第225弾!
こんにちは、ロボマインドの田方です。

近代言語学の父といえば、フェルディナン・ド・ソシュールです。
ソシュールは、まず最初に、言語をラングとパロールに分けました。
ラングは言語体系、パロールは話し言葉って訳されてます。

ソシュールの思い描いていたラングっていうのは、なんというか、普遍的な言語システムといったものです。
言葉という記号によって駆動される言語システムです。
そして、ソシュールが生涯かけて目指したのは、このラングの解明です。

そのとっかかりとして、言葉とか記号の定義から始めました。
たとえば、記号の恣意性ってのを指摘してます。
たとえば、日本語では、「イヌ」っていいますけど、英語では「ドッグ」って言いますよね。
こんな風に、その物を何と呼ぶかは、社会によって自由に決められるってことです。

それから、単語ってのは、他の単語との差異で決められるってことも指摘しました。
犬はネコとここが違う、オオカミとここが違うって形で定義されるわけです。
常に、~でないって形でしか定義できないってことです。

こんな風にして、記号としての言葉を定義して、言語システムを解明しようとしたわけです。
でも、ソシュールが思い描いていた言語システムの全体像って、もっと、巨大やと思うんですよ。
記号とか言葉って、そのとっかかりにしか過ぎないと思うんですよ。
たぶん、志半ばで亡くなったんやと思います。

誤解しないで欲しいんですけど、ソシュールの功績ってものすごく偉大なんですよ。
後の構造主義とか精神分析とか、20世紀の哲学界への影響は、計り知れないんです。
ただ、ソシュールが思い描いていた言語システムについては、誰も引き継いでいないんですよ。

たぶんねぇ、言語システムといっても、どんなものを作ればいいのか、ソシュールすらも具体的に想像できてなかったんじゃないかなって思います。

何でこんな風に思うかって言うと、最近、たまたまソシュールについて調べてましてね。
どうも、僕らが作ってるマインド・エンジンって、ソシュールが作ろうとしてた言語システム、ラングその物じゃないかって気づいたんですよ。

マインド・エンジンのコアが何かって言うと、それは、ヴァーチャル・マシンです。
言ってみれば、コンピュータその物です。
19世紀に、ヴァーチャル・マシンを設計するなんて、絶対に無理です。
でも、ヴァーチャル・マシンって概念があって、初めて、言語システムが作れるんです。
これが、今回のテーマです。
ソシュールが夢見た言語システム
ヴァーチャル・マシンを全て解説します。
それでは、始めましょう!

前回、第224回「主観の仕組み、全部見せます」では、バージョンアップしたマインド・エンジンの全体の動きについて説明しました。
さて、言語学とマインド・エンジンの一番の違いって何かわかりますか?
それは、何を中心に考えるかです。
言語学が中心に考えるのは、単語とか文法といった言葉です。
でも、マインド・エンジンは、言葉を中心に考えません。
言葉は、システムへ入出力する時に使う記号にしか過ぎません。
じゃぁ、何を中心と考えてるでしょう?

それは、仮想世界です。
意識や主観が感じる世界です。

つまり、言葉は、主観が感じる仮想世界を創るための記号です。
その視点が重要なんです。

それでは、その視点で、マインド・エンジンを見て行きましょう。
これが、前回お見せした、マインド・エンジンの仮想世界ウィンドウです。

(りんごが落ちた動画のあとに、以下のセリフを流す)
「リンゴが手から落ちました」って文を実行したところです。

これが、主観が感じてる世界ってわけです。
人が、「リンゴが手から落ちました」って文を読んで、頭の中んで思い描いてる光景といえば、納得しますよね。
ただ、この画面は、あくまでも、デモとして、皆さんに見せることを前提にしたものです。
重要なのは、その裏で動いてるシステムです。

それじゃ、裏で動いてるシステムって、どんなものでしょう?
はい、これが、システムの構成図です。

よく見てください。
このシステム、単語とか文法とか、出て来てないですよね。
もちろん、単語や文法も必要なんですけど、それは、細かい話なので、この図では省略してます。
それよりも、一番重要な部分を中心に描くと、こんな感じになるわけです。
一番重要なものって言うのが仮想世界です。

それでは、順番に説明していきます。
まず、自然言語で文が入力されます。
最初に入力されるのが「スーパーがあります」って文です。
これを中間言語に変換します。
具体的に何をするかと言うと、まず、入力文を「スーパー/が/あり/ます」とかって単語に分割します。
これを形態素解析って言います。
次に、どの語がどの語に係ってるかっていう構文解析をします。
この場合だと、「スーパー」が「ある」に係るわけです。
ここまでの処理は、従来の自然言語処理でやってることと同じです。
というか、従来の自然言語処理だと、ここが中心なんです。

でも、この図を見たらわかると思いますけど、マインド・エンジンは、この部分は、ほんの入り口なんですよ。
こっからが、まだ、誰も見たことがない、言語システムの中枢です。

つぎは、中間言語をプログラムへ変換します。
これは、第207回からの新マインド・エンジンシリーズで説明した専用のプログラム言語のことです。
仮想世界を直接操作できる言語として、僕らは、専用のプログラム言語を作りました。

それじゃぁ、さっそく、変換したプログラムを見てみましょう。

@domain “Physics3D”読まない
Let a = new Physics3D.Supermarket();

これが、「スーパーがあります」のプログラムです。
まず、これをどうやって生成したか見て行きます。
中間言語で分割された「スーパー」って単語を、このオントロジーデータベースから検索します。
オントロジーデータベースというのは、単語を登録したデータベースです。
第219回「みんなで、脳みそを作ろう!」で説明したツールで登録されます。

これを見れば分かると思いますけど、スーパーって単語は店舗とis-aの関係になっていて、店舗は具象物とis-aの関係となっていますよね。
is-aの関係っていうのは、概念の上下関係を表していて、具象物というのは、最も上位概念となります。
なんの最上位概念かというと、左に書いてますけど、「三次元世界」です。
どういうことかと言うと、この三次元世界には、机とか椅子とか、いろんな物体が存在しますよね。
最上位概念というのは、そんな、あらゆる物体が持つ最も基本となるものです。
あらゆる物体が持つ属性として、たとえば色とか形がありますよね。
これはオブジェクトのプロパティになります。
それから、あらゆる物体が取り得る動詞として「ある」ってのがありますよね。
「机がある」とか「椅子がある」の「ある」です。
これは、オブジェクトのメソッドになります。
だから、この具象物をクラス図で表示するとこうなります。

まぁ、この辺りの細かい話は、プログラムに興味ない人は無視しても構わないです。

それじゃぁ、さっきのプログラムをもう一度見てみましょう。
まずは、1行目の、@domain “Physics3D” です。
これは、ドメインが3次元世界ってことです。
ドメインってのは、世界のことです。

次の行は、
Let a = new Physics3D.Supermarket();
です。
newって言うのは、オブジェクトを生成するっていう意味で、3次元世界にスーパーマーケットオブジェクトを生成するって意味です。
つまり、「スーパーがある」って意味になります。

こうやって、プログラムに変換して、それが仮想世界モジュールに送られます。
そして、いよいよ、プログラムが実行されるわけです。

ここで重要になって来るのが、実行ていう概念です。
実行っていう概念は、コンピュータが発明されて、初めて生まれた概念です。
いきなり、3次元世界の実行の話をすると、分かりにくいので、コンピュータで一番馴染みのある計算で説明します。

計算の世界には、数字と、足し算とか引き算って演算子があるわけです。
その組み合わせが計算式です。
たとえば、「1+2」です。
その計算式を実行すると、計算世界が変化します。
「1+2」を実行すると、「3」になります。
これ、頭で計算しても「3」になりますよね。
僕らの頭で処理するのと同じことを、コンピュータでも処理できたってわけです。
言い方を変えれば、このコンピュータは計算世界を理解してるとも言えます。
これが実行って概念です。

それと同じことを3次元世界でも実行するわけです。
3次元世界って世界があるわけです。
計算世界の計算式に該当するのが、プログラムです。
今の場合、
Let a = new Physics3D.Supermarket();
ってプログラムです。
これを実行すると、3DCGのスーパーマーケットが生成されるわけです。
人が、「スーパーがある」って文を読んで頭で想像するのと同じことを、コンピュータでも実行できたわけです。

もう少し考えてみますよ。
人は、物体の色や形を考えることができますよね。
それと同じことが、3DCGで生成したオブジェクトでもできます。
それは、オブジェクトの色プロパティや形プロパティにアクセスすることです。
人が頭で思い描くのと同じことがコンピュータでもできたというわけです。
つまり、このコンピュータは3次元世界を理解してるわけです。
プログラムは文字で書かれてます。
それを実行してオブジェクトを生成することで、意味が理解できるようになったわけです。
文字で書かれた文を理解するとは、こういう事なんです。

こういう考え方、今までの言語学や自然言語処理にはなかった考えです。
今までやってたのは、動詞を過去形に変形するとか、語順を入れ替えるとか、あくまでも文字自体を操作するってことでした。
マインド・エンジンがしてるのは、文字の操作じゃなくて、仮想世界に生成したオブジェクトの操作なんです。

人が、文を読んで実行するのは脳です。
プログラムを実行するのはコンピュータです。
細かく言えば、CPUといったハードウェアが実行します。
CPUが脳に対応するわけです。
ただし、マインド・エンジンでは、CPUをソフトウェアで模倣したヴァーチャル・マシンが実行します。
はい、ここでヴァーチャル・マシンが出てきましたね。
ここ、もう少し詳しく説明しますよ。

マインド・エンジンのやることを一言で言えば、「プログラムを実行して仮想世界を操作する」です。
中心となるのは、この図の仮想世界モジュールです。
仮想世界は、三次元世界だけでなく、所有権世界とか、色々あります。
同じオブジェクトでも、世界によってプロパティやメソッドが異なります。
たとえば、リンゴの場合、三次元世界のリンゴオブジェクトは、色と形ってプロパティがあります。
所有権世界のリンゴオブジェクトなら、所有者ってプロパティがあります。
これらは、データです。
人間でいえば記憶です。
これらのデータは、世界ごとに分けて保存されてます。
三次元世界のデータが保存されてるのが3Dライブラリです。
所有権世界のデータが保存されてるのが、所有権世界ライブラリです。

具体的には、3Dライブラリには、リンゴの3Dデータとかスーパーマーケットの3Dデータがファイルとして保存されてるわけです。
その3Dデータを呼び出すと、3Dのスーパーマーケットが仮想世界ウィンドウに表示されるわけです。

これで、ようやく、ヴァーチャル・マシンの説明ができます。

Let a = new Physics3D.Supermarket();

このプログラムの意味は、「三次元世界にスーパーマーケットを生成せよ」って意味です。
ヴァーチャル・マシンは、このプログラムを読み込むと、3Dライブラリを検索して、スーパーマーケットの3Dデータを読み出してオブジェクトとして生成します。
すると、仮想世界ウィンドウに3Dのスーパーマーケットが表示されるわけです。
つまり、ヴァーチャル・マシンは、プログラムを解釈して、それを仮想世界に生成するわけです。
このことを「実行」と言います。
別の見方をすれば、言葉を仮想世界に変換するとも言えます。
このヴァーチャル・マシン、ここが、マインド・エンジンのコアです。
ソシュールが作りたかった言語システム、
具体的に何をやってるのか、ようやく見えてきましたよね。

この話、まだまだ続きます。
続きは、次回、お送りしますね。
はい、今回の動画がおもしろかったらチャンネル登録、高評価お願いしますね。
それじゃぁ、次回も、おっ楽しみに!