朱靖雯,杨玉基,许 斌,李涓子
(1. 北京信息科技大学 信息管理学院,北京 100192;2. 清华大学 计算机系知识工程实验室,北京 100084)
近年来,词向量技术的进步极大地促进了自然语言处理领域的发展。目前大部分研究者都是基于大规模无监督语料学习词语或义项级别的语义表示,这种基于上下文的学习方法倾向于把共现较多的词语或义项聚在一起,可以学习到好的上下文相似性,却难以捕获到好的语义相似性,尤其是在语料中出现频次较低的词语和义项的语义相似性。
为了学习到词语和义项的语义相似性,我们使用了语义信息最为丰富的中英文常识知识库HowNet[1]。在HowNet中,词语由一个或多个义项组成,而每个义项又由更小的语义单位(义原)和几十种动态角色组合而成。很多人基于HowNet开展了语义表示的研究[2-3],但是他们或是忽略了义原和动态角色之间的复杂结构[2],或是只能学习到词语级别的语义表示[3],并未充分学习到HowNet中蕴含的全部语义信息。
本文中,我们将HowNet中定义的各种关系和定义进行拆解,构建了包含HowNet全部信息的知识图谱HownetGraph。接下来,我们利用网络表示学习以及知识表示学习的方法,从HownetGraph中学习得到跨语言(中、英)、跨语义单位(字词、义项、DEF_CONCEPT和义原)的语义表示,并进行了词语相似度和词语类比的实验。实验结果表明,从HownetGraph中学习得到的语义表示较好地捕获到了HowNet的语义信息。
本文的主要贡献有:
(1) 将HowNet层层拆解,构建了一个跨语言(中、英)、跨语义单位(字词、义项、DEF_CONCEPT和义原)的常识知识图谱HownetGraph。
(2) 据我们所知,我们第一个同时学习到了HowNet的词语、义项、DEF_CONCEPT和义原等不同语义单位的跨语言(中英)的向量表示。
(3) 我们根据wordsim-353和wordsim-297数据集,构建出了中文语义相似度数据集wordsim-297-similarity,作为wordsim-297数据集的子数据集,细粒度评测中文词语的语义相似度。
(4) 我们在词语相似度和词语类比任务上进行了实验,中英文词语相似度和词语类比任务上的实验验证了所提方法的有效性。
本文结构如下: 第1节为相关工作部分介绍,第2节为HownetGraph的构建过程,第3~4节为通过实验和例子给出学习到的语义表示效果,最后是后续工作展望。
HowNet语义信息的丰富性引起了很多研究者的关注。刘群等提出基于HowNet的词汇语义相似度计算[3],他们将HowNet中的义原建成树状,通过构成词义项的义原的距离得到词义相似度,实验得到的词语相似度结果与人的直觉比较符合,但由于他们对每个词都只取了最常见的义项,而不是所有义项,因此对HowNet的义项描述信息并没有很好利用;梅立军等通过为同义词词林的每个词集确定一个义项描述,实现HowNet与同义词词林的信息融合[4];Sun J等提出基于HowNet的中文问题自动分类,将问题中的词对应义项的基本义原作为问题特征进行处理[5];Yan J等基于HowNet中事件类义原层次结构,创建了一个中文情感的领域本体[6];唐怡等提出了基于HowNet的中文语义依存分析,将句子转化为树状,并根据HowNet中的动态角色进行语义关系标注,实验结果标注比例高达91.5%[7];Liu J等提出用HowNet实现Word相似度计算的混合层次结构方法[8];向春丞等提出了HowNet与中文概念辞书(CCD)的映射方法,将HowNet中的词与CCD词典中的词进行映射[9];Niu Y等利用HowNet的义原提升词语的表示[2];Zeng X等则利用义原扩充中文LIWC(Linguistic inquiry and word count)词典[10]。上述工作涉及自然语言处理领域下的诸多子领域,说明了HowNet的重要价值。在语义表示领域,大部分研究学者都只是提取了HowNet中的部分信息,对于HowNet层次化的义项定义并未能很好利用,而这却正是HowNet的语义核心。
表示学习指的是将研究对象表示为稠密低维向量。本文的研究对象是HowNet的语义信息,故叫做语义表示学习。为了学习到语义表示,本文使用了网络表示学习和知识表示学习两类方法。
网络表示学习(network representation learning),指的是为网络中的每个节点学习到稠密低维的向量表示,从而使得在大规模网络上进行快速高效的算法成为可能。目前,效果比较好的网络表示学习模型为基于神经网络和深度学习的方法。DeepWalk模型[11]第一次将深度学习的方法引入网络表示学习领域,借鉴Word2Vec方法在网络上随机游走生成序列,从而可以直接利用Word2Vec方法学习到节点表示;LINE模型[12]通过对节点间的第一级相似度和第二级相似度进行概率建模,最小化该概率分布和经验分布之间的KL距离,得到好的节点表示;Node2Vec模型[13]是对DeepWalk模型的扩展,通过改变随机游走序列生成方式来优化节点表示效果。此外,还有Grarep模型[14]、GCN模型[15]、TADW模型[16]和Cane模型[17]等。
知识表示学习(knowledge representation learning)指的是为知识图谱中的节点和边学习到稠密低维的向量表示。学习了向量表示后,便可以基于向量表示去做知识图谱领域内关系预测等任务。近年来随着深度学习技术的不断发展,研究者们提出了一系列基于深度学习的知识表示学习方法。Bordes A等提出了一种简单且易拓展的模型,把知识库中的实体和关系映射到低维向量空间中,从而计算出隐含的关系的TransE模型[18]。随后,Wang Z等提出了对TransE进行优化后的TransH模型[19],解决了TransE对于一对多、多对一以及多对多关系处理效果不太好的问题。TransE和TransH模型默认实体和关系处于相同的语义空间,而事实上,一个实体是由多种属性组合成的综合体,不同关系关注实体的不同属性,因此,Lin Y等提出了对头实体和尾实体投影到关系空间中再做操作的TransR模型[20],在此基础上,后续又出现了TransD模型[21]、TranSparse模型[22]、TransG模型[23]、KG2E模型[24]等。
HowNet是一个以汉语和英语的词语所代表的义项为描述对象,以揭示义项与义项之间以及义项所具有的属性之间的关系为基本内容的常识知识库。在HowNet中,义原是最基本的、不易于再分割的意义的最小单位,词由义项组成,义项由义原定义。在HowNet数据文件[注]2012年版本。中,共包含118 347个中文词,104 027个英文词,212 541个义项,2 468个义原(包括实体、事件、属性、属性值、第二特征、专有名词和符号7大类)和116个动态角色。下面我们举例说明HowNet的语义组织模式。
如图1所示,“绿色”一词有两个义项,义项1指的是绿颜色,义项2指的是绿色环保。义项1的定义较为简单,只有1个基本义原“green|绿”,而义项2的定义较为复杂,有较多动态角色和义原的嵌套关系: 最外层的基本义原是“PropertyValue|特性值”,动态角色“scope”表示范围,来进一步说明“PropertyValue|特性值”,“scope”的宾语是“{protect|保护: patient={Environment|情况: host={entity|实体}}}”;次外层的基本义原是“protect|保护”,动态角色“patient”表示受事,修饰义原“protect|保护”,宾语是“{Environment|情况: host={entity|实体}}”;最内层的基本义原是“Environment|情况”,动态角色“host”表示宿主,修饰义原“Environment|情况”,宾语是义原“entity|实体”。总结地说,义项2的定义是: 绿色是一种特征值,这种特征值对应的范围是一种保护,这种保护的受事是一种情况,这种情况的宿主是实体。除了最重要的定义(DEF),每个义项还有一些其他的关系和属性,如义项2在数据文件里表示如图2所示。图2中,“NO.”表示这个义项的唯一标识符(id)是103130;“W_C”表示其中文词为“绿色”;“G_C”表示其中文词词性是形容词;“S_C”表示其中文情感标识为“PlusSentiment|正面评价”;“E_C”表示词语在短语中的例子;“W_E”表示其英文词为“green”;“G_E”表示其英文词性为形容词;“S_E”表示其英文情感标识为“PlusSentiment|正面评价”;“DEF”表示用动态角色和义原的组合来表示义项的定义。
图1 HowNet中词语、义项和义原的例子
知识图谱一般使用RDF(resource description framework)或者OWL(web ontology language)等语言来描述,后者比前者有更强的语义表达能力。由于HowNet语义结构不涉及复杂推理和规则,故我们采用RDF来构建知识图谱HownetGraph。
2.2.1 本体构建
本体构建是知识图谱的第一个步骤,可以理解为知识图谱的框架。最基本的本体包括概念、概念层次、属性、属性值类型、关系、关系定义域(domain)概念集以及关系值域(range)概念集。在HownetGraph中,我们定义概念包括中文词语、英文词语、义项、义原和DEF_CONCEPT(义原和动态角色的组合,介于义项和义原之间);关系主要为动态角色、上下位关系和instanceof关系;HowNet中出现的每一个语义单位都是实例;属性只有rdf: label属性(其他属性被忽略)。
2.2.2 建图
根据上述本体,我们以义项为桥梁,通过层层拆解DEF,得到了包含所有语义单位的HownetGraph。如图1和图2中“绿色”的例子,则可以建成如图3所示的图结构,具体操作步骤如下。
图2 HowNet中义项“绿色”的表示
图3 HownetGraph中边表示关系 注: wc表示义项的中文词,we表示义项的英文词,def_type表示义项或DEF_CONCEPT的基本义原,scope、patient和host分别表示义项或DEF_CONCEPT的范围、受事和宿主关系。
(1) HownetGraph中只包含HowNet数据中描述语义单位的W_C、W_E、DEF部分和义原之间的所有关系,不包含G_C、E_C等内容。
(2) DEF部分是嵌套结构,为了将其转化为图结构,我们借鉴了RDF中“陈述”的结构,我们将每一层嵌套的所有内容当做一个DEF_CONCEPT实例,每一个DEF_CONCEPT实例内部再根据HowNet数据的结构拆解开,动态角色转化为关系(如patient,host和scope),义原则转化为相应的义原实例,DEF_CONCEPT实例的第一个义原前面无动态角色约束,鉴于该义原表示了DEF_CONCEPT实例的最主要语义信息,我们将这种关系定义为def_type。
(3) wc关系对应HowNet数据中的W_C部分,表示义项对应的中文词。we关系对应HowNet数据中的W_E部分,表示义项对应的英文词。
在这一部分,我们将HownetGraph用网络表示学习和知识表示学习进行训练,通过词语相似度任务(word similarity)和词语类比任务(word analogy)来检验我们的语义表示效果。
词语相似度任务,考虑到我们同时学习到了中英文的词语表示,故我们选择了数据集wordsim-240[注]https: //github.com/Leonard-Xu/CWE/tree/master/data(W240,中文)、wordsim-297①(W297,中文)和wordsim-353[注]http: //www.cs.technion.ac.il/~gabr/resources/data/wordsim353/(W353,英文)。此外,为了说明我们学习到的语义表示侧重于语义相似度而非上下文相似度,我们使用了数据集wordsim-353-similarity(W353S,英文),并根据W297和W353S创建了中文的测试语义相似度的数据集wordsim-297-similarity(W297S)。词语类比任务中,我们选择了Chen X等人的中文词语类比数据[25](A1125)检验我们学习到的词语向量的质量。值得说明的是,上述数据集中的部分词语HowNet中没有覆盖,具体情况如表1所示。
表1 数据集统计信息
考虑到图谱中有部分无效信息和重复信息,我们在进行知识表示学习和网络表示学习时,只选用了HowNet中的W_C关系、W_E关系、DEF部分的关系和义原之间的所有关系,若关系值为*,则去掉该记录。我们使用了清华大学自然语言处理实验室提供的知识表示学习代码[注]https: //github.com/thunlp/KB2E和网络表示学习代码[注]https: //github.com/thunlp/openne。
为了证明HownetGraph结构表示语义的有效性,我们选取了较为简单的模型进行学习。网络表示学习使用了Node2Vec、DeepWalk和LINE三种方法,知识表示学习使用了TransE、TransH和TransR三种方法。语义表示的向量维度选取了50、100和200三个维度。
由于目前义原相似度分析和义项相似度分析的任务较少,所以我们仅通过词语相似度分析的任务来评估所提方法的学习质量。
3.2.1 评估方法
词语相似度任务一般是通过比较模型学习到的词对的余弦距离和标准数据集词,对标定数值的皮尔逊系数来判断词向量学习的质量,我们继承了该方法。中文数据集上我们选择了Niu Y等[2]的4种方法(包括最优的方法)作为比较,英文数据集上我们选择了Neelakantan A等[26]的4种方法(包括最优的方法)作为比较。实验结果如表2所示。
3.2.2 实验结果
通过实验结果,我们发现无论是在中文还是英文的语义相似度数据集上,我们的方法都达到了最好效果。其中W297S数据集上,DeepWalk(100维)模型上达到了67.0;W353S数据集上,Node2Vec(200维)模型达到了71.1。这充分说明了HownetGraph可以较好地捕获到HowNet的语义信息。例如,W297S中词对“冠军赛,锦标赛”给出的分数为2.66/5=0.532,而HownetGraph学习到的分数为0.879/1=0.879,从语义上考虑,HownetGraph学习到的分数更符合人们的直观。
此外,我们发现知识表示学习的效果普遍不好,这是因为HownetGraph的关系较少(只有几十种),因此在关系向量的牵引下,实体向量倾向于聚集而失去了区分度。
在W297和W353数据集上,HownetGraph学习到的词语表示均不理想,这是因为这两个数据集中包含有较多基于上下文相似性的词语,基线方法均使用了无监督的大规模语料,可以很好地学习到词语之间上下文的相似性,但HownetGraph中几乎没有上下文的信息。
3.3.1 评估方法
A1125类比数据包含三大类: 首都、城市、家庭关系。假设w1、w2、w3、w4分别是4个词,E1、E2、E3、E4是对应的词向量,若w1和w2的关系与w3和w4的关系相似,那么,E2-E1=E4-E3,即得知E1、E2、E3,我们便可以通过E3-E1+E2得到向量E4′,通过E4和E4′的cos值来评估学习到的词向量的质量。
表2 中英文词语相似度任务实验结果
我们采用两种评估指标: (1)Accuracy,假设和E4′的cos值最大的向量对应的词为w4′,Accuracy值即为所有测试样例中w4′=w4的频率值。(2)Mean Rank,按照E4′和词对应向量的cos值由大到小排列,得到词序列S(w),Mean Rank值即所有测试样例中w4在S(w)中的位置的平均值。基线方法采用的是Niu Y等[2]的4种方法(包括最优的方法)。
3.3.2 实验结果
由实验结果,我们发现我们的模型在“首都”类别上Mean Rank值上达到了最好效果: 3.4,远远好于基线方法。但是城市类别和家庭关系类别效果较差。
经过分析后发现,HowNet的数据特征和HownetGraph表示学习的上述结果有着直接的因果关系。
(1) 首都类别效果好,因为首都类义项较为单一,并且DEF部分清晰地说明了和国家的关系。
(2) 城市类别效果不好,因为HowNet中并没有关注城市和省份之间的关系,因此,从我们学出的向量表示中并不存在这样的类比。例如,南京、上海等605个城市的DEF是一样的,均为DEF={place|地方: PlaceSect={city|市},belong="China|中国",modifier={ProperName|专}}。
(3) 家庭关系类别效果不好,原因是HowNet中存在较多标注不一致的情况,例如,家庭类别的第一个数据,“男孩、女孩、兄弟、姐妹”,“女孩”有一个义项是“daughter”,但是“男孩”却没有“son”的义项。此外,HowNet同样没有关注到家庭角色之间的差异,例如,家庭关系中的“奶奶”“娘”“娘亲”“后娘”等48个义项的定义也都是一样的,均为DEF={human|人: belong={family|家庭},modifier={female|女}{lineal|直系}{senior|长辈}}。
本节我们分别针对词语相似度任务和词语类比任务给出示例,分别选取了在实验部分效果较好的DeepWalk和Node2Vec方法,如表3所示。
表3 A1125数据集实验结果
表4给出了几个DeepWalk方法学习到的语义表示示例。通过观察示例,我们可以发现: ①该方法较好地捕获到了不同语义单位之间的语义表示,结果比较合理; ②输入中文词和英文词,查询到的最相近的词大多都是该词语的义项,比如“钱”和“Money”这两个示例,这个比较好理解,因为在HownetGraph中,词语只和义项有连接,所以在随机游走的时候,词语便只会和它的义项共现,也因此和义项的相似度最高。
表4 DeepWalk方法(100维)学习到的语义表示示例
注: 右上角序号代表含义: 1表示中文词,2表示英文词,3表示义项,4表示义原。
根据我们用知识图谱方式处理HowNet得到的词向量是符合语义的,因此在词语类比上我们也有明显的优势,以下是Node2Vec(100维)的结果。
表5给出了几个Node2Vec方法学习到的语义表示示例。通过观察示例,我们可以发现,该方法同样较好地捕获到了不同语义单位之间的语义表示,正确的答案总会在输出的前几个。
表5 Node2Vec方法(100维)学习到的词语类比示例
注: 右上角序号代表含义: 1表示中文词,2表示英文词,3表示义项,4表示义原。
本文通过将HowNet中复杂的语义结构建成知识图谱HownetGraph,将较难处理的语义嵌套递归结构转化为易处理的图结构,可以使用基于神经网络和深度学习的方法学习到HowNet的语义表示,希望能为其他研究者提供借鉴。本文还使用网络表示学习和知识表示学习的模型为HownetGraph中的每个语义单位学习到了稠密低维的向量表示,并通过实验证明了学习到的语义表示的质量,也表明了知识图谱表示HowNet的有效性。
Niu Y[2]等使用HowNet的语义相似度去增强词向量表示的工作,和Xie R[27]等使用词向量的相似性来预测HowNet义原的工作,都是比较好地结合了上下文相似性和语义相似性的工作。后续研究中,我们会探索两个方向: 一是如何基于HowNet学习到更好的语义表示;二是如何把基于HowNet得到的偏语义相似性的表示和基于大规模无监督语料学习到的偏上下文相似性的表示结合起来。希望借此提升自然语言处理领域相关任务的效果。