查看原文
其他

知识图谱技术:WordNet、Babelnet等经典语言知识库项目案例构建剖析

刘焕勇 老刘说NLP
2024-10-08

知识图谱作为一个知识的表示方式,其可以根据所描述知识对象、内部知识单元、所属领域、应用场景的不同而分为不同的知识图谱类型,即“知识类型+知识图谱”。

例如,如果存储的是供语言学习者学习的语言类知识,如词语的释义、同义、反义、上下位,同一个词在不同语言中的翻译,可以形成语言类知识图谱

如果存储的是供信息查询使用的百科类名词性实体类知识,如人物、地点、机构,以及人物的属性,人物之间的关联关系,可以形成百科类实体图谱

随着知识图谱的思想逐步在各个领域、各个行业传播,并与具体的业务场景和数据类型进行了结合,目前陆续出现了众多优秀的知识图谱项目。

语言类知识图谱项目Babelnet,百科类知识图谱项目Freebase,实时常识知识库项目NELL等。这些项目显示出了知识图谱项目构建的几个趋势,即更多数据的融合(从单语言到跨语言,从单模态到多模态,从单一到集成)、从一次性到实时等。

之前的文章中已经介绍过Freebase,实时常识知识库项目NELL,在本文中,将主要介绍WordNet词汇知识库、HowNet义原知识库、 BabelNet多语言词汇库三个典型语言知识图谱,从由来、构成、实现、总结几个方面进行总结。

一、WordNet词汇知识库

Wordnet是采用分类法进行词义表示的一类知识库,最开始被看作是一个词典浏览器,一个基于意义而非传统按字母排序的机器可读词典辅助工具。

使用同义词集合(synset)来代表词汇概念,并在词的形式和意义之间建立起映射关系(mapping)这种做法是Wordnet知识库的两个重要特征,也奠定了其建成后受到广泛使用的基础。

1、Wordnet的由来

1976年,George.A.Miller与Philip N.Johnson-Laird合作的《Language and Perception》一书中踌躇满志地探索义素分析的语义描写方法,即将一个词的意义分析为更小的概念原子的组合,不过定义一套概念原子却非易事,直到1985年,仍然没有能够出笼一个完整的定义清晰的清单;

1985年,许多认知心理学家和计算语言学家开始以“网”的形式来描述词语的意义,即采用“Is-A-KIND-OF”这样的语义关系来表示桌子是一种家具。

通过识别由字符串组成的最重要的词节点,探索出其中的语义关系模式,得到了正确的语义关系模式,词语的定义就能从中推理出来,并形成了一个叫做“word net”(包含45个名词的小型语义网);

1985年11月,Miller提出了Wordnet的指导思想,即可以使用同义词集合(synset)来代表词汇概念,并描述词汇矩阵,即在词的形式和意义之间建立起映射关系(mapping)。

1985年,在WordNet开始成形的时候,Miller和他的一些志同道合的同事在普林斯顿合作发起了一个认知研究的计划(Program for Cognitive Studies)作为一个知识工程全面展开开始开发,并于1991年7月发布了第一个版本。

2、Wordnet的构成

从构成上,wordnet用一组同义词的集合Synset来表示一个概念,并对每一个概念有一段描述性的说明。

Wordnet主要定义了名词、动词、形容词以及副词之间的语义关系,如典型的名词之间的上下位关系:“猫科动物”是“猫”的上位词,动词之间的蕴含关系,如“打鼾”与“睡眠”是一种蕴含关系。

Wordnet描述了compound(复合词)、phrasal verb(短语动词)、collocation (搭配词)、idiomatic phrase(成语)、word(单词),其中word是最基本的单位等对象,以及对象之间的关联关系,例如,同义反义关系(synonymy,antonymy),上下位关系(hyponymy,troponymy),部分整体关系(entailment,meronymy)。

按照词的类型来看,wordnet描述名词的整体与部分关系,如A是B的组成关系:beak/wing->bird,A是B的成员tree->forest,A是B的构成材料,aluminum->plane在形容词的语义关系上,着重刻画形容词之间的同义关系和同义关系。

在动词的语义关系上,一方面,刻画了动词的类别分类关系,将将动词归纳为15个基本类(semantic domain),包括动作motion,感知Perception/,联系Contact,通信Communication等。定义了动词之间蕴含与上下位层级关系。wordnet根据词义而不是词形,组织词汇信息,是一部语义词典,并且同义词集合之间的语义关系是对称关系。

