工程实践:基于规则模式的军事和医药领域知识图谱问答快速实现

知识结构化问答是知识图谱的一个重要的应用方向,虽然现在许多真实的使用体验上,会被评价为“鸡肋且智障”,并且在落地上还没有太多的付费场景,但也不乏有不少学生、公司、机构在尝试花时间去做这个事情。当前,医疗知识图谱QAonMilitaryKG,成为了不少朋友都会参考的一个问答快速实现demo的案例,网上也有不少的复现和踩坑记录总结。本文则围绕着医疗知识图谱QAonMilitaryKG和军事武器知识图谱问答两个项目进行简要介绍,希望可以作为大家的一个指引。

一、军事武器知识图谱构建与自动问答项目QAonMilitaryKG
QAonMilitaryKG,QaSystem based on military knowledge graph that stores in mongodb which is different from the previous one, 基于mongodb存储的军事领域知识图谱问答项目,包括飞行器、太空装备等8大类,100余小类,共计5800项的军事武器知识库,该项目不使用图数据库进行存储,通过jieba进行问句解析,问句实体项识别,基于查询模板完成多类问题的查询,主要是提供一种工业界的问答思想demo。
项目地址:
https://github.com/liuhuanyong/QAonMilitaryKG
1、项目背景
基于知识图谱或知识库的问答KBQA是目前垂直领域或百科领域问答中使用较多的一种问答方式,本质上是在做结构化数据的匹配查询任务。笔者之前利用neo4g图数据库上基于医疗领域结构化知识库,阐述了基于图数据库的医疗知识图谱构建与问答方案,并实现了一个简单的demo。项目见:(https://github.com/liuhuanyong/QASystemOnMedicalKG)
技术选型是实现自动问答系统的一个重要环节,这项工作与数据样式关系尤为密切。经验上来说,对于实体类型较多以及实体关系种类较多的知识库,使用图数据进行知识存储是个较好的选择。而对应实体类型较少,实体关系较少,实体属性较多以及带有时序性的数据时,选用文档型数据库mongodb是个不错的选择。
军事领域是敏感度、机密系数较高的一个领域,其数据价值很高,获取相关军事数据并提供一个便捷的人机交互方式具有重要的战略意义。军事中的装备信息,军事基地信息,军事作战部队之间的关联信息,以图谱的形式组织,能够在作战策略推荐,军事人员培训上起到重要作用。目前,公开的军事资料不多,收录较全的有环球军事网,其中的人物,战役,兵器库,术语库等为军事提供了一个很好的信息平台。其中,武器库是其中结构化程度较高的一项数据,其中包括了飞行器、舰艇等8大类武器,轰炸机等100余小类,共计5800项武器结构化数据。这为结构化知识问答提供了一个的数据,因此,本项目选择该数据集作为知识库,使用mongodb进行自动问答的实验。
2、项目目标
本项目目的在于采集并解析军事武器库网站,进行字段信息的标准化,形成一定规范、规模的军事武器装备结构化知识库。 实现基于mongodb的军事领域知识库的自动问答。
1)项目框架
在这里插入图片描述
2)项目构成
1.数据集类型及统计信息
图片

2.数据样式
在这里插入图片描述

3.问句类型
在这里插入图片描述

3)项目运行
主要文件构成如下:
图片

3)项目运行
1.执行insert_data.py,将输入倒入至mongodb当中。
2.执行military_qa.py,开始进行问答测试。
3.若需要进行自我重新构建数据,可运行collect_data.py。
4)项目结果
图片

二、医药领域知识图谱快速及医药问答项目QAonMilitaryKG

    本项目立足医药领域,以垂直型医药网站为数据来源,以疾病为核心,构建起一个包含7类规模为4.4万的知识实体,11类规模约30万实体关系的知识图谱,并以此作为实验数据底座,实现一个基于规则的快速知识图谱问答。

项目地址:
https://github.com/liuhuanyong/QASystemOnMedicalKG
1、数据来源
该项目的数据来自垂直类医疗网站寻医问药,使用爬虫脚本data_spider.py,以结构化数据为主,构建了以疾病为中心的医疗知识图谱,实体规模4.4万,实体关系规模30万。schema的设计根据所采集的结构化数据生成,对网页的结构化数据进行xpath解析。项目的数据存储采用Neo4j图数据库,问答系统采用了规则匹配方式完成,数据操作采用neo4j声明的cypher。
1)实体类型及统计信息
图片

2)关系类型及统计信息
在这里插入图片描述
3)属性类型及统计信息
图片

2、实现框架
图片

3、支持的问题类型
图片

