知识图谱:谷歌在2012年首先提出知识图谱的概念
知识图谱本质上是一种大型的语义网络,它旨在描述客观世界的概念/实体及其之间的关系。以实体/概念为节点,以关系为边,提供一种从关系的视角来看世界。
构成知识图谱的核心三元组:实体Entity、属性Attribute、关系Relation
抽取为<实体1,关系,实体2> 和 <实体1,属性1,属性值1>
基于已有的三元组,可以推导出新的关系
推荐资料:知识表示+知识推理
RDF:https://www.w3.org/TR/2004/REC-rdf-primer-20040210/
RDFa:https://www.w3.org/TR/rdfa-core/
OWL:https://www.w3.org/TR/2004/REC-owl-features-20040210/
OWL2:https://www.w3.org/TR/2012/REC-owl2-primer-20121211/
JSON-LD:https://www.w3.org/TR/2014/REC-json-ld-20140116/
RDFS:https://www.w3.org/TR/2014/REC-rdf-schema-20140225/
Prov:https://www.w3.org/TR/prov-overview/
SPARQL based reasoning:http://vos.openlinksw.com/owiki/wiki/VOS/VirtSPARQLReasoningTutorial
Description Logic Primer:https://arxiv.org/abs/1201.4089
知识检索:
SPARQL:https://www.w3.org/TR/sparql11-overview/
SPARQL Tools: https://www.w3.org/2001/sw/wiki/SPARQL
知识抽取
Information
知识抽取:
information Extraction:https://web.stanford.edu/~jurafsky/slp3/21.pdf
NER:https://www.cfilt.iitb.ac.in/resources/surveys/rahul-ner-survey.pdf
https://nlp.cs.nyu.edu/sekine/papers/li07.pdf
Entity Linking:http://dbgroup.cs.tsinghua.edu.cn/wangjy/papers/TKDE14-entitylinking.pdf
为什么要用三元组来描述知识图谱?
三元组是一个人和计算机都易于理解的结构,人是可以解读的,计算机也可以通过三元组去处 理,所以它是一个既容易被人类解读,又容易被计算机来处理和加工的结构,而且它也足够的 简单,如果说你扩充成四元组、五元组,它整个结构就会变得比较复杂,那是综合的一种复杂 性和人的易理解性、和计算机的易出理性来综合的考虑,决定用三元组的结构来去作为它的一 个存储。
AI为什么需要知识图谱?
人工智能分为三个阶段,从机器智能到感知智能,再到认知智能。 机器智能更多强调这些机器的运算的能力,大规模的集群的处理能力,GPU的处理的能力。
在这个基础之上会有感知智能,感知智能就是语音识别、图像识别,从图片里面识别出一个 猫,识别人脸,是感知智能。感知智能并非人类所特有,动物也会有这样的一些感知智能。再往上一层的认知智能,是人类所特有的,是建立在思考的基础之上的,认知的建立是需要思考的能力,而思考是建立在知识的基础之上,必须有知识的基础、有一些常识,才能建立一些思考,形成一个推理机制
知识图谱其实是富含有实体、属性、概念、事件和关系等信息,它能够基于一定的推理。且比 较关键的是,它能够基于一定的推理为AI的可解释性,带来全新的一个视角
深度学习的底层的特征空间和上层的人的自然语言空间 这种巨大的语义鸿沟,通过深度学习跟知识图谱结合起来,有望能够消除。这也是为什么AI要 结合知识图谱的一个原因
有了知识图谱以后,我们可以从基于行为的推荐,发展到行为跟语义相融合的智能推荐。
构建知识图谱是包括这样的生命周期或这样的部分,包括定义、知识的抽取、知识的融合、存储、知识的推理、知识的应用,这样的循环迭代的过程
一款比较好的开源本体编辑工具,叫Protégé。它屏蔽了具体的本体描述语言,用户只需要在概念层次上面进行本体的模型 构建,同时也比较灵活,能够支持各种插件来扩展特定的功能。比如推理的功能可以基于插件 来扩展。不过这个工具对中文的支持不是很友好
知识的抽取
首先要抽取实体,然后是实体之间的关系。 我们看一下NER实体的抽取,我们知道NER可以转化为序列标注的问题,传统的机器学习的方 法,CRF等都可以做,而且CRF做的效果还是不错的。不过CRF通常只能学习到相邻词位置比 较近的上下文的特征,它无法获取整个句子甚至更长的上下文的特征
学术界比较主流的一种做法是深度循环神经网络加上结合 CRF,这样的做法更多的是双向的循环神经网络,它可以分别从前往后以及从后往前这两个方 向来去学习上下文的特征,然后进行序列信号的记忆和传递
关系抽取的技术,用远程监督的一种方法,典型的工具Deepdive,也是斯坦福大学 InfoLab实验室开源的知识抽取的系统,通过弱监督学习的方法,从非结构化的文本当中可以 抽取出结构化的关系的数据。开发者不需要理解它里面的具体的算法,只要在概念层次进行思 考基本的特征就可以了,然后也可以使用已有的领域知识进行推理,也能够对用户的反馈进行 处理,可以进行实时反馈的一种机制,这样能够提高整个预测的质量
实体关系抽取的方法:联合学习的方法,输入一个句子,通过实体识别和关系抽取 的联合模型,可以直接得到有效的三元组。通常我们是基于神经网络的联合标注的学习的方 法,里面涉及到两个关键的工作,一个是模型的参数共享的问题,还有一个就是标注策略,怎 么样进行有效的标注
端到端序列标注的策略,把原来涉及到序列标注和分类的两个任务变成 了完全的端到端的序列标注的问题,通过端到端的神经网络模型,可以直接得到关系的三元 组,即实体关系的三元组
实体的融合,这里最主要就是实体的对齐
首先是实体对齐,也叫实体归一化,是把具有不同的标识的实体,但是在现实世界当中可能是 表达同样意思的,把它做归一化。比如中华人民共和国、中国和China,这个三个指的是同一 实体,尽管它的表述方式不一样,就把它归一化为具有全局唯一标识的实例对象,然后添加到 知识图谱当中去。
现在实体对齐普遍采用的还是一种聚类的方法,关键在于定义合适的相似度的阈值,一般从三 个维度来依次来考察的,首先会从字符的相似度的维度,基于的假设是具有相同描述的实体更 有可能代表同实体。第二个维度,是从属性的相似度的维度来看的,就是具有相同属性的和以 及属性词的这些实体,有可能会代表是相同的对象。第三个维度,是从结构相似度的维度来 看,基于的假设是具有相同邻居的实体更有可能指向同对象
还有一种方法就是是用来自LD(LinkedData),LD 是很多人工标记好的数据,是非常准确的,其中有种关联叫owl:sameAs,它表示前后两个是 同实体的,利用这个作为训练数据来发现更多相同的实体对,是比较好的方法
知识存储
如果说 知识图谱的关系结构非常的复杂、关系非常的多,这时候建议使用这个图数据库,比如Neo4J 这样的数据库。另外一种就是它的关系并不是很复杂,关系可能也就是1度、2度的关系,更多 的它是有非常多的属性的数据,这个时候可以考虑关系式数据库,或者是ES这样的存储。如果 要考虑到知识图谱的性能、可扩展性、可分布式,是可以结合NoSQL的数据库,比如TiTan。
知识推理
首先是基于符号推理,我们上面说的三元组的结构;简单来说,即 主谓宾的结构,我叫小明
最常见的OWL推理 工具是Jena, Jena 2支持基于规则的简单推理,它的推理机制支持将推理器(inference reasoners)导入Jena,创建模型时将推理器与模型关联以实现推理。
还有一种是基于图(PRA)的推理的方法,更直观的一种方法,思想是比较简单的,就是以连 接两个实体的已有路径作为特征构建分类器,来预测它们之间可能存在的潜在关系
PRA(path ranking algorithm)提取特征的方法主要有 随机游走、广度优先和深度优先遍历,特征值计算方法有随机游走probability,路径出现/不 出现的二值特征以及路径的出现频次等。PRA方法的优点是直观、解释性好,但缺点也很明 显,有三个主要缺点:首先,很难处理关系稀疏的数据,其次,很难处理低连通度的图,最 后,是路径特征提取的效率低且耗时
还有是基于分布式的知识语义表示的方法,比如像Trans系列的模型
TransR的模型,TransR实际上是解决了一对多或者多对一、多对多 的问题,它分别将实体和关系投射到不同的空间里面。一个实体的空间和一个关系的空间,然 后在实体空间和关系空间来构建实体和关系的嵌入,就对于每个元组<h,r,t>首先将实体空间 中实体通过Mr向关系空间进行投影得到hr和Tr,然后Hr加上r是不是约等于或者近似的等于Tr,通过它们在关系空间里面的距离,来判断在实体空间里面,H和T之间是不是具有这样的关系
清华大学的自然语言处理实验室发布了一款这个叫openKE的平台,openKE它是开源的知 识表示学习的平台,是基于Tanserflow的工具包来开发的。它整合了Trans系列的很多算法, 提供统一的接口。它也是面向了预训练的数据来表示模型的
基于深度学习的推理模型,这个模型利用了卷积神经网络对实体进行关系的分类 的,把句子的依存树作为输入,就是将词在树中的不同的位置的嵌入式的表示拼接到这个词向 量当中来学习,同时对面相树结构设计了独特的卷积核.这种方法在实体分类的任务上,相较 于未使用位置关系的信息,效果会有一定的提升
对知识图谱提出的挑战就是,
对自然语言的认知到了一个新的高度,需要能够利用知识图谱帮助平台 和系统更好的理解问答,上下文对话等等;进而就是从用户提的问题来看,呈现出从简单的陈述类问题到解释类问题的变化趋势,
可解释是未来人工智能发展的核心诉求之一,是人机互信的前提;
隐式关系发现、 深层关系推理将成为智能的主要体现之一
很多知识图谱都是依赖手工构建的,如何从大规模数据里用数据挖掘的方法自动挖掘出 知识图谱的手段仍然缺乏
第一个挑战是知识图谱构建的有效策略和方案。知识图谱涉及的领域很多,构建的有效策略和 方案显得格外重要,一个有效的策略往往可以显著地弥补模型上的不足。如何充分利用知识的 跨语言特性;如何区别对待数据来源的不同结构化程度;基于概念模板的迭代式抽取;基于语 义与语法混合模式的抽取都需要一个有效的策略和方案
第二个挑战是大规模常识的获取和理解。随着知识库应用越来越深入,对于智能化要求越来越 高,其对于常识的需求也会越来越显著。现在大规模人工智能技术是缺乏常识理解能力的,常 识缺乏是人工智能研究的重大制约瓶颈
第三个挑战是在样本稀疏环境下的领域知识获取。很多领域知识图谱缺乏有效的样本,如何将 高频知识的获取模型有效迁移到样本稀疏的低频知识,是当前知识获取领域面临的重大难题
[对于现在领域知识图谱样本都很稀疏的问题,现在有两个基本思路,一个是从高频向长尾的迁 移,有些关系样本很少,但也有些关系样本很多,把样本多的关系迁移到样本比较少的关系。 还有一个就是富样本向穷样本领域迁移,把人类先验知识和规则与深度学习模型有效融合在一 起,从而能够有效生成自然语言模型]
第四个挑战是数据驱动与知识引导深度融合的新型机器学习模型。因为不能有效利用先验知 识,当前机器学习的模型效果越来越接近天花板,如何把先验知识与机器深度学习结合到一 起,这是个挑战。 [《当知识图谱遇见深度学习》]
第五个挑战是基于知识图谱的可解释人工智能。是否能利用知识图谱去解释机器产生的结果, 这个将来会越来越重要。
第六个挑战是知识获取中的人机协作机制与方法。人机边界问题,这实际上是一个非常重要的问题
将机器学习中的特征通过某种映射,使其成为高维向量,从而和知识图谱的 entity 和 event 结合起来-----可以看看 刘知远老师的相关paper,向量化的学习
利用知识图谱分析社交网络,可以看看 清华 唐杰老师的相关工作
利用知识图谱改进推荐算法----可以搜索一下相关论文(recommend semantic)
知识图谱的相关视频-----小象学院上王昊奋做了第一期的教学视频,后来其他老师在做第二期,