通过陆续吸收了Brown语料库、Laurence Urdang的同义反义小词典(1978)、Urdang修订的Rodale同义词词典(1978)、以及Robert Chapmand的第4版罗杰斯同义词词林(1977)等,并终于自1989年年初开始,从一个简单的“词典浏览器”(dictionary browser)发展成一个自足的词汇数据库(self-contained lexical database)

当前,wordnet3.0已经包含了超过15万个词以及20万个词之间的语义关系,成为了目前处理英文最多的一类词典知识库,主要用于词义消歧。

3、Wordnet的总结

实际上,WordNet的研究人员一直把WordNet视作一个试验,而不是一个产品,当WordNet中的词语足够多的时候,他们就把WordNet向学术界免费公开了。

NLTK中提供了快速访问wordnet数据的接口,由于一个单词(‘dog’)可以有很多个含义(synset,如‘dog.n.01’,或者叫词集),使用单词.词性.词义序号来对wordnet中某一单词的具体含义进行表示,其中词义序号明确一个单词在同一个词性下也可能有多种含义,为每一个含义都分配一个序号。

用synsets指令查看dog的所有同义词集。例如:

[Synset('dog.n.01'),Synset('frump.n.01'),Synset('dog.n.03'),Synset('cad.n.01'),Synset('frank.n.02'),Synset('pawl.n.01'),Synset('andiron.n.01'),Synset('chase.v.01')]。

二、HowNet义原知识库

知网(英文名称HowNet),是一个以汉语和英语的词语所代表的概念为描述对象,以揭示概念与概念之间以及概念所具有的属性之间的关系为基本内容的常识知识库。

与wordnet不同的是,HowNet沿着义素分析的语义描写方法来组织词义,由人工构建,自底向上归纳义原(知网标记集),将词义用更基本的单位进行表示。

1、HowNet的由来

1988年前后,董振东提出,自然语言处理系统需要强大的知识库作为支撑;

知识是一个系统,是一个包含各种概念和概念之间关系、概念属性之间关系的系统;

一个人比另外一个人有更多的知识说到底是他不仅掌握了更多的概念,尤其重要的是他掌握了更多的概念之间的关系以及概念的属性与属性之间的关系,并提出经典的Hownet哲学观:世界上一切事物(物质的和精神的)都在特定的时间和空间内不停地运动和变化,它们通常是从一种状态变化到另一种状态,并通常由其属性值的改变来体现。

因此,万物(物质和精神)、部件、属性、时间、空间、属性值以及事件成为了Hownet的基本操作运算元素。

2、HowNet的实现

有限的义原集合来表示一个概念以及复杂的关联关系(概念与概念之间的关系以及概念的属性与属性之间)是Hownet的两个重要特征,因此,义原结合的构建以及关系的设计成为了构造这个知识系统的基础性工作。

其中,在义原的提取上,该系统设想所有的概念都可以分解成各种各样的义原,同时也设想应该有一个有限的义原集合,其中的义原组合成一个无限的概念集,并且能够反映出概念的共性和个性。

例如:对于“医生”和“患者”,“人”是它们的共性。义原的抽取和修正是两个基础环节,其中:

在义原的抽取上,Hownet采用通过对全部的基本义原进行观察分析并形成义原的标注集,然后再用更多的概念对标注集进行考核,据此建立完善的标注集,通过对约6000个汉字进行考察和分析来抽取了1000多个义原。

例如,在中文中具有事件义原的汉字(单纯词)中我们曾提取出3200个义原,如治(医治、管理、处罚)、处(处在、处罚、处理)、理(处理、整理、理睬),在初步合并后大约可以得到1700个,再进一步加以归类,得到大约700多个义原,再用700多个义原作为标注集去标注多音节的词,以对义原进行修正

在义原的修正上,采用了两条原则进行考核,即在扩大标注中观察该义原的覆盖面,已有的义原一定要能够描述全部的概念。观察某一个义原在概念之间关系中的地位,如果一个义原在同类别的许多概念中出现或者不同类别的概念中出现,那么这样的义原就是稳定的义原是一个必须确定的义原。

在关系的设计上,hownet定义了词语之间的上下位关系、同义关系、反义关系、对义关系、部件-整体关系、属性-宿主关系、材料-成品关系以及角色-事件关系。其中,角色-事件关系包括实施某一事件所关联的施事/经验者-事件关系等,也包括事件关联的工具以及场所。