4、项目构成
1.question_classifier.py:问句类型分类脚本
2.question_parser.py:问句解析脚本
3.chatbot_graph.py:问答程序脚本
5、项目效果
图片

图片

三、实践总结
以上两个项目分别以基于mongodb、neo4j作为数据存储方式,给出了两个实现方法。分别以军事武器库网站、医疗网站进行字段信息的标准化,形成一定规范、规模的结构化知识库。在一定程度上还原了入门级的问答范式,该架构图朴实且如实地介绍了面相结构化文本的知识构建以及结构化查询流程以及粗略实现细节。
面向具有数字型数据的结构化知识的问句的形式有多种,主要有纯属性值查询如:单实体单属性,单实体多属性,多实体单属性,多实体多属性等问题。带筛选条件查询,如如单属性值与多属性值区间查询。最值条件查询共三种,本项目初步实现了对这三种主要问句类型问答。
在实体识别,属性值识别,数值识别上,主要采用的方式是领域词及扩展词,配合正则表达式的方式来实现,没有使用学习模型。作为军事领域,学习模型在武器类实体识别上效果可能不会太好,在识别后进行实体链接映射会遇到一定困难。
实体与查询属性项之间的对应和成对是整个问答查询的最核心所在,以上两个项目使用基于关系模板穷举的方式、基于问题关键词分类的方式完成该目标,准确率较高,但缺点是穷举可能性不大,构造成本较高。而既然是结构化知识问答,那么业务场景下的问答应该是简单的,多实体多属性混杂出现的情况应该要少一些,即问题的问答可以很多样,但问题的内部结构不应太复杂,否则就丢失了自动问答解放信息杂糅的本意了。
知识图谱是结构化知识的一种方式,存储方式可以用关系型,可以用nosql,也可以用图数据库,不同的方式的区别在于sql的转化上。在关系级联程度不高的情况下,使用非图数据库可能会是更好的方式。深度学习在工业界问答中,在基于qa对检索中用的比较多,在结构化知识图谱查询中较难大显身手,集中应用点在实体论元识别上,个人认为在实体属性关系的识别上不会很惊艳,很有可能没有规则来的快,来的准确。

关于作者
刘焕勇,liuhuanyong,现任360人工智能研究院算法专家,前中科院软件所工程师,主要研究方向为知识图谱、事件图谱在实际业务中的落地应用。
得语言者得天下,得语言资源者,分得天下,得语言逻辑者,争得天下。
1、个人主页:https://liuhuanyong.github.io。
2、个人博客:https://blog.csdn.net/lhy2014/。
欢迎对自然语言处理、知识图谱、事件图谱理论技术、技术实践等落地应用的朋友一同交流。

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

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

相关文章

图Graph--最小生成树

文章目录1.概念2.构造最小生成树Prim算法3.构造最小生成树Kruskal算法1.概念 对图运用不同的遍历方法就可能得到图的不同遍历顺序,每一种遍历顺序对应于一棵生成树对于无向连通图,所有的生成树中必有一棵树的所有边的权的总和最小的,称之为最…

Longformer:超越RoBERTa,为长文档而生的预训练模型

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | ChrisCao, 小轶前言今天要与大家分享的是AllenAI今年发表的最新工作,Longformer——一种可高效处理长文本的升级版Transformer。作者团队提供了开源代码,大家可快速复现&#xff…

工程实践:基于规则句法的事件关系与主谓宾三元组抽取项目实现

目前,知识图谱在学术界如火如荼地进行,但受限于知识图谱各个环节中的性能问题,还尚未能够在工业界大规模运用。而与知识图谱中以实体为知识节点,实体关系为实体关系边对知识进行组织不同,以事件作为节点,事…

论文浅尝 | LightRNN:存储和计算高效的 RNN

链接:https://arxiv.org/pdf/1610.09893.pdf动机在NLP任务中使用RNN已经被证明是很有用的模型方法。但是传统的RNN在NLP中的应用有一个很大的限制:RNN的输出输入Embedding占用的空间太大,比如1024维10M词表大小的Embedding矩阵就要占掉40GB&a…

阿里最全Java面试100题汇总:涵盖天猫、蚂蚁金服等面试题!含答案~

【阿里天猫、蚂蚁、钉钉面试题目】 1、微信红包怎么实现。 2、海量数据分析。 3、测试职位问的线程安全和非线程安全。 4、HTTP2.0、thrift。 5、面试电话沟通可能先让自我介绍。 6、分布式事务一致性。 7、nio的底层实现。 8、jvm基础是必问的,jvm GC原理&a…

ACL2020 奇葩论文标题大赏

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 灵魂写手rumor酱编 | 不拖更的夕小瑶又是一年一度的ACL,之前通过卖萌屋Arxiv服务已经零零碎碎看了一些,还是准备刷一下论文list,看看哪篇能让我的模型效果一飞冲天。…

