简单构建基于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步后在本地监听(http://localhost:3030/),如图:
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,结果如下图:
补充说明:
1、启动fuseki服务器参数,--loc=../DB设置在线服务数据库位置,参数/demo设置服务器数据集名称(自定义),对应的SPARQL查询地址为:http://localhost:3030/demo/query
2、自然语言问句进行正则匹配的逻辑REfO. 主要参考根目录下的代码:words.py
3、后续改进可参考: 使用邻接链表表示自然语言问句, 通过遍历有向图或子图匹配方法构造 SPAPQL 查询语句
代码下载地址:https://download.csdn.net/download/starbaby01/10621927
最新文章
- openerp7 时区问题
- html标签思维导图
- 面向对象的Javascript(4):重载
- 图解Android - Zygote, System Server 启动分析
- 支付宝也要上";服务号";?斗战微信继续升级
- Mybatis 自动从数据库生成entity,mapping,dao接口
- hadoop 错误处理机制
- HTML contact form with CAPTCHA
- C语言的指针使用
- 高效使用 Python 可视化工具 Matplotlib
- WebClient下载文件
- Apache Flume 1.7.0 自定义输入输出
- Swift3 获取系统音量和监听系统音量
- Android Studio3.0 配置AndroidAnnotation注解框架
- 单链表的增、删、改、减(C++)
- C#.NET股票历史数据采集,【附18年历史数据和源代码】
- PAT——1058. 选择题
- Unused port adds a PWM/analog channel to a microcontroller
- windows系统共享设置最顺的一次
- Vi文本编辑
热门文章
- Spring 整合Mybatis dao原始方法
- UIButtonType各个类型的解释:
- 学习笔记(1)centos7 下安装nginx
- WSO2 API Manager 替换mysql作为数据库,解决AuthorizationUtils Could not set authorizations for the root问题
- java并发实战:连接池实现
- 关于如何去Apple.cn下载Xcode以及模拟器包
- Vue中异步组件(结合webpack,转载)
- python+selenium webdriver.firefox()方式配置浏览器设置
- Java学习笔记二十:Java中的内部类
- 在window10平台下安装TensorFlow(only cpu)