继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

北桥苏
关注TA
已关注
手记 87
粉丝 2
获赞 8

前言

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

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

https://img2.sycdn.imooc.com/64c8b1430001894506480439.jpg

项目

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

 

neo4j 操作

1. 创建节点

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

https://img1.sycdn.imooc.com/64c8b16300015c5a13270626.jpg

2. 删除节点

MATCH (n:iphone6s) DELETE n

https://img2.sycdn.imooc.com/64c8b17600012eac07780549.jpg

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)

https://img1.sycdn.imooc.com/64c8b184000129f512040696.jpg

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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP