写点什么

医疗知识图谱问答 ——Neo4j 基本操作

作者:北桥苏
  • 2023-08-01
    广东
  • 本文字数:803 字

    阅读完需:约 3 分钟

前言

说到问答机器人,就不得不说一下 ChatGPT 啦。一个预训练的大预言模型,只要是人类范畴内的知识,似乎他回答得都井井有条,从写文章到写代码,再到解决零散琐碎的问题,不光震撼到我们普通人,就百度和阿里也因此紧追其后分别推出了文心一言和通义千问。


所以好像我们也可以通过 GPT,并训练特定的数据来完成本业务下的问答。但是,那时出现了 OpenAI 在封号的事件,国内公司又担心以后形成垄断后收取高昂费用。于是,我打算自己弄一个 GPT,(打断…… 很显然不现实),但是呢!既然是特定场景,那也不需要这么强大的机器人,只要能完成基本流程的智能回复就可以了。 前期我就想着用知识图谱的方式来完成,正好在网上也找了一个医疗知识问答的项目,所以跟着做一遍总结一下。


项目

一个基于 python+neo4j 的问答,通过在图数据库里创建节点和关联边,接收问题的词语,进过拆解特定解析完成查询语句的拼装,最后输出答案。说到这里,是不是感觉这个其实就是一个程序化的思维导图,但是改造的地方也有很多,比如可以通过深度学习进行语义分析,添加语音对话,特定语气地回答输出等等。


neo4j 操作

创建节点

create (n:Attr {name: "磕碰掉漆"})


删除节点

MATCH (n:iphone6s) DELETE n


创建关联边

MATCH (e:Goods_Class),(cc:Goods)CREATE (e)-[r:HAS_GOODS ]->(cc)

match(class_name:Goods_Class),(goods_name:Goods)where class_name.name='%s'and goods_name.name='%s'create (class_name)-[rel:关联边名称{name: 指定名称}]->(goods_name)


删除关联边

MATCH (c:Goods_Class)-[r:HAS_GOODS]-(g:Goods)DELETE r5. 删除删除指定属性的节点

Match (n:Goods{name: '黑鲨手机'}) DELETE n

条件查询

通过某个节点名查询与之关联的另一些节点信息,如下面是根据一个疾病名称,获取该疾病与之有关联 (has_symptoms) 的症状名称列表

MATCH (m:Diseases)-[r:has_symptoms]->(n:Symptoms) where m.name = '喘息样支气管炎' return m.name, r.name, n.name

发布于: 刚刚阅读数: 4
用户头像

北桥苏

关注

公众号:ZERO开发 2023-05-08 加入

专注后端实战技术分享,不限于PHP,Python,JavaScript, Java等语言,致力于给猿友们提供有价值,有干货的内容。

评论

发布
暂无评论
医疗知识图谱问答 ——Neo4j 基本操作_nosql_北桥苏_InfoQ写作社区