需要动词。

要让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个数据的结构。

这个四层层级——原型、下位原型、根动词、个别动词——可以调节分辨率。粗看,有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的理由。