知识图谱的综述、构建、存储与应用

我的未来我决定 提交于 2021-01-09 18:04:59

本文介绍知识图谱,首先会讲一段知识图谱的综述作为开场,然后就知识图谱的构建,存储,还有应用进行具体说明。
幻灯片1.JPG

知识图谱和我们的资源页比较类似,都是需要先构建,然后存储,之后应用。
知识图谱应用广泛,我会以推荐系统为例子,说明知识图谱在推荐系统中的应用。
幻灯片2.JPG

知识图谱综述

我们首先对知识图谱做一个简短的综述。
幻灯片3.JPG

计算机为什么需要知识?
比如数字110,对机器来说,110就是一个字符串,与其他数字没有太大的差别。
当然可以借助关联分析,分析出110跟警察,抢劫等相关。但是关联分析比较复杂,需要借助数据挖掘等相关技术。
如果采用知识库,只需要构建一条知识,即110是报警电话。

人工智能分为三个层次,分别是运算智能,感知智能和认知智能。
运算智能是让机器能存会算;感知智能是让机器能听会说、能看会认;认知智能是解决机器能理解会思考的问题。

认知智能需要知识图谱。
幻灯片4.JPG

知识图谱是一个大规模语义网,包含实体和关系,比如章子怡的丈夫是汪峰;
也包含实体和属性,比如章子怡的出生日期是1979年2月9日。
还包含实体和概念,比如章子怡是一个女演员;
还包含概念之间的关系,比如女演员是演员的子类。演员是人物的子类。
幻灯片5.JPG

百科图谱一般由标题,摘要,信息框,标签,图片等部分组成。
可抽取信息框的内容构建知识图谱,并进行可视化展示。
其中,对于题目理解来讲,函数的提出者,提出时间这些属性不是我们所关心的。
表达式,表示法,三要素是我们关心的属性。
幻灯片6.JPG

知识图谱可以使能搜索与问答,比如搜索函数的三要素,可以直接得到结果:定义域,值域,对应法则。
幻灯片7.JPG

知识图谱还可以使能Query补全,比如输入函数的,推荐的候选Queries为函数的定义,函数的三种表示方法等。
幻灯片8.JPG

知识图谱强调世界是由实体而不是字符串组成的,比如题目中的函数,f(x), 定义域等在知识图谱中都是一个个实体,而不是字符串。
幻灯片9.JPG

那么什么是知识图谱呢?
知识图谱是一个大规模语义网,由实体,概念等节点和属性,关系,类型等边构成。
是许多三元组的集合。每一个三元组是由主语(subject),谓语(predicate),宾语(object)构成。
比如中国,上海,姚明,叶莉等是实体。
比如地理位置,人物是概念。
比如姚明的身高226厘米,身高是属性。
比如姚明的配偶是叶莉,配偶是关系。
幻灯片10.JPG

知识图谱三元组基本类型有四种,分别是实体,关系,实体,比如好未来,创始人,张邦鑫老师;
还有实体,属性,属性值,比如好未来,成立时间,2003年;
还是实体,is-a,概念,比如好未来,is-a,上市公司;
还有子概念,subclass-of,父概念,比如上市公式,subclass-of,公司;

不能把is-a和subclass-of进行混淆,就好像不能把集合的属于和包含进行混淆一样。
幻灯片11.JPG

知识图谱分为模式层数据层
模式层是数据的模式,是对数据层的提炼。
数据层是具体的数据。
幻灯片12.JPG

模式层是知识图谱的数据模型,是对数据层的约束。
我们以教学图谱为例,可以有staff, professor, course, laborary, student, PhD student等概念,以及professor 和course之间的联系,professor teach course。
还有professor 和PhD student之间的联系 Professor supervise PhD student。
这些概念以及概念之间的关系,构成了知识图谱的模式层。
然后在模式层下添加实体,比如Professor Xu和PhD student Wang,以及实体之间的关系,比如Xu supervise Wang.
幻灯片13.JPG

知识图谱的构建

接下来,我们介绍知识图谱的构建。
幻灯片14.JPG

