如何构建知识图谱和问答系统
前言
问答系统是NLP在业界最为重要的落地场景之一,但由于其全链路比较复杂,学习的时候难以入手。这是一个基础的图谱构建和问答系统的项目,为大家学习问答系统提供一个思路。
ps:之前断断续续写了知识图谱和问答系统的构建,干脆整合成一个完整的github项目,并对知识图谱进行系统性介绍
完整项目github地址:https://github.com/Chtholly1/KG-and-QA-demo
知识图谱搭建更加详细的介绍:https://blog.csdn.net/gzt940726/article/details/122884131
问答系统搭建更加详细的介绍:https://blog.csdn.net/gzt940726/article/details/123051808
主体
知识图谱的构建主要分为以下三个大的步骤:
- 结构化数据的获取
- 知识图谱(图数据库)的构建
- 问答系统的搭建
一.结构化数据
对第一步而言,如果只是想做个简单的练手项目,我们可以去网上下载一个现成的结构化数据(电影等),进一步的话可以自己去爬取结构化的相关数据(小心被封ip)。
但很多时候数据往往是非结构化的,这时候便要用到最经典的方法——信息抽取。信息抽取一般又分为三个方面:
1.实体链接
2.关系抽取
3.事件抽取
通过这些方法,我们就可以把结构化数据转化为非结构化的数据了。
本项目直接采用已有的结构化数据来构建知识图谱,如:
{"source":"https://warcraft.huijiwiki.com/wiki/%E9%98%BF%E8%BE%BE%E7%BD%97%E6%A0%BC","中文名":"阿达罗格","状态":["副本首领 可击杀"],"种族":["烈焰猎犬"],"英文名":"Adarogg","身份":["怒焰裂谷首领"]
}
二.知识图谱
这里直接摘抄知乎顾鹏的一段化来介绍知识图谱:
知识图谱在逻辑结构上可分为模式层与数据层两个层次:
数据层主要是由一系列的事实组成,而知识将以事实为单位进行存储。如果用(实体1,关系,实体2)、(实体、属性,属性值)这样的三元组来表达事实。可选择图数据库作为存储介质,例如开源的 Neo4j、Twitter 的 FlockDB、JanusGraph 等。
模式层构建在数据层之上,主要是通过本体库来规范数据层的一系列事实表达。本体是结构化知识库的概念模板,通过本体库而形成的知识库不仅层次结构较强,并且冗余程度较小。
个人理解这里的数据层指代的就是三元组信息。
而模式层就是所有三元组信息的表达方式,一般用RDF将信息序列化,常用的RDF方法有:
RDF/XML,N-Triples,Turtle,RDFa,JSON-LD
本项目中使用的是Turtle.
三.问答系统
目前,问答系统在本质上就是检索系统的进阶版(至少在强人工智能出现之前应该一直是)。
一般可以拆解为四部分:
- 让机器理解 用自然语言所进行的提问。
- 把问题进行拆解成多个简单问题。
- 对每个问题去图数据库中进行检索,得到答案。
- 把这些答案按合理的方式进行汇总,并返回最终答案。
本项目做的比较简单,默认提问是简单问题,所以只包含了1,3两个部分。
小结
在结构化数据和问答系统上能做的事情相当多,需要结合具体的业务进行技术的调研和落地。
如何构建知识图谱和问答系统相关推荐
- 知识图谱入门2-1:实践——基于医疗知识图谱的问答系统
注:欢迎关注datawhale:https://datawhale.club/ 系列: 知识图谱入门一:知识图谱介绍 知识图谱入门2-1:实践--基于医疗知识图谱的问答系统 知识图谱入门2-2:用户输 ...
- 【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part5-完结):信息检索与结果组装
前序文章: [知识图谱]实践篇--基于医疗知识图谱的问答系统实践(Part1):项目介绍与环境准备 [知识图谱]实践篇--基于医疗知识图谱的问答系统实践(Part2):图谱数据准备与导入 [知识图谱] ...
- 【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part2):图谱数据准备与导入
前序文章: [知识图谱]实践篇--基于医疗知识图谱的问答系统实践(Part1):项目介绍与环境准备 背景 前文已经介绍了该系统的环境准备.下面介绍图谱数据获取,数据主要从:http://jib.xyw ...
- “基于医疗知识图谱的问答系统”代码解析(一)
"基于医疗知识图谱的问答系统"代码解析(一) build_medicalgraph.py -建立医疗知识图谱的代码解析 "基于医疗知识图谱的问答系统"代码解析( ...
- 【知识图谱】Neo4j的基本使用及思知1.4亿三元组数据构建知识图谱
目录 0.前言 1.Neo4j的基本使用 1.1 下载和安装Neo4j 1.2 Neo4j配置 1.2.1 核心数据文件的位置 1.2.2 安全验证,默认是启用的 1.2.3 配置JAVA 堆内存的大 ...
- 基于医疗知识图谱的问答系统源码详解
承接上一篇系统搭建和遇到的问题,本篇解析系统功能的实现,并做了部分修改. 项目是找的中科院软件所刘焕勇老师在github上的开源项目,基于知识图谱的医药领域问答项目QABasedOnMedicaKno ...
- python知识图谱问答系统代码_知识图谱和问答系统
知识图谱和问答系统 发布时间:2018-06-19 05:32, 浏览次数:606 1. 前言 知识图谱(knowledge graph),是下一代搜索引擎.问答系统等智能应用的基础设施 ,目前出现的 ...
- 自底向上构建知识图谱全过程
http://www.sohu.com/a/245246344_160850 阿里妹导读:知识图谱的构建技术主要有自顶向下和自底向上两种.其中自顶向下构建是指借助百科类网站等结构化数据源,从高质量数据 ...
- 通俗讲解自底向上构建知识图谱全过程
知识图谱的基础介绍,供学习参考. 转载自:https://mp.weixin.qq.com/s/7cBbtqvPQUVrLZUNDx8XDQ 知识图谱的构建技术主要有自顶向下和自底向上两种.其中自顶向 ...
最新文章
- ACL 2022录用结果出炉:国内多支团队晒“战绩”,清华一实验组18篇入选
- sublime text3 运行lua_[电脑常识] 用这4个系统垃圾清理软件,让电脑操作系统运行如飞 !...
- 走过路过来看看各种实现跨域的方式~
- 摘: cmd环境 使用一点知识
- bcc挖矿用什么_BCC对BTC挖矿有何影响?
- MySQL深度剖析之SQL语句更新流程(2021)
- Android 系统性能优化(39)---Android内存优化之三:打开MAT中的Bitmap原图
- SQL注入分类,一看你就明白了。SQL注入点/SQL注入类型/SQL注入有几种/SQL注入点分类
- SD从零开始29-30
- 13.Serving Frontend Files
- Dotween常用方法详解
- vs 登录按钮验证_外服战网新增登录方式:关联Apple ID即可快速登录
- (丝滑版)Python使用Opencv画一个哆啦A梦(动态),并制作成可执行文件.exe
- 计算机磁盘分为硬盘和什么,win10磁盘分区合并的方法是什么_win10电脑分盘怎么合并...
- mysql索引失效口诀
- 发射光功率和接收灵敏度对光模块的实际使用有什么影响?
- photoshop 抠图
- mt7620a上tf卡驱动的支持
- bios 刷 灵耀14_华硕笔记本刷完BIOS后一直进不去系统,怎么解决?
- Windows编程之COM组件