在构建好义原集合之后,将义原作为知网中最基本的、不能再分割的意义的最小单位,作为解释知识词典的基本要素,其它的词条全都由这些义原来定义,即一个概念可以有若干个唯一的没有歧义的语义原子进行组合而成。例:医生的定义为DEF=human|人,#occupation|职位,*cure|医治,medical|医;其中,人、职位、医治、医,就是用来定义语义的四个原子义原,分别表示为医生是人,与职位相关,是医治的施事者。

3、HowNet的总结

HowNet 预定义了两千多个义原,并用其标注了十万多个中英文词语。每个词语的每个义项都用若干义原标注以表达其语义。然而,HowNet 中已标注义原的英文词语数量有限,仅占 WordNet 英文词数的 32.8%(50879/155287),且中英之外其他语言的词语没有义原标注,这导致义原在自然语言处理领域的应用范围被大大局限。

OpenHowNet,为快速使用hownet数据提供了开源的义原在线查询网站和API。存放HowNet核心数据和THUNLP开发的OpenHowNet API,提供方便的HowNet信息查询、义原树展示、基于义原的词相似度计算等功能。作为HowNet的核心数据,开放了由223,767个以中英文词和词组所代表的概念构成,HowNet为每个概念标注了基于义原的定义以及词性、情感倾向、例句等信息

三、BabelNet多语言词汇库

BabelNet是一个多语词汇语义网络和本体,由罗马萨皮恩扎大学(罗马大学)计算机科学系的计算语言学实验室所创建,采用的是机器自动生成的方法。

Babelnet与wordnet类似,并在此基础上引入了“跨语言”和“百科”的双重特点,成为了当前规模最大的一种多语言百科词典知识库,并凭此获得了诸多大奖。

例如,2015年,因其在克服语言障碍和利用异构数据源方面做了巨大的开创性工作,BabelNet被授予META奖,2017年获得IJCAI的卓越论文奖。

1、BabelNet的由来

BabelNet的产生主要来源于几个背景。

一方面,随着Wordnet在英文语言处理中得到了广泛的应用,词汇知识库的重要性受到广泛关注。然而,手动构建这种资源是一项繁重的任务,它需要数年甚至十年的时间,并且每一种新的语言都必须从头开始重复,并且在要与其他信息进行关联时,还要加上跨语言和领域的资源互连的成本,这一点在非英语语言的资源中表现得更为严重。

另一方面,以维基百科为代表的在线协作资源引起了人工智能界许多研究者的注意,拥有多种语言版本的维基百科中拥有非常丰富的显性和隐性语义知识,但大部分是关于命名实体的知识(例如,苹果作为一个公司),缺乏对给定词条的词义的全面覆盖(例如,苹果果实和树的词义合并为一个意思),这样的词义覆盖,可以由WordNet这样的高结构计算词典来提供。

因此,借助维基百科的跨语言特征以及丰富的实体知识来解决wordnet的跨语言问题,并利用wordnet的词语关系特征来解决维基百科的词义问题,实现强强联合,催生了BabelNet这一开创性工作的提出。

2、BabelNet的实现

跨语言、词汇语义、百科实体是BabelNet的三个重要特征。通过将最大的多语言网络百科全书(即Wikipedia)与最流行的计算词典(即WordNet)连接起来,提供了用多种语言词汇化的概念和命名实体,并与大量的语义关系相连接,形成了一个"百科全书式的词典"(百科+概念词汇库)。

图-BabelNet的知识构成示意图 Wordnet与wikpedia的映射、不同语言之间的链接是BabelNet的两个核心步骤。

首先,在映射阶段,给定一个wikpedia资源(词条或者包含词条的标题,该资源包括重定向到w的集合、通过其跨语言链接链接的所有页面、重定向到目标语言维基百科中的跨语言链接等信息),即词条或者包含词条的标题,将其与Wordnet中的概念进行匹配,得到多个wordsenses。

随后将资源映射问题视为消歧问题,利用词语的上下文信息与wordsenses中词语信息的定义,计算WordNet sense和Wikipage引用相同概念的概率进行消歧,从中挑选出没有歧义的最佳结果。

1)基于词袋的概念消歧

