linux+cp+-rdf,简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)

本文主要通过python实例讲解基于RDF和SPARQL的KBQA系统的构建。该项目可在python2和python3上运行通过。

注:KBQA即是我们通常所说的基于知识图谱的问答系统。这里简单构建的EasyKBQA,数据来源于网络,源码地址看下面补充说明。

目录:

流程原理:

该问答系统可以解析输入的自然语言问句,主要运用REFO库的"对象正则表达式"匹配得到结果, 进而生成对应 SPARQL 查询语句,再通过API请求后台基于TDB知识谱图数据库的 Apache Jena Fuseki 服务, 得到结果。

实际过程:

1. 预定义 3 ​类共 5 ​个示例问题,​包括:

● "谁是苑茵?",

● "丁洪奎是谁?",

● "苏进木来自哪里?",

● "苑茵哪个族的?",

● "苑茵是什么民族的人?".

2. 利用结巴分词对中文句子进行分词, ​同时进行词性标注;

3. 将词的文本和词性打包, ​视为"词对象",对应 :class:Word(token,​ ​pos)​;

4. 利用 REfO ​模块对词进行对象级别 (object-level) ​的正则匹配,判断问题属于的​种类​并产生对应的 SPARQL,对应 :class:Rule(condition,​ ​action)​;

5. 如果成功匹配并成功产生 SPARQL ​查询语句, ​立刻请求 Fuseki ​服务并返回结果,打印相关内容;

程序运行:

1、配置第三方库:pip install refo jieba sparqlwrapper

2、安装JAVA JDK1.8,配置好环境变量。

3、项目根目录主要包括backend​​文件夹和test.py文件(同一级),backend是Jena​的Fuseki 模块,​运行第4步

4、cd backend/apache-jena-fuseki-3.5.0,windows下启动SPARQL endpoint服务:

fuseki-server.bat --loc=../DB /demo > log.txt 2>&1

对应Linux命令为:

nohup ./fuseki-server --loc=../DB /demo > log.txt 2>&1 &

5、运行根目录代码:python test.py,结果如下图:

2a65b1f4d9c531dbc21c945919ad06e8.png

补充说明:

1、启动fuseki服务器参数,--loc=../DB设置在线服务数据库位置,参数/demo

2、自然语言问句进行正则匹配的逻辑REfO. ​主要参考根目录下的代码:words.py

3、后续改进可参考: 使用邻接链表表示自然语言问句, 通过遍历有向图或子图匹配方法构造 SPAPQL ​查询语句

代码下载地址:https://download.csdn.net/download/starbaby01/10621927

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

变形监测期末复习_寒假即将来临,中小学期末考试时间是什么时候?

2019年下学期也快结束,各个区的中小学考试时间安排已经公布了。今年,初二将首次进行全市统考,统考的意义重大,希望家长们可以督促孩子们重视起来,考出好成绩!下面,让我们来看一下2019下学期深圳各区中小学期…

为什叫c语言,为什么c语言叫c语言?

1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。1973年初,C语言的主体完成。Thompson和Ritchie用它完全重写了UNIX。随着UNIX的发展&…

gddr6速率_Rambus展示18GT/s的GDDR6内存子系统:高频信号纯净度仍然非常好

Rambus最近展示了他们最新的GDDR6内存子系统,把传输速率提升到了18GT/s,而目前的市场上的GDDR6显存多为14GT/s,少数为16GT/s,18GT/s对于Rambus和GDDR6来说都是一个新的记录。在18GT/s的传输速率下,单颗位宽为32-bit的G…

株洲c语言培训机构,株洲好就业的学c语言程序设计,计算机专业地址

株洲好就业的学c语言程序设计衡阳市潇湘职业中等专业学校是由衡阳市教育主管,在衡阳校区的基础上设置的一所综合性全日制中等职业学校。坐落在国内优秀旅游城市、国内高新技术产业基地、名人辈出的全国历史文化名城-----衡阳市。我校依托长沙医校院,实现…

er图外键怎么表示_本周话题:取消考研复试最能实现相对公平?你怎么看?

2020取消研究生复试的呼声越来越高?考研er们:压力太大!近日,红网作者李诗元的一篇《取消考研复试最能实现相对公平》引起热议国家线的出台和调剂系统5月20日的才开的通知让大家直接炸开了郭就山西大学来说 往年都是调剂生和一志愿…

append 后如何删除_如何在STATA中合并数据文件呢?

