パターンマッチ

Racc を使ってみて分かったのが、パーサーはひたすらパターンマッチをおこなうプログラムだということだ。入力された文字列はまずスキャナでトークンの列に変換されるが、パーサの仕事はそのトークン列をひたすらパターンマッチし続けることなのだ。

パターンマッチという観点から見ると、構文解析プログラムとパーセプトロンとはよく似ているように見える。スキャナが文字列をトークンの列に変換するように、パーセプトロンの入力層の出力も中間層のセルの出力に変換される。また、トークン列をパーサがパターンマッチするように、中間層の出力もパターン分析されて出力層の出力になる。

構文解析では、スキャナは必須かというと、実はそうではない。パーサが入力されるあらゆる記号に対する文法を持っていれば、スキャナは必ずしも必要ではない。しかし、間にスキャナを介在させることによって、パーサの文法規則の数は、圧倒的に少なくなる。

ところで、スキャナもそのプログラムを見ると、パターンマッチ機械なのだ。したがって、スキャナとパーサを組み合わせた構文解析プログラムは、二階層のパターンマッチ機械なのだ。これは、入力層と中間層と出力層からなるパーセプトロンとその意味において同じものなのである。

ところで、出力層の出力に対して外部からのフィードバックをかける教師つきパーセプトロンは学習をすることができる。そうであれば、パーサに外部からの入力をフィードバックすることによって学習するパーサを作ることができるのではないだろうか。文法をあらかじめ提示しておかなくても、学習によって文法規則を学習していくパーサである。そんなパーサを十分に学習させた後、文字列を入力したときにどのような動作をするのかと考えると面白い。

パターンマッチが、学習や思考のセントラル・ドグマなのだろうか。
[PR]
by tnomura9 | 2006-04-13 21:11 | 考えるということ | Comments(0)
<< 慣性と陥穽 TOC(制約理論)の事例 >>