知识图谱的构建,从数据来源来说,包括从结构化,半结构化和非结构化的海量数据中抽取知识,构建图谱。
构建者分,可以分为众包构建和自动化构建。众包构建,就是利用许多人进行编辑,构建知识图谱,维基百科,百度百科都是众包构建的。
自动化构建,就是利用机器进行自动构建。
构建方式分,可以分为自上而下的构建和自下而上的构建。
幻灯片15.JPG

自上而下的构建先确定模式层,然后添加实体数据到知识库。
自下而上的构建先确定知识图谱的数据层,然后提取数据的模式。
行业知识图谱规模小,比如容易确定模式层,多采用自上而下的构建方式。
通用知识图谱规模大,数据模式随数据的增长而变化,多采用自下而上的构建方式。
知识图谱可以只有数据层,没有模式层。
幻灯片16.JPG

知识图谱模式层构建,也叫本体(ontology)构建。需要先确定知识图谱的领域,比如大学领域。
然后列出领域内的术语,比如教职工,行政人员,技术支持人员,本科生,研究生等术语。
然后确定类和类之间的层级关系,比如教职工是在职教师和研究人员的父类。学生是本科生,研究生的父类。
然后定义术语外延的规则。比如概念的属性,概念之间的关系,属性或者关系的定义域(domain)和值域(range)等。
幻灯片17.JPG

知识图谱的构建分为众包构建和自动化构建。由于众包构建涉及技术较少。我们这里主要介绍自动化构建。
这是知识图谱自动化构建的流程。
首先从数据库,百科网站,垂直网站等数据来源获取结构化,半结构化,和非结构化数据。
对非结构化数据和半结构化数据进行实体抽取,关系抽取,属性抽取,并与结构化数据进行整合,形成初步的三元组知识。
然后通过实体消歧得到标准知识表示。
对标准知识构建本体,形成数据模型。
对知识进行推理,发现新的知识。
对知识进行质量评估,从而进行质量控制。
对知识图谱添加新的实体,或者修改旧的实体,对知识图谱进行更新。
对构建好的知识图谱进行存储,方便下游应用。
对知识图谱进行表示学习,将知识图谱离散的符号转化为连续的数值。
对知识图谱进行应用,主要包括内容理解,搜索,推荐,问答等应用。
幻灯片18.JPG

这里描述了从半结构化数据抽取三元组的例子,主要涉及网页爬取与解析。这里根据信息框(infobox)和标签(tags)来抽取三元组。
幻灯片19.JPG

对于非结构化数据,先经过预处理,比如全角转半角等,然后进行分词,词性标注,语法解析,依存分析等NLP工具对文本进行解析,进一步进行实体识别,然后关系抽取,实体消歧,事件抽取等构成三元组知识。
比如文本:已知函数f(x)的定义域,抽取出函数,f(x), 定义域等实体,然后对实体对进行关系分类;比如函数和f(x)分类为表达式,比如函数和定义域分类为要素。
形成三元组知识:函数,表达式,f(x),函数,要素,定义域。
由于函数可能是数学中的函数,也可能是计算机中的函数,还需要进行实体消歧。根据上下文判断函数为数学中的函数。
幻灯片20.JPG

实体识别是识别出文本中的人名,地名,组织机构名,时间,日期,货币等类型的字符串。
比如左边这条新闻,识别出时间3月23日0时50分,识别出人名特朗普等。
对于学科图谱来讲,需要识别出相关术语。比如函数,数集等术语。
幻灯片21.JPG

实体识别一般建模成序列标注任务。输入一个序列,经过词嵌入,和双向LSTM编码,然后用CRF进行解码。
其中函数预测的标签是B-Noun, E-Noun, B和E分别表示mention的开始和结束,Noun表示类型。
f(x)预测为表达式,其中I-Expr, I表示Inside, Expr表示表达式。
幻灯片22.JPG

当BERT出现后,由于BERT效果好,常采用BERT来对句子进行编码。
幻灯片23.JPG

当识别出了文本中的实体,还需要对文本中的实体,两两进行关系分类。
一般我们会收集并标注一个关系分类的训练集,来训练一个模型,然后用模型对测试数据进行预测。
比如我们训练好模型后,对测试数据,集合中的元素有多种特性,包括确定性,互异性,无序性进行预测。
我们需要预测元素与确定性之间的关系,预测结果为特性。也就是集合有一个特性是确定性。
幻灯片24.JPG

