12月31日,“智源论坛Live”第3期邀请到清华大学自然语言处理与社会人文计算实验室在读博士生,开源工具OpenHowNet、在线系统万词王(WantWords)的主要开发者岂凡超,分享关于《义原知识库的应用和扩充》。
直播开始前,在对岂凡超的采访中,凡超表示,科研工作者没有假期,致力于把研究工作做到极致!正是这种科研精神,才让我们有了2019年最后一天如此精彩的跨年直播。
下面是岂凡超主题分享的精彩要点。
《义原知识库的应用和扩充》内容要点
01
数据驱动+知识指导的自然语言处理
目前基于深度学习技术的数据驱动的自然语言处理研究已经取得了巨大突破。深度学习能够将不同粒度的语言单元映射到统一的低维实值语义表示空间,捕捉其间复杂的语义关联,进而用于各项自然语言处理任务。
然而,数据驱动的自然语言处理同样面临巨大的挑战。首先,对自然语言的深度理解往往需要人类知识的支持,比如图1中的例子,对于同样一句话“这个夏天就像烤箱一样”,考虑不同类型的人类知识,就会有不同角度的理解——这样的深度理解仅凭数据是无法实现的。其次,在少数据情形下,深度学习模型往往性能不佳,而引入人类知识可以有所助益。因此,知识的指导对于自然语言处理十分重要。
图1:数据驱动的自然语言处理面临挑战
从另一方面,自然语言文本数据中蕴含丰富的语言知识和世界知识,我们从数据中可以获取知识,进而扩充、更新知识库,因此数据驱动和知识指导可以互相增强,两者缺一不可,同时兼顾才能更好地解决自然语言处理问题。
02
人类语言最小的语义单位——义原
自然语言处理研究不同粒度的语言单位,大到文档、篇章,小到短语、词。词是最小的能够独立运用的语言单位,也往往是自然语言处理研究中最小的有意义的处理单元。但从语义层面讲,词还可以细分成义项,义项也可以细分成义原。
义原是人类语言最小的语义单位。有语言学家认为所有词语的语义都可以由有限的义原组合而成,例如“男孩”这个词的意思可以由“人类”、“男性”、“儿童”这三个义原的组合所表示,“女孩”则可以由“人类”、“女性”、“儿童”的组合来表达,并且有语言学家进一步认为义原体系在任何语言中都是适用的,并不与特定语言相关。
图2 HowNet中的义原标注示例
为了将义原的语言学理论付诸实践,董振东和董强父子花费数十年时间构建了著名的义原知识库——知网(HowNet)。HowNet预定义了两千多个义原,并用其标注了十万多个中/英文词语。每个词语的每个义项都用若干义原标注以表达其语义。图1给出了一个HowNet中义原标注的例子,“husband”这个多义词在HowNet中有“丈夫”和“节俭”两个义项(意思),其中“丈夫”这个意思被标注了“人类”、“家庭”、“男性”、“配偶”这四个义原,而“节俭”这个意思则被标注了“节约”这一个义原。
HowNet这样的义原知识库从理论上讲有其独特的优势。
其一,在自然语言理解方面,义原更贴近语义本质。和WordNet等词级别的知识库不同,HowNet这样的义原知识库突破了词的屏障,是深入了解词背后语义信息的重要通道。现有的基于义原的词相似度计算、基于义原的神经语言模型等工作都是利用了义原的这一特点。
其二,在融入深度学习方面,义原知识库具有无可比拟的优势。HowNet关注关注义原→词的语义组合关系,而一个词往往对应现有深度学习模型的一个处理单元,该词的义原可直接作为语义标签引入对应的处理单元之中——这是其他词级别知识库无法做到的。
其三,在低数据情形下,义原知识库有助于解决深度学习模型效果不佳的问题。因为义原数量有限,一般均可以得到充分训练,训练好的义原可以缓解低数据情形下模型训练不足的问题。换言之,义原可以作为模型从高数据情形到低数据情形迁移的桥梁。这一特点最典型的应用便是词表示学习——义原的引入可以提高低频词的词向量效果。
图3 HowNet和义原的应用
HowNet和义原的优势也在近年来经过了大量实证研究的验证。图3列出了部分义原在自然语言处理研究中的应用的论文,更完整的列表可以查看github.com/thunlp/SCPapers。
接下来,演讲者分别从义原知识库的应用(义原知识指导的自然语言处理),和数据驱动的义原知识库自动扩充这两个方面对三项义原相关的研究进行了详细介绍。
03
HowNet和义原的应用——语义组合建模
这项研究以长文的形式发表在ACL 2019,并且进行了口头报告。
语义组合指的是复杂语言单元的语义可以由它的组成部分的语义组合而得到的语言现象,目前已经在语言模型、句法分析、情感分析等多项自然语言处理任务中得到应用。
图4 复合词表示学习的基本框架
目前研究最多的是词级别的语义组合,主要研究问题是复合词(Multiword Expression, MWE)表示学习。这一问题的基本框架如图4所示,然而在现有的相关研究中,大多数尝试使用更复杂的语义组合函数f,一些研究引入了组合规则R,几乎没有研究考虑外部知识K。究其原因,没有合适的外部知识是主要问题。而义原恰好可以作为合适的外部知识引入语义组合建模之中。
图5 基于义原的语义组合度计算规则
首先一个语义组合度计算的验证性实验对义原在语义组合建模中的有效性进行了初步验证。所谓语义组合度也称作语义透明度,指的是语义组合程度,也即复合词的语义有多大程度上来自其组成成分的语义。例如图5中,“农民起义”的语义组合度最高,因为它的语义完全等于“农民”和“起义”的语义的组合。基于义原的语义组合度计算规则在图5中的左边第二列,发现按照这个规则计算得到的语义组合度和人标注结果的一致性非常高(Pearson相关系数达到0.75,Spearman秩相关系数达到0.74),这初步说明了义原在语义组合建模中的有效性。
图6 融合义原的语义组合模型
这篇论文继而提出了两种不同的融合义原的语义组合模型来学习复合词的表示,如图6所示。第一个模型简单地把复合词中的组成成分的义原向量求和然后拼接到组成成分的词向量,进而通过神经网络模型得到复合词向量;第二个模型则是考虑到复合词中的组成成分在不同的复合词中会表达不同的语义,相应地其义原也应该有不同的权重,于是这个模型额外引入了互注意力机制,动态地调整义原向量的权重。
在实验中,无论是内部评测(复合词相似度计算)还是外部评测(复合词义原预测),融合义原的语义组合模型都取得了更好的效果。
论文地址与项目地址
扫描上方左边二维码可以看到这篇论文(aclweb.org/anthology/P19-1571.pdf),右边二维码则是包含这篇论文所有代码和数据的GitHub项目地址(github.com/thunlp/Sememe-SC)。
04
HowNet和义原的应用——反向词典
这项研究相关的论文已经被AAAI-20接收。
图7 反向词典示例
这项研究提出了一个新的反向词典模型。反向词典顾名思义,以对目标词语义的描述为输入,输出目标词以及其他符合描述的词语。反向词典有重要的实用价值,其最大的用处在于解决舌尖现象(Tip of the tongue),即话到嘴边说不出来的问题。此外,反向词典也可以为掌握词汇不多的新语言学习者提供帮助,让他们学习、巩固尚不了解的词语。最后,反向词典还可以帮助选词性命名不能(word selection anomia)的患者——他们知道想说的词语的意思但无法主动说出来。反向词典同样具有自然语言处理研究价值,比如可以用于评测句子表示学习模型,辅助解决问答、信息检索等包含文本到实体映射的任务。
现在已经有一些投入使用的商业化反向词典系统,其中最著名、最流行的是OneLook,但其背后的实现原理尚不得知。
在学术研究领域,目前有两类反向词典实现方法。第一类为基于句子匹配的方法,该方法在数据库中存储足够多的词语及其定义,当进行反向词典查询时,在数据库中检索与输入描述最相似的定义并返回所对应的词语。然而反向词典的输入描述非常多变,往往与已存储的词典定义有巨大差别,这种方法很难解决这一问题。
另一类基于神经语言模型的方法由Bengio等人提出,该方法使用神经语言模型作为编码器将输入描述编码到词向量空间,返回与之最近的词向量对应的词语。近年来有很多反向词典研究基于这种方法,尽管这种方法避免了第一类方法面临的输入描述多变导致的性能较差的问题,然而考虑到相当一部分词是低频词,其词向量的学习效果往往较差,在查询这些词时,基于神经语言模型的方法的性能也不甚理想。
图8 人的描述→词的推断过程
为了解决第二类方法的问题,受人的描述到词的推断过程的启发,该文提出了多通道反向词典模型。以图8为例,当人看到“road where cars go very quicklywithout stopping”这条描述时,除了直接猜目标词以外,还可以推断出目标词应具有的一些特征,比如词性应为名词,词的类型应为实体,以及大概率具有“way”这个词素。
受此启发,该文提出的模型在对描述编码后直接进行词预测的基础上,额外增加了四个特征预测器。该文将每个特征视作一个信息通道,四个通道可分为两类:(1)内部通道,该类通道预测词本身的特征,包括词性(part-of-speech)和词素(morpheme);(2)外部通道,该类通道预测外部知识库提供的词的特征,包括词类(word category)和义原(sememe)。其中词类信息可由WordNet或同义词词林提供,义原由知网(HowNet)提供。
图9 文中的多通道反向词典模型图
图9为该文所提模型的图示。该模型以基于注意力机制的双向LSTM对输入定义或描述进行编码得到句子表示,除了用该句子表示直接预测目标词之外,还对目标词的词性(POS)和词类(category)进行预测。而对于另外两个特征词素(morpheme)和义原(sememe)的预测,则采用了不同的方法。考虑到词的词素或义原和词的描述/定义中的词存在一种局部语义对应关系——如图7中的例子中“expressway”的“express-”与“quickly”、“-way”与“road”分别对应,且义原也有类似的对应关系——因此对于这两个特征的预测,该文用每个词的隐状态(hidden state)分别预测然后对预测分数做max-pooling来得到最终的预测分数。这些特征的预测分数会按一定比例加到符合该特征的词语的预测分数上,得到最终的词语预测分数。
该研究在英文、中文多个数据集上进行了实验,发现每个特征预测器的增加都会提高反向词典模型的效果,而包含所有特征的多通道模型得到了最好的性能,不但超过了此前最佳模型(state-of-the-art),而且在真实场景数据集上甚至超过了最流行的反向词典系统OneLook。
论文地址与GitHub项目地址
该文论文已经公开在arXiv:arxiv.org/pdf/1912.08441,代码和数据已经放在
GitHub:github.com/thunlp/MultiRD。
图10 万词王在线反向词典系统
另外,基于论文所提模型的在线反向词典系统——万词王(WantWords)也已经上线:wantwords.thunlp.org/。如图10所示,该系统是第一个中文反向词典系统,而且同样支持英文反向词典功能,且效果比最流行的OneLook要好。甚至还支持英汉、汉英跨语言反向查词。在查词结果中,能够显示候选词的词性、定义等基本信息,且支持按照词性、单词长度、词形等对候选词进行筛选,助你更快找到你想要的词。
05
义原知识库的扩充:基于BabeNet的多语言义原知识库构建
这项研究相关的论文已经被AAAI-20接收,并且将作口头报告。
HowNet仅为中英两种语言的词语标注了义原,而其他语言并没有像HowNet这样的义原知识库。这导致义原在自然语言处理的应用范围被大大局限——也是此前义原主要被用于中文自然语言处理任务的原因。
为了解决这一问题,有人提出跨语言词语的义原预测,旨在通过双语词表示对齐的方式为其他语言的词语预测义原。但这种方法一次只能为一种语言的词语预测义原,不是非常高效,并且该方法无法进行义项层面的义原预测。
图11 BabelNet Synset及其义原标注示例
和跨语言词语义原预测的思路不同,该文提出基于BabelNet来构建多语言义原知识库的方案。BabelNet是一个多语言百科词典,由BabelNet synset组成,每个synset包含意义相同的不同语言的词语,图11给出了一个例子——这个synset包含英语、汉语、法语、德语等各种语言表示“丈夫”这个意思的词语。一个synset中不同语言的词语都应该被标注同样的义原,换言之,直接为BabelNetsynset标注义原就可以同时为多个语言的词语标注义原,从而高效地构建一个多语言义原知识库。除了高效之外,基于BabelNet来构建多语言义原知识库的方案还有其他好处:直接将义原标注在义项层面;BabelNet蕴含的丰富的信息都可以为义原预测所用——包括维基百科、WordNet、FrameNet等等。
为了推进大规模多语言义原知识库的构建,该研究首先标注了一个种子知识库BabelSememe。它包含约一万五千个synset,每个synset由人工标注了若干义原。由于此前义原的结构鲜少被使用,同时为了节省成本,BabelSememe的标注暂时忽略了义原的结构。图11给出了“丈夫”对应的synset被标注的4个义原。
有了种子知识库,下一步就是基于有义原标注的synset,为无标注的synset标注义原,进而将种子知识库不断扩充成最终的大规模义原知识库。
该研究提出了两种synset义原预测的方法。
第一种方法的思路非常直观,即意思相近的synset其所标注义原也应该相似——这和推荐系统中常用的协同过滤方法非常类似。其中synset之间的相似性利用了BabelNet提供的NASARI synset embedding的余弦相似度衡量。
图12 利用Synset之间的关系与其义原之间的关系相一致的特性进行义原预测
第二种方法利用了synset、义原之间的语义关系。BabelNet包含很多synset之间的关系,例如同义、反义、上下位等。与此同时,HowNet也定义了若干种义原之间的关系,那么自然地,synset之间的关系和synset所标注的义原之间的关系应该是对应的,利用这种性质便可以进行义原预测。例如,图12中better和worse这两个synset存在反义的关系,他们分别被标注了superior和inferior这两个同样存在反义关系的义原。那么,在已知better和worse、superior和inferior这两对反义关系,以及better有superior这个义原,很容易推测出中worse含有inferior这个义原。
基于此,这篇论文建立了一个语义图,节点有synset和义原两种,关系有三种:synset之间的关系、义原之间的关系以及synset和义原之间被标注的关系(hava_sememe)。synset义原预测也就转化为了知识图谱中实体预测的任务,即给定头实体——待预测义原的synset,给定关系have_sememe,预测尾实体义原。这篇论文利用了知识图谱任务中最经典的TransE模型来学习这些实体和关系的表示以进行预测。此外,考虑到synset义原预测任务的特殊性,还额外引入了一个语义相等约束。词的语义可以由其义原组合而成,synset也有类似的性质,因此文中提出synset向量与其义原向量之和有一个语义相等的关系,并且在模型训练时额外引入这一语义相等约束。
该研究在BabelSememe上进行了实验,发现两种方法均取得了令人满意的结果,并且还可以将两种方法集成获得更好的义原预测效果。
论文地址与GitHub项目地址
该文论文已经公开在arXiv:arxiv.org/pdf/1912.01795,代码和数据也已经放在GitHub:github.com/thunlp/BabelNet-Sememe-Prediction。
06
OpenHowNet——开源的义原在线查询网站和API
HowNet提供的词典只提供了词语义原的序列定义,较难清楚地看出义原的关系和结构。清华大学自然语言处理与社会人文计算实验室与董振东、董强父子联合将HowNet开源,而且开发了开源的义原在线查询网站和API OpenHowNet。
图13 OpenHowNet网站提供的词语义原树示例
OpenHowNet网站提供词语义原查看的功能,支持中英双语查询,并且将词语的义原以树状的形式展现,更加清楚明晰。
图14 OpenHowNet API提供丰富的义原查询功能
而OpenHowNet API则提供了便捷而丰富的义原信息查询功能,可以使用pip安装,并且在GitHub的项目主页上提供了详细清楚的文档和丰富的使用示例。
07
总结和展望
义原知识库作为一种独特的知识库,有深厚的语言学理论支撑,在深度学习时代相比于其他知识库具有得天独厚的优势,因此近年来有不少工作探索了义原知识库在不同的自然语言处理任务中的应用,并且都取得了很好的效果,实证了其在自然语言处理中的有效性。相信将来义原知识库的相关研究会更加广泛和深入,其巨大的应用价值也会愈发展现。
- 往期文章 -