スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

組み合わせ範疇文法のパーザをベイジアンネットで表現できるか?

先日、お茶の水大学の戸次先生および産総研の麻生さんと、
ベイジアンネットを使って自然言語理解が可能かどうかなどを議論させていただく
機会がありました。

私は、大脳皮質はベイジアンネットであり、言語野は大脳皮質なのだから、
ベイジアンネット(を多少拡張したもの)で自然言語理解は当然できるはずだ、
という立場です。
とはいえ、実際に作ろうとするといろいろ自明でない問題が多いのは確かです。

簡単にシステムを作って見せるわけにはなかなかいきませんが、
第一歩として、戸次さんの著書「日本語文法の形式理論」に出てくる
組み合わせ範疇文法(CCG)のパーザを、 prolog を使って書いてみました。

prolog は、双方向に推論できる点がベイジアンネットと似ているので、
書いてみれば問題点が浮き彫りになると思ったのです。

で、書いてみたのが以下のプログラムです。動かしてはいません。
そもそも私は prolog のプログラムを自分で動かした記憶もあまりないです。
そういう意味では、以下ゴミです。すみません。


動作概念のデータベース。6野。時系列のクラスタリングで教師なし学習。
eat(S, O) :- human(S), eatable(O).
eat(S, O) :- animal(S), eatable(O).

個々の名詞のカテゴリのデーターベース。クラスタリングで教師なし学習。IT野?
human(john).
human(taro).
animal(dog).
animal(cat).
eatable(apples).
eatable(oranges).

意味データベース。22野。
m('John', john).
m('eats', someoneEatSomething()).
m('apples', apples).

単語の統語範疇データーベース。44野?
c('John', np).
c('eats', s\np/np).
c('apples', np).

文法規則データベース。45野。
reduce(np, M1, s\np, M2, s, M) :- apply(M1, M2, M).
reduce(s\np/np, M1, np, M2, s\np, M) :- apply(M2, M1, M).

関数適用。
apply(someoneEatSomething(), P, eatSomething(P)).
apply(eatSomething(S), P, eat(S, P)).

パーザ。たぶん45野。
accept(C, [X], M) :- c(X, C), m(X, M).
accept(C, append([[X], Y], M)) :-
accept(CX, [X], MX),
accept(CY, Y, MY),
reduce(CX, MX, CY, MY, C, M).
accept(C, append([X, [Y]], M)) :-
accept(CX, X, MX),
accept(CY, [Y], MY),
reduce(CX, MX, CY, MY, C, M).

実行結果の予想。
| ?- accept(s, ['John', 'eats', 'apples'], M).
M = eat(john, apples) ?
yes
| ?- accept(s, S, eat(john, apples)).
S = ['John', 'eats', 'apples'] ?
yes




こうして書いてみると、動作概念、意味、統語範疇のデータベースは、
素直にベイジアンネットのノードで表現できそうです。
引数の atom は子ノードで表現され、親ノードは子ノードの情報をスパース符号化などを使って圧縮し学習します。

accept は再帰呼び出しをしているのでそのままではベイジアンネットにはなりませんが、
再帰的な構造を持ったベイジアンネットで実現可能ではないかと思っています。

一番の問題は apply ですね。
戸次さん、麻生さんからは、ラムダ式の獲得やベータ簡約が実現できるのかどうかが一番のポイントだと
指摘されたのですが、ようやく指摘されたことの本質が見えてきた気がします。

むずかしいのは自由変数と値を適切に結び付けられるかどうかです。
選択的注意で値を入れる場所を指定するのかもしれません。
自由変数の数と名前を固定するなどの制約を入れる必要があるのかもしれません。
いずれにせよ、ひとひねりかふたひねりすれば、なんとかなるのではないでしょうか・・・?

とりあえず今回はここまで。

コメント

コメントの投稿

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。