動詞が必要だった。

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を使う理由だ。