赞
踩
[简介]
这篇文章主要介绍了基于Python的中医药知识问答系统的设计与实现。该系统利用Python编程语言,结合中医药领域的知识和技术,实现了一个功能强大的问答系统。文章首先介绍了中医药知识的特点和传统问答系统的局限性,然后提出了设计思路和实现方法。系统的设计包括数据的采集和处理、问题的分类和分析、答案的生成和评价等关键步骤。通过实验验证,该系统在问答准确性和效率上都取得了较好的表现,具有一定的实用价值。文章最后总结了设计过程中遇到的问题和改进的方向,为进一步研究和应用提供了参考。
(1)网络爬虫
(2)中药文本处理
(3)知识图谱搭建
(4)智能问答界面实现
知识图谱架构只要指的是构建模式的结构。
偏方Flask实现:
app = Flask(__name__)
@app.route('/query/', methods=['GET', 'POST'])
def query():
if request.method == "POST":
name = request.form.get("name")
dict_return = getdata(name)
return render_template('query.html', dict_return=dict_return)
else:
dict_return = getdata('ALL') #默认初始页面
return render_template('query.html', dict_return=dict_return)
if __name__ == '__main__':
app.run(debug=True)
class MyEncoder(json.JSONEncoder): def default(self, obj): """ 只要检查到了是bytes类型的数据就把它转为str类型 :param obj: :return: """ if isinstance(obj, bytes): return str(obj, encoding='utf-8') return json.JSONEncoder.default(self, obj) def getdata(name): dict_return = {} #处理好的文件路径 path = "./Data_excel/" file = path+str(name)+"偏方秘方.xlsx" data = pd.read_excel(file) num=list(i+1 for i in range(len(data[u'drug']))) drug = list(data[u'drug']) prescript = list(data[u'prescript']) part = list(data[u'part']) # 以下为将处理好的数据加入字典 dict_return['num'] = num dict_return['drug'] = drug dict_return['prescript'] = prescript dict_return['part'] = part # 滚动图 item = [] for i in range(0, len(drug)): item.append({'num':num[i],'drug': drug[i],'prescript':prescript[i],'part':part[i]}) data_tb = json.dumps(item,cls=MyEncoder,ensure_ascii = False) data_tb = demjson.decode(data_tb) dict_return['data_tb'] = data_tb li=[] for root, dirs, files in os.walk('./Data_excel'): for file in files: li.append(file.split('偏')[0]) dict_return['li'] = li return dict_return
问答实现:
class SimpleQA: def __init__(self): self.data = { 'name_part': {'水部': '藻类', '火部': '灯芯花'}, 'name_alias': {'藻类': '藻藻', '灯芯花': '火火'}, 'name_smell': {'藻类': '清新', '灯芯花': '芳香'}, 'name_cure': {'藻类': '泻火', '灯芯花': '散结'}, 'drug_department': {'藻类': '肝部科室', '灯芯花': '心部科室'}, 'drug_prescript': {'藻类': '清火汤', '灯芯花': '散结丸'}, 'drug_onepart': {'藻类': '水', '灯芯花': '火'} } def search(self, question_type, drug_name): if question_type not in self.data: return "抱歉,暂不支持该类型的问题。" if drug_name not in self.data[question_type]: return "抱歉,找不到相关信息。" if question_type == 'name_part': return '属于部类是:' + self.data[question_type][drug_name] elif question_type == 'name_alias': return '别名是:' + self.data[question_type][drug_name] elif question_type == 'name_smell': return '气味品质是:' + self.data[question_type][drug_name] elif question_type == 'name_cure': return '使用方法是:' + self.data[question_type][drug_name] elif question_type == 'drug_department': return '该去科室是:' + self.data[question_type][drug_name] elif question_type == 'drug_prescript': return '治疗疾病的偏方是:' + self.data[question_type][drug_name] elif question_type == 'drug_onepart': return '该病从属于:' + self.data[question_type][drug_name] if __name__ == '__main__': qa_system = SimpleQA() question_type = 'drug_prescript' drug_name = '藻类' answer = qa_system.search(question_type, drug_name) print(answer)
Q:2777.077.178
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。