创新实训-中医药知识图谱的构建与应用04

创新实训-中医药知识图谱的构建与应用04


这部分参考 该github项目

解析主函数

1.获取问句中的所有实体
2.根据问句类型生成不同的sql语句,并将实体传入

        def parser_main(self, res_classify):
        args = res_classify['args']
        entity_dict = self.build_entitydict(args)
        question_types = res_classify['question_types']
        sqls = []
        for question_type in question_types:
            sql_ = {}
            sql_['question_type'] = question_type
            sql = []
            #根据问句类型,定义相应sql语句
            if question_type == 'drug_disease':
                sql = self.sql_transfer(question_type, entity_dict.get('drug'))

            elif question_type == 'drug_taste':
                sql = self.sql_transfer(question_type, entity_dict.get('drug'))

            elif question_type == 'drug_people':
                sql = self.sql_transfer(question_type, entity_dict.get('drug'))

            elif question_type == 'disease_drug':
                sql = self.sql_transfer(question_type, entity_dict.get('disease'))

            elif question_type == 'drug_ingredient':
                sql = self.sql_transfer(question_type, entity_dict.get('drug'))

            elif question_type == 'drug_desc':
                sql = self.sql_transfer(question_type, entity_dict.get('drug'))

            if sql:
                sql_['sql'] = sql

                sqls.append(sql_)
        #返回词典列表,包含问题种类及其sql
        return sqls

定义sql语句

以查询问什么病吃什么药为例

# 查询应该吃什么药
        if question_type == 'disease_drug':
            sql1 = ["MATCH (m:症状)<-[r:用治症状]->(n:中成药) where m.name = '{0}' return m.name, r.name, n.name".format(i) for i in entities]
            sql2 = ["MATCH (m:疾病)<-[r:用治疾病]->(n:中成药) where m.name = '{0}' return m.name, r.name, n.name".format(i) for i in entities]
            sql3 = ["MATCH (m:证候)<-[r:用治证候]->(n:中成药) where m.name = '{0}' return m.name, r.name, n.name".format(i) for i in entities]
            sql=sql1+sql2+sql3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值