動詞が必要だった。
AIに世界を記述させるには動詞がなければならない。「李舜臣(イ・スンシン)が亀甲船を造った」で「造った」がなければ文にならない。
エンティティの識別にはWikidataがある。李舜臣はQ28090だ。亀甲船はQ249845だ。識別は済んでいる。
動詞にはこれに相当するものがない。「造る」のIDがない。「造る」と「製作する」と「生産する」が同じ意味なのか違う意味なのか、合意された基準がない。
動詞を扱うプロジェクトは──知識グラフであれ、意味検索であれ、構造化された言語設計であれ──必ずこの問いに突き当たる。動詞体系をどこから持ってくるのか。
自分で作ると
動詞リストを一から設計することはできる。
move、give、think、feel、say。基本動詞を50個ほど決め、その下に子動詞を付けていく。moveの下にwalk、run、crawl。giveの下にdonate、bestow、grant。
三つの問題が生じる。
第一に、漏れる。人が頭の中で動詞を列挙すれば、必ず漏れが出る。「吸着する」を漏らし、「反芻する」を漏らし、「諦める」を漏らす。漏れた動詞が必要になった瞬間に体系が壊れる。
第二に、基準がない。walkとstrollは別の動詞なのか、同じ動詞の変形なのか。自分で作ると、この判断が設計者の直感に依存する。直感は人によって異なる。
第三に、階層が恣意的になる。walkをmoveの下に置いたが、walkはtravelの下位でもある。どこに置くかを設計者が決める。その決定に根拠がない。
自作の動詞体系は、設計者の頭の中では完璧だ。他の人が見れば「なぜこう分類したのか」となる。
WordNetという遺産
プリンストン大学で1985年から構築が始まった英語語彙データベース。
40年間、言語学者が英語の単語を意味単位(synset)でまとめ、上下位関係で結んできた。動詞だけで13,767個のsynsetがある。各synsetに固有のIDがあり、定義があり、他のsynsetとの関係が明示されている。
「donate」と「bestow」は同じsynsetにまとめられている。同じ意味だということだ。 「donate」は「give」のtroponymである。giveの具体的な形だということだ。 「give」は「transfer」のtroponymである。transferの具体的な形だということだ。
この階層が13,767個の動詞について、すでに整理されている。
漏れがない。40年間、言語学者が埋めてきたから。 基準がある。synsetの定義と関係が明示的だから。 階層に根拠がある。troponym関係が言語学的分析に基づいているから。
辞書と文法は別物だ
WordNetが動詞の辞書だとすれば、その動詞をどう使うかは別の問題だ。
WordNetは「give」がどういう意味で、「donate」とどういう関係かを教えてくれる。しかし「give」を文中でどう使うか──誰が与え、何を与え、誰に与えるのか──の構造までは教えてくれない。
これはWikidataと同じ関係だ。Wikidataは李舜臣がQ28090だと教えてくれる。しかし李舜臣についての文をどう構成するかはWikidataの役目ではない。
辞書は借りるが、文法は自分で作る。
WordNetから取るもの:synset ID、意味定義、troponym階層ツリー。WordNetが併せて提供するverb frameや参与者構造、構文パターンは、各プロジェクトが自前で設計する方がよい。WordNetの構文情報は英語に依存しており、動詞の意味体系と動詞の使い方は別の問題だからだ。
13,767個から10個まで
WordNetの動詞13,767個をすべて並べても意味がない。構造が必要だ。
WordNetのtroponymツリーを上へたどっていくと、それ以上登れない最上位ノードがある。ルート動詞。これが559個だ。
559個を意味的にまとめると、68個の下位原型(sub-primitive)になる。 68個をさらにまとめると、10個の原型(primitive)になる。
13,767 動詞 → 559 ルート → 68 下位原型 → 10 原型
BE — 存在、保有、位置
PERCEIVE — 知覚、感知、発見
FEEL — 感情、好悪、欲求
THINK — 思考、判断、記憶
CHANGE — 変化、開始、終了
CAUSE — 行為、生成、破壊
MOVE — 移動、到着、離脱
COMMUNICATE — 発話、表示、合意
TRANSFER — 伝達、受取、交換
SOCIAL — 協力、競争、所属
この10個が人間の動詞の意味原型だ。一人の直感ではなく、WordNet 40年の蓄積、13,767個のデータの構造から導かれたものだ。
この4段階の階層──原型、下位原型、ルート、個別動詞──は解像度の調整が可能だ。粗く見れば10種類の行為があり、精密に見れば13,767種類の行為がある。必要な解像度で切ればよい。
拡張と圧縮
13,767個では足りない?新しい動詞を追加できる。多言語動詞、新語、専門用語。該当する下位原型に追加すればよい。既存の体系は壊れない。
13,767個が多すぎる?同義のsynsetを一つに統合できる。donateをgiveへリダイレクトすればよい。以前donateで記録されたデータはgiveを見つけに行く。HTTP 301と同じ原理だ。
重要なのは順序だ。まず全部入れ、実際に動かし、使用データを見てから削る。データなしに机上で削ると、必要な区別を捨ててしまう。
その先へ:意味原子
WordNetの13,767個の動詞は、人間が名前を付けた動詞のリストだ。包括的だが、これがすべてではない。
「give」をさらに分解できる。CAUSE + HAVE + MOVE。意味原子(semantic primitive)への分解だ。この分解が完了すれば、リストにない動詞も原子の組み合わせで表現できる。
WordNetが標準ライブラリなら、意味原子体系はコンパイラだ。標準ライブラリにない関数もコンパイラが作れるように。
これは大きな研究課題であり、WordNetベースの体系が動いた後に試みるべきことだ。今は標準ライブラリで十分だ。
まとめ
動詞体系を築こうとするあらゆるプロジェクトが、同じ問いに突き当たる。どこから持ってくるのか。
自分で作れば漏れ、恣意的になり、根拠がない。 WordNetの上に築けば漏れず、合意があり、データから来る。
WordNetは40年間、言語学者が蓄積してきた人類の動詞辞書だ。 この辞書の言葉を借りるが、文法は自分で作る。 これがエンティティにWikidataを使う理由であり、動詞にWordNetを使う理由だ。