终于来到最终章了,刚开始还挺兴奋,此时困了,熬了两个小时,还是不要熬夜了。
“基于医疗知识图谱的问答系统”代码解析(一)
“基于医疗知识图谱的问答系统”代码解析(二)
“基于医疗知识图谱的问答系统”代码解析(三)
“基于医疗知识图谱的问答系统”代码解析(四)
#!/usr/bin/env python3
# coding: utf-8
# File: chatbot_graph.py
# Author: lhy
# 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)
其实可以看出来,对话问答还是存在很多瑕疵的,主要是关键词的匹配,如果我们能用一种模型训练语句的相似度,从而可以判断语句是否为一种命令
可能医生给我今天打的针 让我晚上特别兴奋。希望大家在知识图谱里共同努力呀,有问题一定要指出来哟,毕竟晚上做出的决定一般不可靠。