语义计算、知识图谱与智能问答(实例)
本文,以医药知识图谱“神机医药”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。
例如在通过“语义计算”,确定连接关系如下:
{ 药品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是基于“语义计算”构建的知识图谱搜索引擎,在网上搜集了:
15606条“药品”信息;
14172条“疾病”信息;
5756条“症状”信息;
12万条“问答”信息。
。由于爬取网页信息本身不规范,信息不规范,因此,没有进行完全的规范“知识本体”设计(知识格式化)。
1、“语义计算”
构建知识图谱的第一步是“语义计算”。
(1)“药品”与“疾病”相关性语义计算
通过对15606条“药品”说明书文本“语义计算”,抽取对应“疾病”的语义;再与14172条“疾病”信息文本、5756条“症状”信息文本进行“语义计算”,得到:
15606 X (14172 + 5756)个“药品”与“疾病”、“症状”的相关度。
(2)“药品”与“药品”相关性语义计算
通过对15606 条“药品”说明书文本的“语义计算”,抽取对应“疾病”的“语义”,分别与其他“药品”信息进行“语义计算”,得到:
15606 X(15606 -1)个“药品”的相关度。
(3)“疾病”与“疾病”相关性语义计算
通过对14172条“疾病”信息、5756条“症状”信息进行“语义计算”,得到:
(14172 + 5756)X (14172 + 5756 – 1 )个“疾病”的相关度。
(4)“问答”与“药品”、“疾病”、“疾病”相关性语义计算
通过对12万条“问答”,与14172条“疾病”信息、15606条“药品”信息、5756条“症状”信息进行“语义计算”,得到:
12万X(14172+15606+5756)个“问答”与“药品”、“疾病”、“疾病”的相关度。
2、构建“语义网络”
通过上述“语义计算”,得到“药品与疾病”、“药品与药品”、“疾病与疾病”、“问答与药品、疾病”相关度,由此构成医药知识相关“语义网络”。
3、医药知识图谱“神机医药”APP
在华为应用商店,搜索“神机医药”进行下载APP,安装后,在手机桌面出现“神机医药”APP图标,点击图标,进入“神机医药”APP。
点击搜索框,进入搜索页面,
选择“药品”或“疾病”,在搜索框内输入查询的关键词(或选择历史搜索关键词),搜索包含关键词的“药品”或“疾病”。
如,选择“药品”,在搜索框内输入“干眼症”, 搜索出“知识记录”文本中,包含“干眼症”的药品,
如,选择“卡波姆滴眼液”,屏幕上显示详细信息,
上面显示“相关药品”(关联药品)、“相关疾病”(该药品治疗的疾病)。这是通过“语义计算”得到“药品”与“药品”之间的相关性,确定了“卡波姆滴眼液”与其他“药品”的相关度。
点击“相关药品”,
屏幕上出现与其相关的药品,其中,“复方门冬维甘滴眼液”、“七叶洋地黄双苔滴眼液”、“维生素C”、“鱼肝油”等,都是与“卡波姆滴眼液”治疗病症相关的药品。
点击“相关问答”,屏幕出现:
四、智能问答
1、目前的“智能问答”
目前在各大“电商”网站上看到的所谓“智能问答”,其实没有任何“智能”,都是模式化问答。事先准备“问题”和匹配的“答案”,用户选择事先准备好的问题,计算机给出实现准备好的答案,没有任何智能而言。
2、“语义计算 - 知识图谱”与“智能问答”
“语义计算 – 知识图谱”不同于各大“电商”网站上的自动问答。从“神机医药”APP可以看出,与现在各大“电商”网站上所谓的“智能问答”比较,存在以下区别:
(1)问题
目前,各大“电商”网站上所谓的“智能问答”没有任何“智能”而言,其中的“问题”,都是针对用户经常提问问题的整理、归纳,而用户提出的问题五花八门,如果不是事先准备好的提问,“智能问答”无法进行回答。
“神机医药”上搜集了12万个医生问答,但并没有像“电商”网站上所谓的“智能问答”给出12万个“提问”,而是根据用户当前阅读浏览的内容(语义),通过“知识图谱”,自动地给出相关的问答。
(2)答案
虽然搜集的12万个医生问答,都是医生根据用户的提问所做的回答,是“一对一”的问答,但“神机医药”通过对医生回答进行“语义计算”,抽取“语义”,再通过“语义计算”与“药品”、“疾病”、“症状”描述文本进行“语义计算”,得到相关性,可以将12万“医生回答”应用到:15606条“药品”、14172条“疾病”和5756条“症状”中,计算机可以自动回答提问的任何问题,而不是“一对一解答问题”。
从“神机医药”可以看出,“语义计算 - 知识图谱”可以做到真正的“智能问答”,无需实现准备模式化的提问、也无需事先指定回答,“知识图谱搜索引擎”可根据提问的只言片语(关键词),给出回答问题的“解集合”,再通过“知识图谱”的语义计算得到的“相关度”,迅速在现有回答知识中,最符合问题的回答。
六、结束语
《神机医药》app,通过“语义计算”,形成“语义网络”,进一步通过“知识网络桥”KNB打通不同“语义网络”,构建知识图谱搜索引擎。改变了传统“关键词搜索引擎”的结构,将用户输入关键词的搜索引擎“被动搜索”,变成了知识图谱的“主动搜索”,大幅度搜索提高了搜索效率,使搜索引擎更加“智能化”。
在“智能问答”方面,“知识图谱”可以根据语义计算,快速、动态地寻找最优答案,准确回答用户提出的问题。
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' |
‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" |
“Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash |
– is en-dash, — is em-dash |
创建一个自定义列表
- Markdown
- Text-to-HTML conversion tool
- Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 是通过欧拉积分
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎
来源:CSDN
作者:bicliu
链接:https://blog.csdn.net/bicliu/article/details/104208747