医疗知识图谱智能问答系统学习总结(一)-Neo4j/Python

学习知识图谱,一个比较好的案例是中科院软件所刘焕勇老师在github上的开源项目,地址:https://github.com/liuhuanyong/QASystemOnMedicalKG,构建了一个肝病智能问答专业知识图谱。

下面详细介绍下个人学习心得:

1.拿到代码后,首先进入build_medicalgraph.py,修改Neo4j图库连接信息,然后运行该代码,即可创建肝病图库。

class MedicalGraph:
    def __init__(self):
        cur_dir = '\\'.join(os.path.abspath(__file__).split('\\')[:-1])   # 获取当前绝对路径的上层目录 linux中应用'/'split和join
        self.data_path = os.path.join(cur_dir, 'data\hepatopathy.json')   # 获取json文件路径
        self.g = Graph(
            host="127.0.0.1",  # neo4j运行地址,如果是本地安装则保持改地址
            http_port=7474,  # neo4j服务监听的端口号,7474
            user="neo4j",  # Neo4j图库user name
            password="password")Neo4j图库password

 以下是我的图库Details。

执行完成后,图库效果如下:

2.接下来就可以运行chat_graph.py,就可以开始与肝病问答小助手聊天了。

3.目前该问答项目的流程如下,问题分类主要解决诸如已知疾病查症状,已知疾病查治疗方法等等,问题解析根据分类构造查询语句,答案检索执行查询组织回复语句,然后返回答案。

  

 下面是一个查询示例:

 4.该项目也存在一定的不足之处,需要进行完善。

  • 当检索结果为空时会报错,该问题我已经修复,在answer_search.py增加结果判断,如检索结果为空则返回未检索到结果;代码我上传至github:https://github.com/runseason/medicalQA.git
            elif question_type == 'check_disease':
                desc = [i['m.name'] for i in answers]
                subject = answers[0]['n.name']
                if desc[0]:
                    final_answer = '通常可以通过{0}检查出来的疾病有{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit]))
                else:
                    final_answer = '通常可以通过{0}检查出来的疾病有 : 未检索到结果'.format(subject)

     

  • 当检索内容与肝病无关时只能返回初始化答案,需要增加相似性判断,然后找到相似度最高的内容,检索答案返回给用户;该问题还在修复中,敬请期待。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SeasonRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值