字符串匹配算法(BF RK)

文章目录1. BF(Brute Force)暴力匹配BF代码2. RK(Rabin-Karp)算法RK代码3. 思考题:(二维匹配)1. BF(Brute Force)暴力匹配 BF算法的思想,在主串中&#xff0…

用Python寻找最优投资组合

原文地址:https://www.jianshu.com/p/2a25dfd465e9 现代投资组合理论(Modern Portfolio Theory,MPT)告诉我们投资者应该分散投资来实现最小化风险最大化投资回报。大邓刚开始学习这方面知识,用了将近一天的时候才搞懂M…

技术动态 | 事理图谱,下一代知识图谱

本文转载自公众号:DataHorizon。 人工智能与认知智能当前人工智能时代下,机器与人类之间的博弈一直在进行着。如图1所示,从1926年达特茅斯会议的召开标志人工智能诞生到深度学习模型在…

头条Java后台3面(含答案):事务+List集合+慢查询SQL+Redis+秒杀设计

头条Java一面 1.讲讲jvm运行时数据库区 2.讲讲你知道的垃圾回收算法 3.jvm内存模型jmm 4.内存泄漏与内存溢出的区别 5. select、epoll 的区别?底层的数据结构是什么? 6.mysql数据库默认存储引擎,有什么优点 7.优化数据库的方法&#xf…

CNN卷积神经网络(吴恩达《卷积神经网络》笔记一)

CNN 卷积网络说明卷积 Convolution填充 Padding步长 StrideRGB图像卷积池化 Pooling完整CNN为什么人们喜欢用卷积神经网络?实例分析说明 关于CNN的基础知识:卷积、填充、步长、池化、完整的深度CNN网络可以参考 链接: AI学习笔记——卷积神经网络&#…

字符串匹配算法(BM)

文章目录1. BM(Boyer-Moore)算法1.1 坏字符规则1.2 好后缀规则1.3 两种规则如何选择2. BM算法代码实现2.1 坏字符2.2 好后缀2.3 完整代码2.4 调试3. 总结1. BM(Boyer-Moore)算法 思想:有模式串中不存在的字符&#xf…

SQL 数据分析常用语句

1 基础查询 • 2 字符串数字日期时间 • 3 聚合数据查询 • 4 子查询 • 5 联接组合查询 • 6 高级查询 • 7 更新数据 阅读提醒:点击图片放大可看清晰的 1 基础查询 2 字符串数字日期时间 3 聚合数据查询 4 子查询 5 联接组合查询 6 高级查询 7 更新数据 参考资料 …

开源词法分析工具LAC重大升级!打造属于自己的个性化分词器!

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 匿名大佬编 | 北大小才女小轶本文将为大家介绍如何使用百度开源的词法分析工具LAC实现个性化分词(附代码),并展示LAC在各数据集上惊艳的性能表现。背景介绍分词是中文…

老刘说NLP:这几年的NLP历程回顾,以及关于NLP(知识图谱等)落地的思考

得语言者,得天下。得语言资源者,分天下。得语言逻辑者,争天下。 前言 只有把自己所思考的,所认识的东西,以文字的方式记录下来,才是对自己成长最好的记录方式。 是的,距离上一次动手写博客或者…

Redis系列教程(一):Redis缓存的设计、性能、应用与数据集群同步

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上…

论文浅尝 | 提取计数量词丰富知识库

OpenKG 祝各位读者新年快乐!论文标题:Enriching Knowledge Bases with Counting Quantifiers论文链接:https://link.springer.com/content/pdf/10.1007%2F978-3-030-00671-6_11.pdf发表会议:ISWC 2018论文源码:https:/…

RNN循环神经网络(吴恩达《序列模型》笔记一)

1、为什么选择序列模型 2、数学符号 用1来代表人名,0来代表非人名,句子x便可以用y[1 1 0 1 1 0 0 0 0]来表示 3、循环网络模型 值得一提的是,共享特征还有助于减少神经网络中的参数数量,一定程度上减小了模型的计算复杂度。 …

字符串匹配算法(KMP)

文章目录1. KMP由来2. KMP算法基本原理3. 代码4. Leetcode 28. 实现 strStr()1. KMP由来 上一节说的BM算法是最高效、最常用的字符串匹配算法。最知名的却是KMP,它3位作者(D.E.Knuth,J.H.Morris,V.R.Pratt)&#xff0…

常用的SQL语句

常用的SQL语句 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server 1 --- 创建 备份数据的 device 2 3   USE master 4 5   EXEC sp_addumpdevice disk, te…