考察:「爆発の克服」

by ご近所のきよきよ



 未夢の改版も今度で5回目。慎重に仕様を検討しました。未夢の前バージョンでももう、永続化に当たっては爆発に対応するため、文を断片化して解析結果を纏めています。つまり、分かち書き化にあたって名詞は曖昧性が無いので、文内の名詞を最長一致でまず抽出し、文を分断しました。そして、助詞や助動詞、動詞、形容詞、副詞、接続詞の固まりを曖昧性を持って分かち書き化し、品詞を同定します。永続化単位をこの分断におくことで、だいぶ爆発問題が軽減しました。
 しかし、それも不十分ですし、係り受け解析(構文解析)でまた爆発してしまいました。この方式ですと、係り受け解析に当たって、分断を戻し、一文にしないといけないので、結局係り受け解析では曖昧性が爆発してしまったのです。
 そこで、曖昧性の組み合わせは徹底的に排除することに今回は決めました。分断を単語単位とし、品詞の曖昧性や多義語を一つの分断内に包容し、その隣接関係や、係り受け関係を連接情報として保持し、文として組み立てないようにする。すると分断単位である単語間には無数のポインタがはられ、関係づけられますが、データは組み合わせないので爆発はしません。
 いままで、曖昧性削減を文を構成して、その上でコーパスとマッチングを取ってプライオリティを評価していくようにしていましたが、今回は分断のままでポインタをたどって局地的に評価し、ポインタの刈り込みを行っていくことで爆発を阻止しながら今までと同じ処理を実現していくつもりです。最終結果はポインタで結ばれた分断点のものから適当に選んで一つだけ文を生成すればいいし、それがまた失敗したら、失敗した部分を同定し、ポインタ張りを刈り込んで、再度文を作っていくようにすればいいわけです。この部分はかなりインテリジェントが高いですが、プログラムのエラー処理そのものです。実現は可能でしょう。
 
 隣接情報で大いに曖昧性が低減します。たとえば「もらい」という単語は「貰う」という動詞と「ものもらい」の名詞と品詞上の曖昧性があります。この判別は後ろにくる助詞である程度判別できます。
(例文)ものもらいきた。 =>名詞であることは助詞「が」で判断できる。
(例文)ものもらい来た。=> 動詞であることは助詞「に」で判断できる。
 
 隣接関係の前後の情報も重要で、前よりも後ろが強い関係であるようです。
(例文)今日は医者へ行き、スーパーに行った。=>「行き」が動詞であるのは前に「医者へ」という格があることから判別できます。
(例文)今日は医者へ行きバスで行った。=>「行き」が名詞であるのは後ろに助詞「の」があることで判別できます。この「の」の関係は格情報よりも強い関係であることも分かります。
 
 こんな隣接関係は係り受け解析にも現れます。コーパスによる曖昧性低減では、意味との隣接関係も重要になってきます。こういう事を統一して扱うのは「鍵と鍵穴」手法が有効でしょう。動詞の活用形がどうだとか、この意味とこの単語の意味とは共起しているとか、バラバラに処理するのではなく、この鍵穴(キーホール)にはこの鍵(キー)がマッチしているから開けますというのがスッキリします。コーディングも楽になります。鍵穴は単語とか句、節に機械的に持たせていって、鍵は処理の途中、知識ベースの項目に持たせて、単に共起関係をチェックしていくことで、曖昧性の刈り込みができます。この鍵と鍵穴システムへの回帰は処理の爆発の回避のための行うことです。今までの未夢技術は関数型のアイデアで、順を追って曖昧性を刈り込んでいくことを考えていましたから、関数型の処理にはつきものの組み合わせ爆発から逃れられなかったのです。鍵と鍵穴手法で、関数型処理を止めても、整然と処理できるようになります。
 
 こんどこそ、真実の扉に手が掛かったでしょうか。スーパーコンピュータなら今の未夢で十分だとの思いがあって、これからどうしようかなと思ったものですが、今回考えた処方なら「FMV-BIBLO NE9/1130」でも対応できる問題になるでしょう。たぶん。なんか希望が見えてきましたね。ようやくトンネルを抜けることができますかね。頑張りましょう。
 



おわり