2011年2月24日木曜日

SymbolistからConnectionistへ

Connectionist(コネクショニスト)とSymbolist(シンボリスト)という構図を考えた場合に、自分はSymbolistという立場をずっととってきていたが、最近は、次第にConnectionist的な考えになってきている。
先日の記事にもそれが現れてきている)

ざっくりといえば、統計処理なのか、論理処理なのかという違いとみることができる。(異論はあるでしょうが…)
すべでの単語を取り出して、それらの関係を明確にして、同義関係・類義関係・階層関係などを定義して、それらを操作するルールを定義することで、その文・文章を理解することができると考えてきていた。

しかし、それがなかなかうまくいかない。
例をあげてみよう。「警察の犬」と言った場合に、どういう意味を持つだろうか。
警察犬?それとも、警察の手下といったような意味?

それは、その会話の中における、いわゆる文脈に依存するのだろう。
同様に単語の区切り位置も文脈によって変わってくることがある。

すべての文脈を抜き出して、それらをルール化すればいいのだろうか?

人間がその文を理解するときに、そんなに膨大なルールを参照しているというようなことがあるのだろうか。少なくとも自分にはその自覚はない。

大まかなイメージとしては、ある単語(あるいは概念)ノードが発火しており、会話によって、信号が別の単語(概念)に伝達し、意味をそのネットワーク全体が意味を構成しているというような印象を持っている。

まさに、Connectionist的な考え方だろうか。

そこで、コーパスから共起関係を抜き出して、それによって信号の伝達経路を定義し、簡単な実験を行ってみた。想像できるとおり、こんな簡単な仕組みでは、簡単な例ではそれなりの結果は出てくるが、ちょっと複雑な例ではうまくいかない。

実は、ここに罠があって、形態素解析を使って、共起関係を作成している。
形態素が確定してしまった段階で、自由度がある程度制限されているのだろう。

必ずしも、人間と同じ仕組みを構築する必要があるとは思わないが、ある程度は参考にした方がいいのかもしれない。
今後も、さらに考察していきたい。