知识图谱(Knowledge Graph)算法初探
1. 对知识图谱的感性认识
0x1:知识图谱的前世今生 - 语义网络(Semantic Network)
知识图谱其本质是为了表示知识。其实知识图谱的概念并不新,它背后的思想可以追溯到上个世纪五六十年代所提出的一种知识表示形式——语义网络(Semantic Network)。
语义网络由相互连接的节点和边组成:
1. 节点表示概念或者对象; 2. 边表示他们之间的关系 2.1 is-a关系,比如:猫是一种哺乳动物; 2.2 part-of关系,比如:脊椎是哺乳动物的一部分
如下图
在表现形式上,语义网络和知识图谱相似,但语义网络更侧重于描述概念与概念之间的关系,(有点像生物的层次分类体系——界门纲目科属种),而知识图谱则更偏重于描述实体之间的关联。
0x2:知识图谱的主要目的
知识图谱(Knowledge Graph)主要目的是在海量网络数据中以更直观的方式把知识展现给用户。知识图谱是一种数据展示的方法。
KG特征和功能:本质上是一种语意网络,用户查询关键词映射到语意知识库的概念上,核心是知识库。它很像我们人脑在遇到一件事后产生的联想。
知识图谱最大的优势是在于对数据的描述能力非常强大,各种机器学习算法虽然在预测能力上很不错,但是在描述能力上非常弱,知识图谱刚好填补了这部分空缺。
0x3:知识图谱中包含的名词解释
1. 实体: 指的是具有可区别性且独立存在的某种事物。如某一个人、某一个城市、某一种植物等、某一种商品等等。世界万物由具体事物组成,此指实体。实体是知识图谱中的最基本元素,不同的实体间存在不同的关系。 2. 语义类(概念): 具有同种特性的实体构成的集合,如国家、民族、书籍、电脑等。 概念主要指集合、类别、对象类型、事物的种类,例如人物、地理等。 3. 内容: 通常作为实体和语义类的名字、描述、解释等,可以由文本、图像、音视频等来表达。 4. 属性(值): 从一个实体指向它的属性值。不同的属性类型对应于不同类型属性的边。属性值主要指对象指定属性的值。如“面积”、“人口”、“首都”是几种不同的属性。属性值主要指对象指定属性的值,例如960万平方公里等。 5. 关系: 形式化为一个函数,它把 k 个点映射到一个布尔值。在知识图谱上,关系则是一个把 k 个图节点(实体、语义类、属性值)映射到布尔值的函数。
Relevant Link:
https://blog.csdn.net/u011801161/article/details/78733954/ https://www.cnblogs.com/XBWer/p/4627587.html
2. 知识图谱定义
0x1:知识图谱结构 - 由实体以及之间的关联组成知识图谱
简而言之,就是表现为图形式的知识,用以刻画实体(entity),属性(attribute),关系(relationship)三者之间的关系。如下图所示,节点表示为实体,每个节点都有相关属性,而节点之间的边则刻画了两实体之间的关系。
来看一个例子,在下面这个简单的知识图谱中:
这个知识图谱中,有三个实体,entity = {John Lennon, Beatles, Liverpool} ;
对于John Lennon, 他的attributes可能有:person(比较宽泛)...等;
他和Liverpool之间的关系,则是 John Lennon - bornIn - Liverpool。这里bornin就是一种关系(relation)
我们用关系去描述两个实体之间的关联,例如姚明和火箭队之间的关系;
同时每个实体都拥有一系列的属性,我们用“属性--值对“来刻画它的内在特性,比如说我们的人物,他有年龄、身高、体重属性。
0x2:知识图谱的表现形式
知识图谱有几种表现形式,我们逐一来讨论。
1. RDF triples (Resource Description Framework)
RDF是一种处理元数据的数据结构,元数据是指描述数据的数据或者说是描述信息的信息。例如,书的内容是书的数据,作者的名字、出版社、地址是书的元数据。
RDF的基本构造为:
陈述(或者叫做声明,statement)了一个资源-资源具有的属性(attribute)-属性值(value)
即,subject-predicate/relation-object)的三元组。
它表现的是一个数据模型,通俗的说一个陈述就是一个什么事物(资源)具有什么属性(属性),这个属性是怎样的属性(属性值)。
每一个被描述的资源拥有一个统一资源标识符(URI)。URI可以是URL或者是其他诸如电话号码、国际标准图书编号ISBN和地理坐标等能唯一标识对象的符号。
属性同样也需要用URI来标识,防止同义词造成的混乱。
2. ABox (assertions) versus TBox (terminology)
Tbox是关于概念术语的断:Tbox声明概念和角色间的包含关系
Abox是关于个体的断言:Abox是关于个体的实例断言集合,断言包括声明个体是某概念的实例,以及个体之间的二元关系
例如:
Abox -> A is an instance of B / John is a Person
Tbox -> All Students are Persons / There are two types of Persons: Students and Teachers
3. Semantic Web
语义Web的核心思想就是通过提升描述信息的语义本体以及规范化程度来支持更加方便迅速和智能化的信息集成、聚合与融合。
被标注的数据可以为自动化的一些操作提供关键的资源,但是这一点也是它的弱点所在,对于大量的不标准的语义表达,需要标注很多的数据。
4. Information Extraction from Text
chunking, polysemy/word sense disambiguation (多义词) , entity coreference , relational extraction
Parsing "猴子喜欢吃香蕉。" POS Tagging == "猴子/NR 喜欢/VV 吃/VV 香蕉/NN 。/PU" Chunking == "(NP 猴子)(VP 喜欢吃香蕉)"
0x3:知识的获取来源
1. Structured Text : Wikipedia Infoboxes, tables, databases, social nets 2. Unstructured Text : WWW, news, social media, reference articles 3. Images 4. Video : YouTube, video feeds
0x4:知识库
1. 知识库的种类
知识库目前可以分为两种类型:Curated KBs 和 Extracted KBs
1. Curated KBs:以yago2和freebase为代表,他们从维基百科和WordNet等知识库抽取了大量的实体及实体关系,可以把它理解城一种结构化的维基百科。 2. Extracted KBs:主要是以Open Information Extraction (Open IE), Never-Ending Language Learning (NELL)为代表,他们直接从上亿个网页中抽取实体关系三元组。与freebase相比,这样得到的实体知识更具有多样性,而它们的实体关系和实体更多的则是自然语言的形式,如“姚明出生于上海。” 可以被表示为(“Yao Ming”, “was also born in”, “Shanghai”)。直接从网页中抽取出来的知识,也会存在一定的噪声,其精确度低于Curated KBs。
目前行业内使用的比较多的还是Curated KBs,主要是因为Curated KBs比较简单,容易构建,噪音少。
2. 什么是知识库
a) “姚明出生于上海”
b) “姚明是篮球运动员”
c) “姚明是现任中国篮协主席”
以上就是三条知识,把大量的知识汇聚起来就成为了知识库(Knowledge Base)。我们可以从wikipedia,百度百科等百科全书获取到大量的知识。但是,这些百科全书的知识是由非结构化的自然语言组建而成的,这样的组织方式很适合人们阅读但并不适合计算机处理。
Relevant Link:
https://www.jianshu.com/p/cd937f20bf55 http://baijiahao.baidu.com/s?id=1592653047313321258&wfr=spider&for=pc https://zhuanlan.zhihu.com/p/29848125
3. 知识图谱构建流程
知识图谱流程:知识获取,知识融汇,知识存储,查询式语意理解,知识检索和可视化。
0x1:知识获取
在大数据环境下,存在大量的结构化/非结构化/半结构化的数据,这种数据是无法直接被计算机计算、存储、检索、挖掘的,需要进行结构化处理。
我们用一句话作为例子:
以上两个过程包括以下流程:
首先对句子进行分词分句、句法分析、词性标注、命名实体识别等操作,然后要进行一些指代消解(比如识别出Lennon和John在这个句子里都指的是John Lennon),最后抽取出合适的实体、关系、属性等信息(RDF三元组)
1. Tokenization & Sentence Splitting
分词是利用一些正则表达式来做的,不过并不简单,尤其当面对中文这种不是以空格分割的语言以及涉及一些特定领域例如生物的文本,分词会很困难。
2. Tagging the Parts of Speech
结合上下文是词性标注的一个重点,因此在标注时一定要考虑整个句子,可以采用的方法主要有:结构化预测(特殊的分类问题)、条件随机场(CRF)、CNN、LSTM等
3. Detecting Named Entities
所谓的命名实体就是人名、机构名、地名以及其他所有以名称为标识的实体。更广泛的实体还包括数字、日期、货币、地址等等。
4. Dependency Parsing
Dependency Paths
这个句法依存分析还是很重要的,因为对于像这个句子,必须知道to是属于born to 才能抽出John是Julia和Alfred Lennon的孩子这个信息,还有很多同位语的关系,都是需要分析后才能抽取出来的。
5. Within-document Coreference
6. Rule-Based Extraction
设置一些规则surface patterns,例如下图所示:
利用这些结合了分词、句法依存关系、命名实体等结果的规则进行抽取,变化之处包括:规则除了人工制定还可以迭代学习,规则可以添加一些优先级,或是概率。
这种方式会有比较高的precision,因为只要符合规则的基本上都会是对的;但是recall会很低,因为有很多会是规则无法覆盖的
7. Supervised Extraction
将分词、句法依存关系、命名实体等结果作为特征,然后运用机器学习的方法去训练、分类、预测。不过这种方法要求大量的标注数据以及特征工程用以学习,成本颇高。
8. Entity Resolution & Linking
将实体和对应的属性进行relation linking。
影响实体识别指代的问题主要是两大部分:同名实体以及同一实体多个名字。
可以应用的一个entity linking的方法:
首先应该先generate出一系列相关的candidate,然后先根据实体的type在这里应该是Location或Organization去除掉是人名的两个candidate;然后考虑Coreference(共指),可能前后文有提及到UWashington 或是 Huskies,那么从剩下的candidate中找出它们所共同指代的Washington Huskies和University of Washington;最后可以考虑Coherence(连贯性),因为我们知道UCLA Bruins是指UCLA大学棕熊队,根据上下文的一致性,判断Washington在这里也应该是一个球队,因此只剩下Washington Huskies这个备选。
自此,整个NLP+IE的流程就可以结束了
0x2:知识融合
面对网络上获取的大量数据,其格式,属相等需要统一,这称为异构数据的融合。
实体和关系是图谱中基本要素,如同图中的顶点和边一样,实体的重要度根据PageRank等算法进行排序。
在知识融合过程中,还需要通过推理检测逻辑矛盾,通过聚合、分类把知识具体化和分类整合。
0x3:知识存储
主要依赖于海量数据存储技术来管理大规模分布式的数据,以实现大容量,可扩展,高可靠性和高性能。
0x4:查询式语意理解
各种查询式方法,查询式语意的分析,分词,标注,纠错,语法分析,与知识库匹配,用户情感及语境,查询式扩展,主要以自然语言处理和人工智能为基础。
0x5:知识检索
此阶段涉及到信息检索,知识挖掘扥关键技术(相似性,重要性)。对查询语意进行解析,与知识库的知识匹配,进行统计,排序,推理,预测。为用户查询出关键完整准确的有效信息,同时推荐用户可能感兴趣的信息(涉及到推荐系统)。
0x6:可视化展现
提升用户体验和效果,更注重内容显示粒度上的把握,需要涉及到Web客户端技术,可视化技术,人机交互技术帮助用户提高体验效果
Relevant Link:
https://blog.csdn.net/u014794992/article/details/52993814 https://zhuanlan.zhihu.com/p/29931853 https://kgtutorial.github.io/