python知识图谱问答系统代码_知识图谱和问答系统
知识图谱和问答系统
发布时间:2018-06-19 05:32,
浏览次数:606
1. 前言
知识图谱(knowledge graph),是下一代搜索引擎、问答系统等智能应用的基础设施
,目前出现的产品有:百度“知心”、搜狗“知立方”等。本篇将介绍知识图谱基础知识,及其在自然语言处理方面(主要是问答系统)的应用。
2. 知识图谱概念
知识图谱,是一种基于有向图(directed graph)的数据结构,由节点(points)及有向边(directed
edges)组成,图中的每个节点称为实体(Entity),边代表实体间的逻辑关系(Relation)。
举一个例子,这是一个简单地描述旅游景点的知识图谱:
现在来解释为什么“知识图谱是下一代搜索引擎、问答系统等智能应用的基础设施”,如果把智能系统看成一个大脑,那么知识图谱就是大脑中的一个知识库
,它使得机器能够从“关系”的角度去分析、思考问题。以上图为例,从知识图谱中可以获取“泰山的海拔高度为1545米”、“衡山和恒山发音相同”等简单知识。
3. 知识图谱的表示
知识图谱可以使用三元组(entity-1,relation,entity-2)
来表示,每一条记录描述一个事实,例如:(五岳,五岳之一,泰山)表示“泰山是五岳之一”这样一个事实。需要注意的是,如果relation 是确定的,那么
entity-1 与entity-2 的位置不能够颠倒的,因为一个三元组描述一条有向边(事实);实体不一定得是现实生活中的一个具体事物,也可以是事物的一个属性值
,此时关系就是该属性。
我们用三元组来存储知识图谱,这时还需要考虑一个问题,那就是实体识别(Entity Recognition)与实体消歧(Entity
Disambiguation)。例如,实体“苹果”有可能是指水果苹果,也可能是指iphone。这时,我们对知识图谱需要做一些处理,修改一下搜索策略。
在建立知识图谱过程中,若发现歧义,则再增添对应上级节点,在筛选“苹果”一词时使用上级节点来消歧。这里再次强调知识图谱仅是基础设施
。后面会通过几个例子说明知识图谱的应用价值;再介绍知识推理(Knowledge Reasoning)技术,即怎样通过与用户互动教会智能系统完善知识图谱。
4. 知识图谱的应用
传统搜索引擎只是简单地根据用户输入的关键词去筛选目标网页,然后给出一堆网页链接。知识图谱的应用,除了给出相应的网页链接外,还会尝试
提供一些更加智能化的答案。例如,用户在必应搜索输入“taj mahal”将得到如下结果:
这里提供泰姬陵的近义词、旅游信息、地理位置、古代世界七大奇迹等,从而更好地发掘用户意图,
而不像传统搜索引擎那样死板,需要用户自己一条一条去筛选信息, 这样知识图谱技术就具有很大的商业价值了。
又例如,我直接在百度搜索输入“乒乓球”, 得到以下结果(其实我只是想搜索一下“张继科”,但是一时间忘了他的名字):
同时,知识图谱的应用能够使得搜索引擎获得一定的推理能力
。举一个例子,在百度搜索输入“梁启超的儿子的妻子”,传统搜索引擎只是简单地匹配网页,很难真正地理解用户意图,更别说回答这个问题了。然而知识图谱却可以令问题变得简单起来,我们先从知识库中获取梁启超的儿子是梁思成,然后再获取梁思成的妻子是林微因。
这样就能增强搜索引擎与用户间的互动,逐步变成一个智能问答系统。
5. 知识推理技术
这里再次强调知识图谱仅是基础设施
,因为它真的很简单,也没有什么高大上的技术,我们仅仅只是想将知识用这样一个形式存起来,以便由简单的知识学习出更高深的知识。举一个例子,知识图谱中仅存有如下信息:
那么智能问答系统是无法回答类如“康熙与乾隆之间是什么关系?”知识推理类的问题的,这时可以用过简单地加入人工规则:“父亲+父亲→祖父”来更新知识图谱,或者直接从用户互动中学习规则,当然用户互动时就需要上
统计知识了,不能说有网友回答“国籍相同关系”那么所有的祖父与孙子都是“国籍相同关系”。
接下来我们来看一个更复杂的例子,在百度搜索引擎中输入“孕妇可以吃荔枝吗?”得到如下结果:
这时智能问答系统可以返回“59%的网友认为能吃,28%的网友认为不能吃,13%的网友认为不能吃”。若用户继续问“不能吃的理由是什么?”,那就返回“不能吃”的网友回答。下面通过这个例子来思考
统计机器学习技术在知识推理中的应用。
我们分析一下,这些“网友回答”有些来自“宝宝树”,有些来自“有问必答网”,有些来自“育儿网”,我们可以利用爬虫去爬这些网站的问题及其回答,然后对问题做聚类
,先构建如下知识图谱:
具体问题与回答之间的逻辑关系边一开始留空,我们再对语义边上分类技术,把空余的边填补完整,当然也可能误分类
,例如百度例子中的第一个回答,“慎吃”被归为“能吃”。最后再对这些边做统计,就可以回答类似问题,利用语料库做知识推理,学习知识库里没有的知识,完善知识图谱。
python知识图谱问答系统代码_知识图谱和问答系统相关推荐
- python知识图谱问答系统代码_如何搭建一个基于知识图谱的问答系统(以医疗行业为例)...
原标题:如何搭建一个基于知识图谱的问答系统(以医疗行业为例) 问答系统(QA)已经成为人类访问十亿级知识图谱的流行方式.与网络搜索不同,在自然语言问题能够被精确地理解和映射到知识图谱上的结构化查询的前 ...
- python皮卡丘编程代码_再接再厉,用python编程13行代码解方程组(纯字符)
因为是示例为主,我们将方程组限制在二元一次方程组:x,y两个变量,两个方程.类似这样: 每个方程有两个变量,x和y,形式为:ax+by+c=d 由于这次有了两个方程,我们提取参数的代码就适合提炼为一个 ...
- python怎么测试c代码_如何正确测试python中的C-API,C-API返回错误代码
我的设置 我正在使用Python中的pytest和ctypes测试C库中的函数.C库中的每个函数调用一个嵌入式linux PCI板上的函数,然后C库函数返回一个整数,该整数映射到一组返回代码.如果函数 ...
- 知识图谱java实现_知识图谱:neo4j(四)Java API
知识图谱:neo4j(四)Java API 知识图谱:neo4j(四)Java API Neo4j Java API Neo4j 提供 JAVA API 以编程方式执行所有数据库操作.它支持两种类型的 ...
- python推箱子游戏代码_用python入门知识做推箱子游戏,若能打过第三关,则可以学会编程...
不得不说,Python小游戏是最适合入门编程的项目,因为太简单! 无论懂或完全不懂python,这样的小游戏,你都可以直接开发出来,原因很简单: 在详细教程里,会有从零基础开始,一步一步的教你完成这个 ...
- python设置excel字体颜色_[知识积累]python3使用xlwt时写入文档字体颜色和边框样式...
可借鉴的网址:https://www.programcreek.com/python/example/39979/xlwt.Alignment 可以直接通过pip安装xlwt 个人理解: xlwt中对 ...
- python的简单程序代码_小白学编程?从一个简单的程序开始学习Python编程
笔者思虑再三还是决定选择图文(因为百家的视频发布画质真不怎么样[囧]). 笔者学习编程的时间也挺长的,因为业余,因为时间不多,各种原因,自学编程的路特别难走.然后笔者发现,自己能为小白贡献一些力量,然 ...
- python函数模块关键代码_从零开始学Python(六):函数,模块和类的使用
从这章开始,我们不在使用sublime文本编译器进行编码了,主要是我们每次运行的使用还得去命令行执行pyhon ***.py命令查看结果,操作比较麻烦.推荐大家使用Pycharm(具体安装使用教程大家 ...
- 用python画小猪佩奇代码_用Python画小猪佩奇
猪年农历春节前,朋友圈被一则走心的广告刷屏了.很多伙伴直呼:看哭了.当爷爷电话里听到儿子说「不回来啊」的打击是很沉重的,这位父亲想念自己的儿子和孙子,总想把最好的给他们. 如果你的孩子问你要佩奇,你除 ...
最新文章
- 直接法 matlab,解线性方程组直接方法matlab用法.doc
- 项目管理和缺陷跟踪工具Redmine
- 整数的最大值和最小值
- 怎么安装python3-如何装python3
- 一分钟了解 Matlab求两个矩阵的相关程度corr2
- ubuntu下和开发板下播放音乐
- FreeMarker整合Spring 3
- Python3列表、元组及之间的区别和转换
- ASP.NET实现增删改查等功能(Access版)系统之一
- 10-1 channel
- d3h 技嘉b365m 黑苹果_黑苹果硬件选购指南主板amp;硬盘amp;WI
- Ubuntu ufw防火墙常见命令
- try catch中getRequestDispatcher跳转
- C语言中文网C++教程笔记
- win10虚拟机管理服务器,如何使用微软的虚拟机管理器来管理Hyper-V虚拟机
- 计算机课外活动兴趣小组内容,学校课外兴趣小组活动总结
- 抖音通过什么方式变现,抖音变现方式分别有什么
- 能量原理与变分法笔记03:证明两点之间直线最短
- 【Android 开发】mac 版 Android Studio 连接夜神模拟器的方法
- OpenCV-霍夫线变换