❝作者:江小白邮箱:jieresearch163.com❞我们在使用stata进行数据分析时,可能涉及多个数据文档的合并操作或者同时使用不同数据集中的多个变量,这都需要我们进行文档间不同变量的归并。例如,我们需要使用CFPS(中国家庭…

linux 内网怎么安装git环境_linux 安装go环境

官网下载安装包The Go Programming Language​golang.google.cngo1.4.linux-amd64.tar.gz解压:tar -C /usr/local -zxvf go1.4.linux-amd64.tar.gz添加环境变量:export PATH$PATH:/usr/local/go/bin安装完成输入go测试安装成功,写个简单的代码…

cups支持的打印机列表_Win10“Microsoft Print to PDF”虚拟打印机不见了,如何找回?...

MS酋长很早以前在介绍Windows10的新功能时,就提到过《Win10原生支持把文件转换成PDF格式》,该功能实际上是基于“Microsoft Print to PDF”虚拟打印机来实现的。当你点击打印时,在打印机列表中就可以看到“Microsoft Print to PDF”虚拟打印机…

循环队列的进队算法c语言,循环队列的定义,入队算法,出队算法,遍历算法,及其代码实现-Go语言中文社区...

队列 的定义:一种可以是实现“先进先出”的存储结构。数据的进出类似于排队购票。队只允许队尾一端(rear)添加,在另一端队头(front)删除。队有队头(front)和队尾(rear)两个指针。队头front指向第一个元素,队尾rear指向无实际意义的元素&#…

java office文件加水印_文档预览加水印——或可一用的防泄密方式

给文件加水印是常见的一种宣示版权的方式。像Office、WPS都自带加水印功能,能够给文档加上"保密"、"严禁复制"这样的水印。在多可系统中,也有这么一个添加水印的功能。启用该功能后,在使用HTML5预览时,多可系…

android 获取apk资源,android-apk-parser

APK解析库用于读取/解析 packageName。versionName。versionCode信息的简单类,以及已经编译的androidsdk文件中的更多内容。通过解压 AndroidManifest.xml 文件并解码编译好的XML二进制文件来收集这里信息,就可以实现。我一直在用它来实现各种android工件…

apache license 2.0如何使用防止法律纠纷_go语言使用Swaggo详细教程

相信很多程序猿和我一样不喜欢写API文档。写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全。但API文档是必不可少的,相信其重要性就不用我说了,一份含糊的文档甚至能让前后端人员打起来。 而今天这篇博客介绍的…

android执行main函数,AndroidStudio执行main方法报错

问题:有时在开发中想直接写一个java文件来测试一些东西,但是AndroidStudio执行的时候会报错。代码信息:public class HelloWorld {public static void main(String[] args) {System.out.println("HelloWorld");}}报错信息12:04:41:…

hive 导出json格式 文件_Hive 系列 之 基本操作合集

下面是本课程概览:(1)hive系列之简介,安装,beeline和hiveserver2(2)hive系列之基本操作(3)hive系列之udf(4)hive系列之二级分区和动态分区&#x…

android开发自定义view倍丝曲线,从0到1Android自定义View(四)贝塞尔曲线

原标题:从0到1Android自定义View(四)贝塞尔曲线2017年安卓巴士全球开发者论坛-上海站作者本文由两点水投稿,博客地址:http://www.apkbus.com/myspaceblog-911082.html前言扯来扯去,前面三篇自定义 View 文章,终于扯完了…

ios kvo 要引入_腾讯社招iOS面试记录

毕业好几年了,上周发送了简历给腾讯,参加了腾讯面试。具体部门这边就不说了。这次面试还是收获到了很多。一面电话面试:面试官主要是针对iOS相关的基础问题。先简单自我介绍一下自己对mrc和arc的理解谈谈对自动释放池的理解自动释放池在mrc和…

html 中加号的表示方法,CSS的+(加号)选择器怎么用

在CSS中“”符号选择器用于选择紧跟在指定元素之后但不在特定元素内部的元素。下面本篇文章就来具体介绍一下,希望对大家有所帮助。“”符号选择器在CSS中“”符号选择器被称为相邻兄弟选择器,用于选取在同一父元素下的,紧跟指定元素之后的另…

华为新系统 鸿蒙,旗舰CPU+鸿蒙OS!华为Mate家族重磅新品来袭

我们常说安卓平板的生态跟苹果iPad有很大差距,不论是应用质量还是原生系统支持,苹果都做的更好一些。可能也是因为这个原因,因此安卓平板,尤其是旗舰级别的平板至今除了三星之外,也就只有华为在做。作为安卓阵营两大厂…

mysql中用来取余数的函数是_MySQL常用函数-单行处理函数-字符串处理函数(更新中...)...

本篇文章用到的数据库表/* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.7.23-log : Database - myemployees ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQUE_CHECKSUN…

html盒子模型页面居中,【静态页面架构】CSS之盒子模型

CSS架构盒子模型;以内容区(显示文本和图像)内边距(内容区至边距的距离)边距(内容区的边界)外边距(元素的边框之间的距离)1.边距;border属性;简写属性用来设置边距的上(top)右(right)下(bottom)左(left)。宽度,颜色和样式div{width…