![2c1c0953fdec53a1c19272ecd70b354c.png](https://i-blog.csdnimg.cn/blog_migrate/a020795df28bf1ba1d7f4cf5a35cbb44.jpeg)
一、知识图谱相关概念
Google公司于2012年提出知识图谱(Knowledge Graph)概念,其目的是,在关键词搜索基础上,根据知识之间的关系构建知识图谱,自动搜索相关知识,提高搜索效率。而如何构建知识图谱涉及商业机密,Google公司没有对外披露。
对于海量信息、大规模领域知识图谱,如采用人工构建,需大量领域专家,工作量大、周期长,因此,如何自动构建知识图谱,是知识图谱搜索引擎的关键技术。
北京元则人工智能技术有限公司利用“内容相似度计算”,实现了自动构建知识图谱搜索引擎,该技术已获国家发明专利。
在具体介绍如何利用“内容相似度计算”,自动构建知识图谱搜索引擎之前,先讨论一些相关概念,以便理解。
1、知识图谱是“图”吗?
从字面上看,知识图谱是图,是知识结构图。对于少量知识,用图来表示知识结构更为清晰,容易理解,但Google是互联网搜索引擎公司,网页数量巨大,无法在一个屏幕上用图来表示知识结构,显然,简单地将“知识图谱”理解为“图”是片面的,Google 公司提出“知识图谱”的目的是,利用知识结构进行搜索,而不是为了显示图。
2、知识图谱表达的是“知识结构关系”吗?
通常,所谓“图谱”,是用图的形式来表示某种事物的关系结构,如“家谱”,表示家族关系结构。因此,知识图谱是“知识关系结构图”,由“节点”和“连线”(边)组成,“节点”为“知识”,“连线”(边)为“知识”之间的关系。
3、什么是一个“知识”?
既然知识图谱表达的是“知识结构关系”,那么,什么是“知识”?
对汉字而言,一个“词”、甚至是一个“字”都有特定含义,都是“知识”。那么,一个“词”或一个“字”就是知识图谱中的“知识”吗?显然不是。因为,不知道其具体含义是什么?必须用一段文字进行说明。因此,从自然语言处理NLP来看,“知识”是一段文本,对于互联网搜索引擎来说,是从URL页面中抽取的内容。
4、知识图谱是“语义网络”吗?
所谓“语义”是语言的含义,文本是语言数据,文本可以具体表达含义。从自然语言处理NLP角度看,“知识”是一段文本,即便是数学,其中用数学符号语言(公式)来定义数学模型,但离开文字说明,人们也很难理解其含义。因此,“知识”的数字化表达形式,是一段说明含义的文本,也可以说是“语义”。
用二维平面图来表示,一个“知识”是一个节点,可能与其他很多“知识”相关,在图上为有很多连接的边,由此形成复杂的连接网络。
![74bbd3e6591021437f37192a189188b9.png](https://i-blog.csdnimg.cn/blog_migrate/9bf20364d12309fbb2651282f830fb74.png)
因为,“知识”是一段文本说明的含义,因此说,是知识图谱是“语义网络”,是将诸多说明“知识”的文本进行“语义计算”后,组成的“语义网络”。
5、“知识节点”如何进行关联?
“节点”之间的“连线”表示为“知识”与“知识”之间存在关系,但是什么关系?关联度有多大?如何计算?这是构建“语义网络”的重点。
(1)定性关系
在知识图谱中,“知识”之间的“关系”可以是一个简单的定性说明,仅仅是一个文本描述,如:父子关系、夫妻关系、业务关系、隶属关系等。这样的关系为0,1二值关系,即为是否存在关系?什么关系?
(2)定量关系
在很多情况下,一个“知识”与其他很多“知识”都有关系,也就是说,关系有强弱之分。简单的0,1二值关系不足以表达知识之间的关系,可见,如何进行定量分析?如何计算“相关度”?是“语义网络”要解决的技术问题。
对搜索引擎来说,对知识节点之间的“相关度”计算,也就是搜索结果排序Page Rank计算,因此,计算知识节点之间的“相关度”,是“知识图谱搜索引擎”必须要解决的问题。
定义:
(1)设:K(X)为一个知识“节点”,是一段说明“知识”的文本;
(2)设:KR(X,Y)为知识 K(X)与知识 K(Y)的关联度,是“知识”节点之间连线(边)的计算权重。
(3)设:相关度KR(X,Y)是一个小数,0≤KR(X,Y)≤1=100%。
若,KR(X,Y)=0, 则,两个“知识”没有关系;
若,KR(X,Y)= 100%,则,两个“知识”相等;
若,KR(X,Y)≥80%, 则,两个“知识”相近,是一个阀值,可根据应用设置。
虽然K(X)知识“节点”是一段说明“知识”的文本,但不能简单地用字符串比较来计算关联度KR(X,Y)。因为,自然语言很丰富性,有很多同义词或意思相近的词,虽然用词不同,文本长短不同,但说明的逻辑和内容很可能相同,因此,简单的字符串比较无法确定“文本内容”是否相同或相近。而“内容相似度计算”,恰好可以解决“文本内容”比较计算问题。
二、用“文本内容相似度计算”,自动构建“知识图谱搜索引擎”
以下用一个实例来说明,如何利用“内容相似度计算”来自动构建医药知识图谱搜索引擎。该实例可在华为应用商店,搜索“神机医药”进行下载,安卓手机也可在浏览器输入http://www.yuan-ze.cn/android/01/yykg_1.html 进行下载。
在“神机医药”APP中,有“药品”和“病症”两类知识,在互联网上爬网页,每个“药品”、“病症”都是一个知识K(X),“药品”和“病症”存在以下4种关系:
“药品”对应的“病症”(药品治疗的病症);
“病症”对应的“药品”(病症用什么药品治疗);
“药品”相关的“药品”(可以治疗相同或相近疾病的药品);
“病症”相关的“病症”(相似或相关的病症);
通过“内容相似度”计算,得到上述4种定性关系(是否相关?),同时得到定量关系-相关度KR(X,Y),建立倒排序索引,由此完成自动构建 “医药知识图谱搜索引擎”,加上手机交互界面,形成“神机医药”APP。以下是具体步骤和方法。
1、抽取知识本体(实例),形成知识记录
构建知识图谱第一步是,定义知识本体,也就是根据知识的特点,定义记录格式。
对一类知识K(X),可用多维度来描述,在关系数据库RDB中也就是记录的格式:
例如,对“疾病”可有:症状、检验方法、治疗手段等字段;
例如,对“药品”可有:适应病症、用法、化学成分、副作用、禁忌、注意事项等。
可见,对于一类的知识本体(实例),可用统一的格式来描述,形成格式化记录,不同类型的知识,有不同格式的记录,每个K(X)是一个独立的知识记录。
2、“知识图谱”中的记录是“半结构化数据”
虽然知识本体(实例)是格式化记录,但并非关系数据库RDBS中的结构化数据。因为,虽然“知识记录”有结构,但字段中存放的是“知识”文本说明的内容,无法用字符串比较进行计算,也无法用结构化查询语言SQL查询,因此,“知识记录”(或称“知识本体”、“知识实例”),是“半结构化数据”。
“神机医药”APP通过对自由格式网页处理,得到半结构化知识记录,每个“药品”和“疾病”都是一条独立的“知识记录”。
![86d887e312d7a5950e03db1d7be15a22.png](https://i-blog.csdnimg.cn/blog_migrate/1719d1b91ae7480ddc895ed7a95833e6.png)
3、计算相关性
用201410059196.1 号发明专利中的“内容相似度计算”,对“知识记录”进行相关性计算,得到“知识记录”之间的相关度KR(X,Y),也是“节点”之间的连接权重,KR是0 – 1或0 – 100%之间的小数。
4、非对称性
相关度KR(X,Y)具有非对称性,KR(X,Y)≠ KR(Y,X)。
也就是说,知识K(X)对知识K(Y)的关联度,与知识K(Y)对知识K(X)的关联度不同,需要单独计算。
5、构建“医药知识图谱”
通过“内容相似度计算”,得到“药品”、“疾病”知识记录的相关度,由此得到关系结构图(知识图谱)。
![74bbd3e6591021437f37192a189188b9.png](https://i-blog.csdnimg.cn/blog_migrate/9bf20364d12309fbb2651282f830fb74.png)
将关系结构图保存,组成倒排序索引,构成“医药知识图谱”的关系表。
6、“知识网络桥”KNB
(1)知识网络KN
每个知识K(X),都可能与很多其他知识K(Y)相关,具有相关度KR(X,Y),形成如图-3所示的“知识网络”KN(Knowledge Network)。
例如:在“图-1”、“图-3”中:
知识1、知识3、知识7,具有相关性, KN(1) = {知识1,知识3,知识7};
知识2、知识4、知识5,具有相关性, KN(2) = {知识2,知识4,知识5};
知识3、知识8, 具有相关性, KN(3) = {知识3,知识8};
知识4、知识6、知识7,具有相关性, KN(4) = {知识4,知识6,知识7}。
(2)知识网络桥KNB
知识图谱最重要的用途是,根据知识之间的相关性进行智能化自动搜索,但这只能在一个“知识网络”KN中进行,因为,只有在同一个“知识网络”KN中的知识节点具有“连线”。而如何建立不同“知识网络”KN之间的通道,将不同的知识体系融会贯通,这就需要在各“知识网络”KN寻找通道。具体方法如下:
在各“知识网络”KN中,寻找相同的“知识”K(X),得到交集:
“知识交集”= KN(i)∩ KN( j ),
“知识交集”为不同“知识网络”KN( i - j )之间的连接“桥”,称之为“知识网络桥”KNB(Knowledge Network Bridge),KNB连接各个“知识网络”。
![b88e898be2498444a546bfa21fc322c5.png](https://i-blog.csdnimg.cn/blog_migrate/08a58d3f03ee2e43943caff0113b2101.png)
例如:在“图-3”中:
知识1、知识3、知识7,具有相关性, KN(1) = {知识1,知识3,知识7};
知识2、知识4、知识5,具有相关性, KN(2) = {知识2,知识4,知识5};
知识3、知识8, 具有相关性, KN(3) = {知识3,知识8};
知识4、知识6、知识7,具有相关性, KN(4) = {知识4,知识6,知识7}。
KN 1与KN 3存在交集KN 1 ∩ KN 3 = {“知识3”},KN 1与KN 3通过“知识3”进行连接,“知识3”是KN 1与KN 3连接的“桥”KNB(1-3);
KN 2与KN 4存在交集KN 2 ∩ KN 4 = {“知识4”},KN 2与KN 4通过“知识4”进行连接,“知识4”是KN 2与KN 4连接的“桥”KNB(2-4)。
(3)知识融合
“知识网络桥”KNB连接不同的“知识”体系,因此,“知识网络桥”KNB可以打破“知识壁垒”,使不同体系的知识相互融会贯通。
科技领域很多重要进步,正是因为将其他“知识体系”的引入到本“知识体系”,推动技术进步。
(4)知识系统组成知识神经元网络
首先,将众多分散、独立的“知识”连接起来,组成相互联通的“知识网络”KN。
其次,将众多的“知识网络”KN用“知识网络桥”KNB连接起来,组成“知识网络系统”KNS(Knowledge Network System),将分散的知识有机地连接起来,便于相关主题知识聚类和自动搜索。
在“知识网络系统”KNS中,每个问题的“解”都是一组“知识集合”组成的“知识网络”KN。
例如在“图3”中:
{ 药品1,药品2,病症3,病症5}关联,KN 1={ 药品1,药品2,病症3,病症5};
{ 药品2,病症1、病症2、病症3}关联,KN 2={ 药品2,病症1,病症2,病症3}。
在KN 1、KN 2中,都存在“药品2”和“病症3”,交集:
KN 1 ∩ KN 2 = {“药品2”,“病症3”},
KN 1与KN 2通过“药品2”、“病症3”进行关联,KNB={药品2、病症3}。
从KN 1与KN 2的关联可知,在看似相互独立的知识体系之间,存在复杂的关联。人类的知识系统是由众多相互连通的“知识网络”组成得多回路复杂的知识系统,由此构成“知识神经元网络”。而恰恰正是因为在独立的知识之间存在复杂的关联,因此,普通人不经过长期的强化训练,很难形成解决具体问题的系统知识。
三、知识图谱搜索,神机医药手机APP
在华为应用商店,搜索“神机医药”进行下载APP,安卓手机也可在浏览器输入http://www.yuan-ze.cn/android/01/yykg_1.html进行下载APP。安装后,在手机桌面出现“神机医药”APP图标:
![bf73d9112138822192cc07d456b4e74a.png](https://i-blog.csdnimg.cn/blog_migrate/8fdfb185f3d4da0b81cd702a33d98e6d.jpeg)
点击图标,进入“神机医药”APP。
![961d7f093d5c55c5dc1890e3e5606dca.png](https://i-blog.csdnimg.cn/blog_migrate/629fca070f4d503a570f6c2af3e75c72.jpeg)
在搜索框内输入“干眼症”,
![f0840b768639dc60619c78781762290c.png](https://i-blog.csdnimg.cn/blog_migrate/4459a2008a6040dcaac9126d80d5e0ee.jpeg)
搜索出“知识记录”文本中,包含“干眼症”的药品,选择“卡波姆滴眼液”,
![a58c77f273a4875f9b7d6b26d8331de7.png](https://i-blog.csdnimg.cn/blog_migrate/b2ac359507810fefe6a15550e96f160a.jpeg)
得到“相关药品”(关联药品)、“相关疾病”(该药品治疗的疾病)。点击“相关药品”,出现与其相关的药品:
![f00f9000eb80173e9635e62d04c82a9b.png](https://i-blog.csdnimg.cn/blog_migrate/d5cac6f1b72d833fb7ecb71d1c3af627.jpeg)
五、结束语
《神机医药》app,通过“文本相似度计算”进行“语义计算”,形成“语义网络”,进一步通过“知识网络桥”KNB打通不同“语义网络”,由此实现自动构建知识图谱搜索引擎。
从《神机医药》app可以看出,“知识图谱搜索引擎”改变了传统“关键词搜索引擎”的结构,将用户输入关键词的搜索引擎“被动搜索”,变成了知识图谱的“主动搜索”,大幅度搜索提高了搜索效率,使搜索引擎更加“智能化”。