From 7dbeb6bb3bfd5acc9d89d460cd287c82751f3cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=AC=A3=E9=9B=A8?= <2674838963@qq.com> Date: Wed, 6 May 2026 20:58:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A7=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- answer_search.py | 136 ----------------------------------------------- 1 file changed, 136 deletions(-) delete mode 100644 answer_search.py diff --git a/answer_search.py b/answer_search.py deleted file mode 100644 index 8b7ac85..0000000 --- a/answer_search.py +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/env python3 -# coding: utf-8 -# File: answer_search.py -# Author: lhy -# Date: 18-10-5 - -from py2neo import Graph - -class AnswerSearcher: - def __init__(self): - self.g = Graph( - host="127.0.0.1", - port=7687, - user="neo4j", - password="72dkiwks") - self.num_limit = 20 - - '''执行cypher查询,并返回相应结果''' - def search_main(self, sqls): - final_answers = [] - for sql_ in sqls: - question_type = sql_['question_type'] - queries = sql_['sql'] - answers = [] - for query in queries: - ress = self.g.run(query).data() - answers += ress - final_answer = self.answer_prettify(question_type, answers) - if final_answer: - final_answers.append(final_answer) - return final_answers - - '''根据对应的qustion_type,调用相应的回复模板''' - def answer_prettify(self, question_type, answers): - final_answer = [] - if not answers: - return '' - if question_type == 'disease_symptom': - desc = [i['n.name'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}的症状包括:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'symptom_disease': - desc = [i['m.name'] for i in answers] - subject = answers[0]['n.name'] - final_answer = '症状{0}可能染上的疾病有:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_cause': - desc = [i['m.cause'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}可能的成因有:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_prevent': - desc = [i['m.prevent'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}的预防措施包括:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_lasttime': - desc = [i['m.cure_lasttime'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}治疗可能持续的周期为:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_cureway': - desc = [';'.join(i['m.cure_way']) for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}可以尝试如下治疗:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_cureprob': - desc = [i['m.cured_prob'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}治愈的概率为(仅供参考):{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_easyget': - desc = [i['m.easy_get'] for i in answers] - subject = answers[0]['m.name'] - - final_answer = '{0}的易感人群包括:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_desc': - desc = [i['m.desc'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0},熟悉一下:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_acompany': - desc1 = [i['n.name'] for i in answers] - desc2 = [i['m.name'] for i in answers] - subject = answers[0]['m.name'] - desc = [i for i in desc1 + desc2 if i != subject] - final_answer = '{0}的症状包括:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_not_food': - desc = [i['n.name'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}忌食的食物包括有:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_do_food': - do_desc = [i['n.name'] for i in answers if i['r.name'] == '宜吃'] - recommand_desc = [i['n.name'] for i in answers if i['r.name'] == '推荐食谱'] - subject = answers[0]['m.name'] - final_answer = '{0}宜食的食物包括有:{1}\n推荐食谱包括有:{2}'.format(subject, ';'.join(list(set(do_desc))[:self.num_limit]), ';'.join(list(set(recommand_desc))[:self.num_limit])) - - elif question_type == 'food_not_disease': - desc = [i['m.name'] for i in answers] - subject = answers[0]['n.name'] - final_answer = '患有{0}的人最好不要吃{1}'.format(';'.join(list(set(desc))[:self.num_limit]), subject) - - elif question_type == 'food_do_disease': - desc = [i['m.name'] for i in answers] - subject = answers[0]['n.name'] - final_answer = '患有{0}的人建议多试试{1}'.format(';'.join(list(set(desc))[:self.num_limit]), subject) - - elif question_type == 'disease_drug': - desc = [i['n.name'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}通常的使用的药品包括:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'drug_disease': - desc = [i['m.name'] for i in answers] - subject = answers[0]['n.name'] - final_answer = '{0}主治的疾病有{1},可以试试'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'disease_check': - desc = [i['n.name'] for i in answers] - subject = answers[0]['m.name'] - final_answer = '{0}通常可以通过以下方式检查出来:{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - elif question_type == 'check_disease': - desc = [i['m.name'] for i in answers] - subject = answers[0]['n.name'] - final_answer = '通常可以通过{0}检查出来的疾病有{1}'.format(subject, ';'.join(list(set(desc))[:self.num_limit])) - - return final_answer - - -if __name__ == '__main__': - searcher = AnswerSearcher() \ No newline at end of file