“基于医疗知识图谱的问答系统”代码解析(五)
发布时间
阅读量:
阅读量
“基于医疗知识图谱的问答系统”代码解析(五)
chatbot_graph.py —聊天机器人图谱代码分析
即将迎来最终章的时刻了,在这段旅程中一直保持着期待的心情。然而随着项目的推进愈发深入,在某个深夜里突然感到疲惫不堪——熬了两个不眠之夜后依然无法尽兴。鉴于此情形建议大家适时休息以保证良好的工作状态。
《基于医疗知识图谱的问答系统》代码详细解析系列(一):概述与知识图谱构建基础
《基于医疗知识图谱的问答系统》代码详细解析系列(二):语义分析与问题建模优化
《基于医疗知识图谱的问答系统》代码详细解析系列(三):推理机制与结果验证
《基于医疗知识图谱的问答系统》代码详细解析系列(四):性能优化与扩展方案探讨
#!/usr/bin/env python3
# coding: utf-8
# File: chatbot_graph.py
# Author: lhy<lhy_in_blcu@126.com,https://huangyong.github.io>
# Date: 18-10-4
# 导入需要的文件
from question_classifier import *
from question_parser import *
from answer_search import *
'''问答类'''
class ChatBotGraph:
def __init__(self):
# 实例化
self.classifier = QuestionClassifier() # 分类器
self.parser = QuestionPaser() # 分析器
self.searcher = AnswerSearcher() # 答案搜索器
# sent 为用户输入进来的语句
def chat_main(self, sent):
# 设置默认回答
answer = '您好,我是小勇医药智能助理,希望可以帮到您。如果没答上来,可联系https://liuhuanyong.github.io/。祝您身体棒棒!'
# 对输入语句进行分类,把结果存入res_classify
res_classify = self.classifier.classify(sent)
# 如果不存在,就返回默认值
if not res_classify:
return answer
# 再对res_sql提取关键词
res_sql = self.parser.parser_main(res_classify)
# 最终答案在答案搜索文件的search_main函数可得
final_answers = self.searcher.search_main(res_sql)
# 如果找不到最终答案,就返回默认值
if not final_answers:
return answer
# 找到了多个的化,就用换行符替代
else:
return '\n'.join(final_answers)
if __name__ == '__main__':
# 实例化handler
handler = ChatBotGraph()
# 问题-答案查询流程
while 1:
# 以 ‘用户: ’ 来询问
question = input('用户:')
# 调用函数 返回答案
answer = handler.chat_main(question)
# 输出答案
print('小勇:', answer)
代码解读
结果展示

从经验来看,在对话问答系统中存在不少问题主要在于关键词匹配不够精准。如果我们能够建立一个模型来计算语句之间的相似度进而能够判断这些语句是否是指令。
总结
注射药物让我晚上感到异常兴奋。我们期待在知识图谱中携手共进,出现问题及时反馈,因为这天晚上的决策容易出现偏差或错误。
全部评论 (0)
还没有任何评论哟~
