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

前言

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

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

项目

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

neo4j 操作

1. 创建节点
create (n:Attr {name: "磕碰掉漆"})

2. 删除节点
MATCH (n:iphone6s) DELETE n

3. 创建关联边
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)

4. 删除关联边
MATCH (c:Goods_Class)-[r:HAS_GOODS]-(g:Goods) 
DELETE r
5. 删除删除指定属性的节点
Match (n:Goods{name: '黑鲨手机'}) DELETE n
6. 条件查询

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

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

猜你喜欢

转载自blog.csdn.net/qq_35704550/article/details/132041869