由于BERT的兴起,常用BERT来做关系分类。
幻灯片25.JPG

识别出文本中的mention后,比如识别出函数,定义域等mention,还需要对mention进行实体消歧(entity disambiguation)。也就是这个mention提及的是哪一个实体。
比如函数可以是数学术语,也可以是计算机中的函数,根据上下文,判断指代的是数学中的函数。
幻灯片26.JPG

注意到实体链接就是先识别出来文本中的mention,然后将识别出来mention链接到知识库中实体,所以说实体链接=实体识别+实体消歧
幻灯片27.JPG

除了实体链接以外,还可以有公式链接。比如题目或者解析中某个公式使用了某个定理,可以将这个公式链接到它运用的定理上。
幻灯片28.JPG

构建好了知识图谱后,我们需要对构建好的知识图谱进行规模和质量的评估。
规模一般用知识图谱中有多少个实体,有多少个关系来描述。
质量一般可以用准确率来衡量。由于知识图谱三元组数量多,我们一般抽取若干个三元组,比如500个,对每一个三元组进行真假判断,然后统计准确率。
右表展示了抽取8个三元组,计算准确率的过程。
一般来讲,众包构建的准确率较高,自动化构建的准确率相对较低。
领域知识图谱准确率较高,通用知识图谱准确率相对较低。
幻灯片29.JPG

知识图谱存储与查询

接下来我们介绍知识图谱存储与查询。
知识图谱存储和查询可以分为两类,一类是基于图数据库的,一类是基于关系型数据库的。
幻灯片30.JPG

我们先介绍基于图数据库的管理系统。
属性图(property graph)是图数据库中最常用的数据模型,由节点和边构成。
比如下面这幅图,有三个节点,每个节点表示一个对象。
第一个节点的标签是Employee,这个节点的属性用键值对存储,比如姓名为Amy peters, 出生日期为1984年3月1日,ID为1。
Company 和 Employee之间有边HAS_CEO,边上也可以有属性,比如Company has CEO 开始日期为2008年。
幻灯片31.JPG

下面是一个图数据库查询1号节点认识的节点中,年龄大于30的节点参加过的项目。
其中Gremlin和Cypher是图数据库两种查询语言。
Gremlin是过程式(procedural)语言;用户需指明具体的导航步骤,也就是在图上怎么走;它是业界标准查询语言,除了Neo4j外,几乎所有图数据库均支持。
Cypher是Neo4j专用语言,它是声明式(declarative)语言;用户只需声明“查什么”, 无需关心“怎么查”;
幻灯片32.JPG

当然我们也可以利用关系型数据库对知识图谱进行存储。我们可以将图数据用三元组表示,将每一个三元组作为表中的一行记录。
下面是查询生于1850年,死于1934年,创建过公司的人。
采用关系型数据库存储,多跳查询会产生自连接(self-join)操作。
比如A->B为一跳,A->B->C为两跳。
幻灯片33.JPG

也可以采用水平表的方式进行存储,每一行存储一个主语对应的所有的谓语和宾语。
这种存储方式适合于谓词较少的知识图谱。
主语一般只在极少的列上有值,导致存储空间浪费。
并且这种存储方式很难存储多值属性或者一对多关系。
比如函数的三要素是定义域、值域和对应法则,用水平表存储这种多值属性,需要对值拼接后才能存储。
幻灯片34.JPG

也可以按照实体的类型对知识图谱进行划分,这种方式适合于实体类别较少的情况。
同样地,存储多值属性或一对多关系需要对值进行拼接。
幻灯片35.JPG

也可以根据谓词对知识图谱进行划分。对每一个谓词创建一张表。这种方式解决了数据存储稀疏性问题,也可以存储多值属性。
但是涉及多个谓词的查询会导致多表连接操作。
幻灯片36.JPG

知识图谱的应用

知识图谱的应用有很多,我们主要介绍知识图谱在推荐系统中的应用。
幻灯片37.JPG

