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,结果如下图:
补充说明:
1、启动fuseki服务器参数,--loc=../DB设置在线服务数据库位置,参数/demo
2、自然语言问句进行正则匹配的逻辑REfO. 主要参考根目录下的代码:words.py
3、后续改进可参考: 使用邻接链表表示自然语言问句, 通过遍历有向图或子图匹配方法构造 SPAPQL 查询语句
代码下载地址:https://download.csdn.net/download/starbaby01/10621927
linux+cp+-rdf,简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)相关推荐
- dbpedia知识图谱java_一种基于DBpedia的水务领域概念知识图谱构建方法与流程
本发明涉及的是领域知识图谱构建技术领域,涉及到一种基于DBpedia的水务领域概念知识图谱构建方法,特别涉及到一种基于Jaccard相似度算法与随机游走相似度算法结合的协同过滤模型框架,用于补全概念模 ...
- 基于预训练语言模型的检索- 匹配式知识图谱问答系统
基于预训练语言模型的检索- 匹配式知识图谱问答系统 张鸿志 , 李如寐,王思睿,黄江华 美团, 北京市朝阳区 100020 {zhanghongzhi03,lirumei,wangsirui,huan ...
- 基于神经网络的遥感图像分析及知识图谱应用
一.人工智能最新研究应用. 1. 遥感图像分类 随着遥感技术的飞速发展,获取大量高分辨率的遥感图像越来越容易,这些高质量的遥感图像在实际生产生活中有着广泛的应用,如精细农业.森林火灾检测.城市规划等. ...
- AAAI 2023 | 基于历史对比学习的时序知识图谱推理
©PaperWeekly 原创 · 作者 | 徐奕 单位 | 上海交通大学Acemap 研究方向 | 数据挖掘 论文标题: Temporal Knowledge Graph Reasoning wit ...
- 基于历史对比学习的时序知识图谱推理
时序知识图谱 知识图谱(KGs)作为人类知识的集合,在自然语言处理.推荐系统和信息检索等领域显示展现了很好的前景.传统的KG通常是一个静态知识库,它使用图结构数据拓扑,并以三元组(s, p, o)的形 ...
- 基于模板匹配的知识图谱问答系统
基于模板匹配的知识图谱问答系统 一,什么是基于知识图谱的问答(KBQA)? KBQA–knowledge base question answering,通过对问题进行语义理解及解析,通过知识库进行查 ...
- ACL2020 | 基于Knowledge Embedding的多跳知识图谱问答
一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者:舒意恒(南京大学硕士生,知识图谱方向) 背景 什么是知识图谱问答? 知识图谱(KG)是一个多关系图,其中包含数以百万计的实体,以及连接实体的关系 ...
- 论文浅尝 | 基于对抗学习的弱监督知识图谱对齐
论文笔记整理:郭凌冰,浙江大学研究助理,研究方向为知识图谱的表示学习. 绝大部分现有的知识图谱对齐方法都要求足够的已对齐三元组作为监督数据,但在现实世界中,获取大量的对齐三元组的代价十分高昂.本文提出 ...
- 基于大数据的软件项目知识图谱构造及问答方法
摘要:随着软件规模的不断扩大.软件演化周期的不断延长,构建软件项目知识图谱对软件维护.软件开发的意义越来越重大.如何基于软件项目开发过程中产生的源代码.邮件列表.缺陷报告等多源异构大数据,快速构建语义 ...
最新文章
- 1291 火车线路(区间修改,区间最值)
- office2016word 每次打开都有进度条问题 解决方式
- Python center 用法
- Winform中设置ZedGraph的曲线为散点图
- 多线程-NSOperation
- C Primer Plus note1
- Asp.net在IE10、IE11下事件丢失经验总结
- 修复迁移后Net Standard项目中的错误
- pandas使用dataframe读写mysql数据库
- struts2 ajax上传文件 file空_WordPress插件漏洞分析:WPDiscuz任意文件上传漏洞
- Linux 命令(2)—— od 命令
- WebDriver API学习记录
- 51Nod 1256 乘法逆元 Label:exgcd
- 客户端软件 大华_大华“飞燕”,一款主打稳定WiFi的路由器!
- (day 41 - 二分查找) 剑指 Offer 53 - I. 在排序数组中查找数字 I
- jQuery实现留言板
- 推荐收藏:50个最佳机器学习公共数据集
- 用英雄联盟的方式讲解JavaScript设计模式
- FrameTime、FPS、流畅度、Jank
- win10下Linux双系统
热门文章
- (需求实战_进阶_05)SSM集成RabbitMQ 通配符模式 关键代码讲解、开发、测试
- 第五篇:Spring Boot整合filter
- matlab和robotstudio,MATLAB与Robotstudio建立socket通信(初探)
- mysql中的锁的指令_mysql中的锁
- java foreach并行_使用foreach在Java中迭代并行数组的漂亮方法
- mysql 命令行 设置同步_MySQL同步(二) 设置同步
- unity底层运行机制_Unity跨平台的机制原理
- 项目结构_组织结构对项目影响系列课程---项目式组织结构
- java 反射执行语句_JAVA反射机制
- c语言中buf内容怎么给指针,C语言 指针的使用