赞
踩
本文,以医药知识图谱“神机医药”APP为例,简述如何通过“语义计算”构建知识图谱,利用知识图谱进行“智能问答”服务。
“神机医药”APP搜集了15606条“药品”信息,14172条“疾病”信息,5756条“症状”信息,12万条以上的“问答”信息,通过“语义计算”确定知识之间的相关性、相关度,自动构建“医药知识图谱”,动态解答医药常识问题。
在介绍“语义计算”自动构建“医药知识图谱”,动态解答医药常识问题之前,先讨论一些相关概念。
一、知识图谱相关概念
1、知识图谱与智能问答
Google公司于2012年提出知识图谱,目的是根据知识之间的关系、构建知识结构,在关键词搜索基础上,利用知识图谱自动搜索相关知识。
从广义上看,搜索引擎也是解答问题的一种形式,加入知识图谱后,可通过“知识图谱”寻找相关答案。知识图谱应用于智能问答的关键在于“语义计算”,具体为三点:
第一、 构建知识图谱
在构建知识图谱时,通过“语义计算”确定说明知识文本的含义;
第二、 理解问题
回答问题的前提是理解问题,通过“语义计算”确定问题的含义;
第三、 解答问题
在解答问题时,通过“语义计算”与知识图谱中的知识进行最优匹配。
2、知识图谱是“图”吗?
从字面上看,知识图谱是图,是知识结构图。对于少量知识,用图来表示知识结构更为清晰,容易理解,但Google是互联网搜索引擎公司,网页数量巨大,无法在一个屏幕上用图来表示知识结构,显然,简单地将“知识图谱”理解为“图”或“知识可视化”是片面的,Google 公司提出“知识图谱”目的是构建搜索引擎,而不是“知识可视化”,显示知识结构图。
3、知识图谱表达的是“知识结构关系”吗?
通常,所谓“图谱”,是用图的形式来表示某种事物关系结构,如“家谱”,表示家族关系结构。因此,知识图谱是“知识关系结构”,用图来表示为,由“节点”和“连线”(边)组成,“节点”为“知识”,“连线”(边)为“知识”之间的关系。
4、什么是知识图谱中的“知识”?
既然知识图谱表达的是“知识结构关系”,那么,什么是“知识”?
对汉字而言,一个“词”、甚至是一个“字”都有特定含义,都是“知识”。那么,一个“词”或一个“字”就是知识图谱中的“知识”吗?显然不是,因为,“字”或“词”存在多义性,在不同的语境下含义不同,仅看一个“字”或“词”不知道其具体含义是什么?必须用一段文字进行说明,配合一定的语境才可确定其具体含义。因此,从自然语言处理NLP来看,“知识”是一段文本说明的含义,对于互联网搜索引擎来说,是URL页面记载内容说明的含义 。
5、知识图谱是“语义网络”吗?
所谓“语义”是语言的含义,从自然语言处理NLP角度看,“知识”是一段自然语言文本所表达的含义。即便是数学,其中用数学符号语言(公式)来定义数学模型,但离开文字说明,人们也很难理解其含义。因此,对于计算机处理而言,“知识”是一段文本表达的含义,也可以说是“语义”。
用二维平面图来表示,知识图谱是由节点和连线做组成的网络图:
图
一个“知识”是一个节点,可能与其他很多“知识”相关,在图上表现为有很多连接的边,由此形成复杂的连接网络。
因为,“知识”是一段文本说明的含义,所以说,是知识图谱是“语义网络”,是将诸多说明“知识”的文本进行“语义计算”后,组成的“语义网络”。
6、如何运用“语义计算”进行“知识节点”关联?
构建知识图谱的关键在于,如何确定知识之间的关联?因为,“节点”之间的“连线”表示为“知识”与“知识”之间存在关系,但是什么关系?关联度有多大?如何计算?这是构建知识图谱的重点。
(1)定性关系
在知识图谱中,“知识”之间的“关系”可以是一个简单的定性说明,仅仅是一个文本描述,如:父子关系、夫妻关系、业务关系、隶属关系等。在计算上,这样的关系是0,1二值关系,即为是否存在关系?什么关系?无需计算。
(2)定量关系
在自然界很多情况,一个“知识”与其他很多“知识”都有关系,关系有强弱之分。简单的0,1关系不足以表达关系的强弱,需要更详细的定量分析,计算“相关度”(或关联度)。对搜索引擎来说,“相关度”也就是搜索结果排序Page Rank;对“知识图谱搜索引擎”来说,“相关度”需要“语义计算”,也就是计算语言含义的相似度,因此,定量分析为根据“语义”的相似度,以此来确定知识之间的定量关系。
定义:
(1)设:K(X)为一个知识“节点”,是一段说明“知识”的文本;
(2)设:KR(X,Y)为知识 X与知识Y之间的关联度,在图中,为“知识”节点之间连线(边)的计算权重。
(3)设:相关度KR(X,Y)是一个0-1之间的数,0≤KR(X,Y)≤1=100%。
若,KR(X,Y)=0, 则,两个“知识”没有关系;
若,KR(X,Y)= 100%,则,两个“知识”相等;
若,KR(X,Y)≥80%, 则,两个“知识”相近,在具体应用时可以设定阀值,根据应用情况来设置。
虽然K(X)知识“节点”是一段说明“知识”的文本,但不能简单地用字符串比较来计算关联度KR(X,Y)。因为,文本的长度也不同,证人语言中有很多同义词或意思相近的词,因此,虽然文本长度不同、用词不同,但说明的内容相同或相近,所以,简单的字符串比较无法确定知识的相关性,而“内容相似度计算”可以解决“语义计算”问题,计算知识之间的关联度KR(X,Y)。
7、“知识本体”、“知识实体(实例)”、半结构化数据
(1)知识本体
所谓“知识本体”相当于关系数据库RDB中的表结构,是记录知识的结构,也就是用X维特征来描述“知识”。
(2)知识实体(实例)
所谓“知识实例”相当于关系数据库RDB中的记录,是一个独立的知识记录。
(3)半结构化数据
虽然知识可以存储为格式化记录,但知识记录并非关系数据库RDB中的结构化数据。因为,虽然“知识记录”有结构,但字段存放的是文本说明的内容,无法用字符串比较进行计算,无法用结构化查询语言SQL查询,因此,“知识记录”虽然有结构,但不是“结构化数据”,而是“半结构化数据”。
二、“语义计算”自动构建“知识图谱”
以下用一个实例来说明,如何利用“语义计算”来自动构建医药知识图谱,该实例可在华为应用商店,搜索“神机医药”进行下载。
在“神机医药”APP中,有“药品”和“病症”两类知识,在互联网上爬网页,每个“药品”、“病症”都是一个知识K(X),“药品”和“病症”存在以下4种关系:
“药品”对应的“病症”(药品治疗的病症);
“病症”对应的“药品”(病症用什么药品治疗);
“药品”相关的“药品”(可以治疗相同或相近疾病的药品);
“病症”相关的“病症”(相似或相关的病症);
通过“语义计算”,得到上述4种关系的相关度KR(X,Y),建立索引,由此完成自动构建 “医药知识图谱搜索引擎”,加上手机交互界面,形成“神机医药”APP。以下是具体步骤和方法。
1、抽取知识本体(实例),形成知识记录
构建知识图谱第一步是,定义“知识本体”,也就是根据知识的特点,定义存储知识记录的格式。
对同一类的知识K(X),可用多个维度来描述,在关系数据库RDB中也就是记录的字段变量:
例如,对“疾病”可有:症状、检验方法、治疗手段等字段;
例如,对“药品”可有:适应病症、用法、成分、副作用、禁忌、注意事项等。
可见,对于一类的知识本体,可用统一的格式来描述,形成格式化记录(知识实例),不同类型的知识,有不同格式的记录,在知识图谱中,每个K(X)知识节点,都是一个独立的知识记录。
2、知识记录
“神机医药”APP通过对自由格式网页处理,得到半结构化知识记录,其中包括两种知识本体:“药品”和“疾病”,有两种格式的知识记录,每个都是一条独立的“知识记录”。
3、计算相关性
用“内容相似度计算”,对“知识记录”进行相关性计算,得到“知识记录”之间的相关度KR(X,Y),也是“节点”之间的连接权重,是0 – 100%之间的小数。
4、非对称性
相关度KR(X,Y)具有非对称性,KR(X,Y)≠ KR(Y,X)。
也就是说,知识K(X)对知识K(Y)的关联度,与知识K(Y)对知识K(X)的关联度不同,需要单独计算。
5、构建“医药知识图谱”
通过“内容相似度计算”,得到“药品”、“疾病”知识记录的相关度,由此得到关系结构图(知识图谱)。
将关系结构图保存,组成倒排序索引,构成“医药知识图谱”的关系表。
6、知识网络KN
每个知识K(X),都可能与很多其他知识K(Y)相关,相关度KR(X,Y)>0的知识形成“知识网络”KN(Knowledge Network)。
例如:在“图-3”中,有4个知识网络KN(i),i=1,2,3,4:
知识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}。
7、知识网络桥KNB
知识图谱最重要的用途是相似内容“推荐”,可根据知识之间的相关性进行智能化“推荐”,但这只能在一个“知识网络”KN(i)中进行,因为,只有在一个“知识网络”KN(i)中的知识节点具有“连线”,无法“推荐”其他“知识网络”KN(j)中的知识,由此形成了“知识壁垒”。
如何建立不同“知识网络”KN(i,j)之间的通道,打通“知识壁垒”?将不同的知识体系融会贯通,这就需要在各“知识网络”KN寻找通道。具体方法如下:
在各“知识网络”KN中,寻找相同的“知识”K(X),得到交集:
“知识交集”= KN(i)∩ KN( j ),
“知识交集”为不同“知识网络”KN( i - j )之间的连接“桥”,称之为“知识网络桥”KNB(Knowledge Network Bridge),KNB连接各个“知识网络”。
例如:在“图-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)。
8、知识融合
“知识网络桥”KNB连接不同的“知识”体系,因此,“知识网络桥”KNB可以打破“知识壁垒”,使不同体系的知识相互融会贯通。
科技领域很多重要进步,正是因为将其他“知识体系”的引入到本“知识体系”,推动技术进步。
9、知识系统组成知识神经元网络
首先,将众多分散、独立的“知识”连接起来,组成相互联通的“知识网络”KN。
其次,将众多的“知识网络”KN用“知识网络桥”KNB连接起来,组成“知识网络系统”KNS(Knowledge Network System),将分散的知识有机地连接起来,便于相关主题知识聚类和自动搜索。
在“知识网络系统”KNS中,每个问题的“解”都是一组“知识集合”组成的“知识网络”KN。
例如在通过“语义计算”,确定连接关系如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。