基于词袋的方法通过计算消歧上下文与给定词义定义之间的词语重合度作为度量,例如,Play(戏剧)这个词在Wikipedia和WordNet中都是多义词(WordNet中有 "戏剧"(#1)和 "活动playn8"(#8)两个概念)。

首先检查是否存在指向 Play (theatre)的重定向,该重定向之前已经被消除了歧义。

接着,通过包括Wikipage的标签、链接、重定向和类别中的词来构建Wikipage的歧义上下文,如形成了包括戏剧、喜剧、表演艺术、文学、悲剧和表演等词素集合,同样的,对于WordNet的两个概念,分别将它们的同义词组、超义词、次义词和表义词中作为词素集合,playn1 的上下文包括:表演、戏剧、行为、playlet。playn8 的上下文包括:房子、医生、消防员、分流和想象。

最后计算Wikipage的歧义上下文与每个感兴趣的WordNet语义之间的交集大小,发现交集最大的语义是#1,即建立了如下映射:f(Play(theatre))=playn1,完成映射。

2)基于图方法的概念消歧

与基于词袋的方法不同,基于图的方法为Wikipage上下文构建一个歧义图,基于图的方法有望在词网和维基百科歧义上下文的交集为空的情况下也能建立映射,从而有更多的召回

与基于词袋构造wikipedia词条的上下文不同,该方法通过使用WordNet词之间的关系来构造,例如“playn1 -draman3 -tragedyn2”这条路径,可以捕获上下文术语之间更广泛的语义关系。Play(活动),指"打游戏 "意义上的游戏,通过这种方式构造的 Wikipage的歧义上下文中包含了游戏、玩具、童年和娱乐等词汇。

这样一来,即可以找到支持映射的路径。如:f(Play(activity))=playn8。playn8 -diversionn1 -gamen3,playn8 -diversionn1 -activityn1,playn8 -childn1 -childhoodn2。

在不同语言之间的链接方面,与wordnet中以同义词集合来表示概念一样,Babelnet将不同语言中的词语以同义词集的形式进行组织,构建了自己的同义词集合BabelSynset。

例如,对于f (Play (theatre))=playn1,对应的Babel同义词集合是{playen , Bühnenwerkde, pièce de théâtrefr, ... , opera teatraleit},其中有效利用了不同语言之间的指向信息,但这种指向信息太受限于wikipedia自身的数据规模,对于稀缺语言可能不会有这个词条存在

因此,在此基础上,针对BabelSynset的每一个特定术语,采用了机器翻译的方法,利用SemCor(一个由超过 200,000 个单词组成的语料库,其中有WordNet词义的注释),通过检索维基百科中带有相关维基页面链接的句子,并将句子集翻译成所有语言,从而完成相应语言的词汇化。

3、BabelNet的总结

通过与免费授权使用的OmegaWiki、英语维基词典、维基数据、FrameNet、VerbNet、维基词典、OmegaWiki、Wikidata、多语言WordNet,Wikiquote、Microsoft术语集、GeoNames、WoNeF、ImageNet,ItalWordNet,FrameNet和WN-Map、等语义资源建立链接,BabelNet的规模逐年扩大。

当前Babelnet3.7中包括271种语言,1400万个同义词词组,以及超过36.4万的词语关系对,以及3.8亿个与wikipedia的链接关系,总计超过19亿个RDF三元组。

到后来,该团队还推出了BabelNet live,一个新的、持续增长的知识库系统,每天从包括维基百科、维基词典、用户的输入等处获得数据的持续更新,BabelNet提供了Java API、SPARQL端点和关联数据接口,如实例化BabelNet、BabelSynset、BabelSense类可以获取相应的数据。

四、总结

本文主要介绍了WordNet词汇知识库、HowNet义原知识库、 BabelNet多语言词汇库三个典型语言知识图谱,从由来、构成、实现、总结几个方面进行论述。

从如上几个项目的案例中,我们可以发现:

一方面,健全体系很重要。这些项目存储的是供语言学习者学习或者供自然语言处理外部知识引入的语言类知识,如词语的释义、同义、反义、上下位等,其构建都是制定了很体系化的组织架构,所以可以在有效支撑搜索、词语扩展应用的同时,可以灵活地进行扩展。

另一方面,多源数据融合是趋势。语言学知识与其他类型的知识进行融合也是一大趋势,如Babelnet将多语言、百科知识进行引入,进一步扩充了其数据规模,则提升了其适用性。

另外,我们更需要认识到的是,当前中文领域中的语言知识库或语言知识图谱还是相对较少,除了代表性的hownet之外,还未有大型的语言知识库出现。这是我们未来需要着力去做的一个方向。

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

就职于360人工智能研究院、曾就职于中国科学院软件研究所。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。


继续滑动看下一个
老刘说NLP
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存