知识图谱之理论概述

本篇是知识图谱的开篇,这篇博客,咱不谈技术细节,只谈理论,力求讲明白什么是知识图谱?为什么要做知识图谱?怎么做知识图谱?

概论

移动互联网的发展已接近瓶颈,5G的时代也即将到来,万物互联已成为了可能,人与人之间、人与物之间、物与物之间都产生了联系,这种互联产生的数据是爆发性的增长,而且这些数据恰好可以作为分析关系的有效原料,个体之间的关系必然成为我们需要深入分析的一部分。在一项任务中,只要有关系分析的需求,知识图谱就会派上用场。

什么是知识图谱?

其实在2012年谷歌就提出了“知识图谱”这一概念,从学术的角度,我们可以对知识图谱给一个这样的定义:“知识图谱本质上是语义网络(Semantic Network)的知识库“。但这有点抽象,所以换个角度,从实际应用的角度出发其实可以简单地把知识图谱理解成多关系图(Multi-
relational Graph),再通俗点说就是:实体与实体之间发生关联关系的网络。
在知识图谱里,我们通常用“实体(Entity)‘来表示图里的节点,这个实体可以是现实世界中的事物,比如人、地名、概念等,用实体与实体之间的“关系(Relation)‘来表示图里的边。现实世界中的很多场景非常适合用知识图谱来表达。比如一个社交网络图谱里,我们既可以有“人”的
实体,也可以有“公司‘的实体。人和人之间的关系可以是朋友的关系,也可以是同事的关系。人和公司之间的关系可以是现任职,或者“曾任职的关系。
#pic_center在这里插入图片描述
以上简单的一个社交任职的关系图谱,绿色的表示人名实体,蓝色的表示公司实体,边表示实体关系,到这里相信你们已经清楚了知识图谱的基本概念了。

为什么要构建知识图谱?知识图谱的应用

为什么要构建知识图谱?因为知识图谱有以下好处:

  • 知识图谱把复杂的知识领域及知识体系通过数据挖掘、信息处理、知识计量和图形绘制显示出来,表示该领域的发展动态及规律,为该领域的研究提供全方位、整体性、关系链的参考;
  • 知识图谱是智能社会的重要生产资料,如果把人工智能比作一个“大脑”,那么深度学习是“大脑”的运转方式,知识图谱则是“大脑”的知识库,而大数据、GPU并行计算和高性能计算等支撑技术就是“大脑”思维运转的支撑;
  • 知识图谱是真实世界的语义表示,其中每一个节点代表实体连接节点的边则对应实体之间的关系异构数据通过整合表达为知识,图的表达映射了人类对世界的认知方式,知识图谱非常适合整合非结构化数据从零散数据中发现知识,从而帮助组织机构实现业务智能化。
    以上三点是官话,讲人话就是:如果某个垂直领域涉及的概念或者实体关系错综复杂,难以表示和利用,但是呢又有潜在的研究价值,能够直接或者间接的为公司的其他项目和业务带来收益,那么构建知识图谱就很有必要,是一个不错的选择,否则就没有必要,因为构建一个知识图谱是需要一定的投入的。
    下面说说知识图谱的应用,就目前来说,知识图谱已经广泛应用在了医疗、电商、金融证券等领域,拿医疗来举个例子:假如去医院看病,首先跟医生描述自己的症状,比如头晕、耳鸣(这是症状symptom),医生根据你的描述,安排做血常规或者CT(这是检测手段test),根据检测结果,医生判定:得了xx病(disease),并且给开了药或者打点滴(这是治疗手段treatment),这一系列流程下来,就可以构建一个简单的知识图谱,其中symptom、test、disease、treatment就是实体,什么症状对应什么病、什么病开什么药等等这些就是实体关系。当然了,这是我举的一个很简单的例子,实际情况远远比这个复杂。
    在这里插入图片描述
    上面这张图就是医疗领域的知识图谱的一个局部实例。
    电商中知识图谱的应用也很普遍,下图就是电商知识图谱的一个简单实例。
    在这里插入图片描述

在电商中,用户类型和商品的品类就是很重要的实体,当然了,除此之外还有其他大的外部实体,商品实体之间存在着搭配、相似、互斥等等的关系,用户实体与商品实体之间存在着偏好、类似与用户画像的关系,当然还有更为复杂的其他关系,这主要看怎么使用了,可以在搜索、推荐、智能对话中使用。

怎么构建知识图谱?

知识图谱的构建是后续应用的基础,一般构建知识图谱分为两大步:

  • 知识抽取:把数据从不同的数据源中抽取出来,这是知识图谱构建的前提和基础;
  • 构建图谱:通过第一步知识抽取,利用抽取的实体以及实体与实体之间的关系构建知识网络,形成图谱,这一步一般是通过图数据库来做,用的比较多的是Neo4j。

利用Neo4j构建图谱我后面会详细讲解,这里先讲第一步知识抽取的内容。知识抽取又被称为信息抽取,其难点在于处理非结构化数据,在数据处理的整个过程中,主要涉及到以下几个方面的自然语言处理技术:

  • 实体命名识别;
  • 关系抽取;
  • 实体统一;
  • 指代消解;

以上四种技术,下面简要说明,这里不作详细展开。

实体命名识别

在这里插入图片描述

首先是实体命名识别,就是从文本里提取出实体并对每个实体做分类/打标签:比如从上述文本里,我们可以提取出实体“NYC",并标记实体类型为“Location";我们也可以从中提取出‘'Virgil’s BBQ",并标记实体类型为“Restarant"。这种过程称之为实体命名识别,这是一项相对比较成熟的技术,有一些现成的工具可以用来做这件事情,但是对于一些垂直领域比如医疗,会涉及到复杂的实体,那么现有的工具就不行了,需要自己搭建并训练模型来识别。

在这里插入图片描述

关系抽取

在完成实体识别之后,我们可以通过关系抽取技术,把实体间的关系从文本中提取出来,比如实体“hotel’’和“Hilton property’’之间的关系为“in","hotel’’和“Time Square’’的关系为“near"等等。

实体统一和指代消解

另外,在实体命名识别和关系抽取过程中,有两个比较棘手的问题:一个是实体统一,也就是说有些实体写法上不一样,但其实是指向同一个实体。比如“NYC"和“New York"表面上是不同的字符串,但其实指的都是纽约这个城市,需要合并。实体统一不仅可以减少实体的种类,也可以降低图谱的稀疏性(Sparsity);另一个问题是指代消解,也是文本中出现的“it", “he”, “she”,这些词到底指向哪个实体,比如在本文里两个被标记出来的“it"都指向“hote“这个实体,实体统一和指代消解问题相对于前两个问题更具有挑战性。
到这里本文就讲完了,后续会重点讲解实体识别、关系抽取以及利用图数据库Neo4j搭建知识图谱。

发布了24 篇原创文章 · 获赞 2 · 访问量 1174

猜你喜欢

转载自blog.csdn.net/qq_40176087/article/details/103796829