“基于医疗知识图谱的问答系统”代码解析(五)

“基于医疗知识图谱的问答系统”代码解析(五)

chatbot_graph.py —聊天机器人图谱代码分析

终于来到最终章了,刚开始还挺兴奋,此时困了,熬了两个小时,还是不要熬夜了。
“基于医疗知识图谱的问答系统”代码解析(一)
“基于医疗知识图谱的问答系统”代码解析(二)
“基于医疗知识图谱的问答系统”代码解析(三)
“基于医疗知识图谱的问答系统”代码解析(四)

#!/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)

结果展示

“基于医疗知识图谱的问答系统”代码解析(五)_第1张图片
其实可以看出来,对话问答还是存在很多瑕疵的,主要是关键词的匹配,如果我们能用一种模型训练语句的相似度,从而可以判断语句是否为一种命令

总结

可能医生给我今天打的针 让我晚上特别兴奋。希望大家在知识图谱里共同努力呀,有问题一定要指出来哟,毕竟晚上做出的决定一般不可靠。

你可能感兴趣的:(知识图谱问答,python,neo4j,知识图谱)