如图是一个新闻推荐的例子,假设某个用户看过一条新闻,这个新闻的内容是:
Boris Johnson Has Warned Donald Trump To Stick To The Iran Nuclear Deal(鲍里斯·约翰逊警告唐纳德·特朗普坚持伊朗核协议)。
从这条新闻中提取出4个实体,然后对这些实体做一跳,两跳,三跳扩展,会发现这些实体都指向另外一条新闻:
North Korean EMP Attack Would Cause Mass U.S. Starvation, Says Congressional Report(国会报告称,朝鲜电磁脉冲攻击将导致美国大规模饥荒)。
这2条新闻的单词都不一样,利用知识图谱可以发现他们底层之间的关联。
幻灯片38.JPG

KG能给推荐系统带来什么?
首先知识图谱可以提高推荐系统的精度(Precision),更准确地发现item之间的关联,比如Cast Away 和 Forrest Gump 都是Tom Hanks 主演的。
幻灯片39.JPG

知识图谱还可以提高推荐系统的多样性(Diversity)。电影可以通过主演扩展,也可以通过电影类型扩展,还可以通过导演来扩展,找到相似的电影。
幻灯片40.JPG

知识图谱还可以提高推荐系统的可解释性(Explainability),知识图谱中的路径可以用来解释为什么会推荐这部电影。比如某个用户喜欢Cast Away这部电影,系统推荐了The Terminal这部电影,因为他们有相同的主演。
幻灯片41.JPG

已知一个用户的集合Users,一个物品的集合Items,用户和物品的交互矩阵YYYyuv=1y_{uv}=1yuv=1表示用户点击过某个物品,0表示未点击。
每个物品vvv在KG中对应一个实体。物品是实体的一个子集。
目标是学习一个函数FFF,给定uuu,vvv,预测点击率y^uv\hat y_{uv}y^uvΘ\ThetaΘ是模型的参数。
幻灯片42.JPG

DKN方法是给出一段新闻,提取新闻中的实体,根据这些实体,构建一个知识图谱子图,对子图做embedding,得到每个实体的embedding。
幻灯片43.JPG

另外,实体的邻居节点可以作为该实体的上下文信息。将这些邻居实体的embedding求平均,得到该实体的上下文表示。如上图公式中e¯\bar ee¯就是实体eie_iei的上下文embedding。
幻灯片44.JPG

前面介绍了实体表示,实体上下文表示,另外结合词向量,形成三个通道,进行卷积和池化,得到这个句子的表示,我们管这个方法叫KCNN。
幻灯片45.JPG

假设用户点击过3条新闻,来了一个候选新闻,需要预测用户对候选新闻的点击概率。
用KCNN对这4条新闻做embedding,得到4个特征向量。
用Attention Net计算用户看过的每一条新闻与候选新闻之间的相似性。
用相似性得分对观看记录求加权平均,得到用户表示(User embedding)。
将用户表示和候选新闻表示拼接,用多层感知机(MLP)预测的点击率。
幻灯片46.JPG

刚才DKN模型仅融入了实体的一跳信息,RippleNet除了融入一跳信息外,还融入了实体的两跳,三跳信息。Ripple是水波的意思。
幻灯片47.JPG

另外还有直接利用**图神经网络(GNN)**对知识图谱进行表示。
用图神经网络处理知识图谱需要先将知识图谱中的关系转化为数值。对于每一个用户,引入一个打分函数,用于对知识图谱中每一个关系进行打分。不同用户同一个关系打分不一样,分值高低跟用户的偏好相关。
然后利用图神经网络进行前向传播。其中AuA_uAu是某个用户uuu对应的邻接矩阵。
DuD_uDu是顶点的度矩阵,这是一个对角矩阵。
WlW_lWl是训练参数矩阵。
HlH_lHl,Hl+1H_{l+1}Hl+1是实体对应的embedding矩阵。
σσσ是一个非线性函数。
幻灯片48.JPG

我们总结一下。
幻灯片49.JPG

谢谢阅读!如有错误,请批评指正~

资源推荐

作者简介

岳祥为好未来自然语言处理高级工程师

招聘信息

好未来技术团队正在热招前端、算法、后台开发等各个方向高级开发工程师岗位,大家可扫描下方二维码或微信搜索“好未来技术”,点击本公众号“技术招聘”栏目了解详情,欢迎感兴趣的伙伴加入我们!

也许你还想看

DStack--基于flutter的混合开发框架

WebRTC源码分析——视频流水线建立(上)

"考试"背后的科学:教育测量中的理论与模型(IRT篇)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!