需要源码和数据集请点赞关注收藏后评论区留言私信~~~

一、问答智能客服简介

QA问答是Question-and-Answer的缩写,根据用户提出的问题检索答案,并用用户可以理解的自然语言回答用户,问答型客服注重一问一答处理,侧重知识的推理。

从应用领域视角,可将问答系统分为限定域问答系统和开放域问答系统。

根据支持问答系统产生答案的文档库、知识库,以及实现的技术分类,可分为自然语言的数据库问答系统、对话式问答系统、阅读理解系统、基于常用问题集的问答系统、基于知识库的问答系统等。

智能问答客服功能架构

典型的问答系统包含问题输入 问题理解 信息检索 信息抽取 答案排序 答案生成和结果输出等,首先由用户提出问题,检索操作通过在知识库中查询得到相关信息,并依据特定规则从提取到的信息中抽取相应的候选答案特征向量,最后筛选候选答案结果输出给用户

智能问答客服框架

1: 问题处理 问题处理流程识别问题中包含的信息,判断问题的主题信息和主题范畴归属,比如是属于一般类问题还是属于特定主题类问题,然后提取与主题相关的关键信息,比如人物信息、地点信息和时间信息等。

2 :问题映射 根据用户咨询的问题,进行问题映射消除歧义。通过字符串相似度匹配和同义词表等解决映射问题,根据需要执行拆分和合并操作。

3 :查询构建 通过对输入问题进行处理,将问题转化为计算机可以理解的查询语言,然后查询知识图谱或者数据库,通过检索获得相应备选答案。

4 :知识推理 根据问题属性进行推理,问题基本属性如果属于知识图谱或者数据库中的已知定义信息,则可以从知识图谱或者数据库中查找,直接返回答案。如果问题属性是未定义类问题,则需要通过机器算法推理生成答案。

5: 消岐排序 根据知识图谱中查询返回的一个或者多个备选答案,结合问题属性进行消歧处理和优先级排序,输出最佳答案。

二、智能医疗客服问答实战

定制性智能客服程序一般需要实现选择语料库,去除噪声信息后 根据算法对预料进行训练,最后提供人机接口问答对话,基于互联网获得的医学语料库,并通过余弦相似度基本原理,设计并开发以下问答型智能医疗客服应用程序

项目结构如下

效果展示

下面是csv文件中定义的一些病例

预先定义好的欢迎语句

运行chatrobot文件  弹出以下窗口 输出问题后点击提交咨询即可

对于语料库中没有的问题会自动推断给出答案(通常不太准确)

三、代码

部分代码如下 全部代码和数据集请点赞关注收藏后评论区留言私信

# -*- coding:utf-8 -*-
from fuzzywuzzy import fuzz
import sys
import jieba
import csv
import pickle
print(sys.getdefaultencoding())import logging
from fuzzywuzzy import fuzz
import math
from scipy import sparse
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from scipy.sparse import lil_matrix
from sklearn.naive_bayes import MultinomialNB
import warnings
from tkinter import *
import time
import difflib
from collections import Counter
import numpy as npfilename = 'label.csv'def tokenization(filename):corpus = []label = []question = []answer = []with open(filename, 'r', encoding="utf-8") as f:data_corpus = csv.reader(f)next(data_corpus)for words in data_corpus:word = jieba.cut(words[1])tmp = ''for x in word:tmp += xcorpus.append(tmp)question.append(words[1])label.append(words[0])answer.append(words[2])with open('corpus.h5','wb') as f:pickle.dump(corpus,f)with open('label.h5','wb') as f:pickle.dump(label,f)with open('question.h5', 'wb') as f:pickle.dump(question, f)with open('answer.h5', 'wb') as f:pickle.dump(answer, f)return corpus,label,question,answerdef train_model():with open('corpus.h5','rb') as f_corpus:corpus = pickle.load(f_corpus)with open('label.h5','rb') as f_label:label = pickle.load(f_label,encoding='bytes')vectorizer = CountVectorizer(min_df=1)transformer = TfidfTransformer()tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))words_frequency = vectorizer.fit_transform(corpus)word = vectorizer.get_feature_names()saved = tfidf_calculate(vectorizer.vocabulary_,sparse.csc_matrix(words_frequency),len(corpus))model = MultinomialNB()model.fit(tfidf,label)with open('model.h5','wb') as f_model:pickle.dump(model,f_model)with open('idf.h5','wb') as f_idf:pickle.dump(saved,f_idf)return model,tfidf,labelclass tfidf_calculate(object):def __init__(self,feature_index,frequency,docs):self.feature_index = feature_indexself.frequency = frequencyself.docs = docsself.len = len(feature_index)def key_count(self,input_words):keys = jieba.cut(input_words)count = {}for key in keys:num = count.get(key, 0)count[key] = num + 1return countdef getTfidf(self,input_words):count = self.key_count(input_words)result = lil_matrix((1, self.len))frequency = sparse.csc_matrix(self.frequency)for x in count:word = self.feature_index.get(x)if word != None and word>=0:word_frequency = frequency.getcol(word)feature_docs = word_frequency.sum()tfidf = count.get(x) * (math.log((self.docs+1) / (feature_docs+1))+1)result[0, word] = tfidfreturn result    if __name__=="__main__":tokenization(filename)train_model()

创作不易 觉得有帮助请点赞关注收藏~~~

【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)相关推荐

  1. Python系列 | 基于Tkinter图形化界面实现课堂点名系统

    课堂点名器实现的效果: exe程序已打包如下,欢迎大家下载使用!!! 链接:课堂点名系统 提取码: qx18 一.核心功能设计 课堂点名系统实现的思路大致为可以自定义设置班级学生姓名或者默认通过学号进 ...

  2. Visual C++实现黑白棋游戏项目实战二:界面的设计与实现(附源码和资源 超详细)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 黑白棋游戏的Visual C++工程采用MFC对话框模式进行开发,下面对它进行详细介绍 一.游戏菜单的实现 首先要在工程资源中添加一个菜单资源类,菜 ...

  3. Python基础笔记_Day14_Python图形化界面、Python GUI、tkinter、Python英汉词典

    Day14_Python图形化界面.Python GUI.tkinter.Python英汉词典 14.01_Python语言基础(Python实现英汉字典)(掌握) 14.02_Python语言基础( ...

  4. Python + Tkinter 图形化界面设计1 —— 第一个图形化界面

    图形化界面设计的基本理解 Python自带了tkinter 模块,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法.其图像化编程的基本步 ...

  5. Python中Tkinter 图形化界面设计(详细教程)

    Python-Tkinter 图形化界面设计(详细教程) 一.图形化界面设计的基本理解 二. 窗体控件布局 2.1 根窗体呈现示例 2.2 tkinter 常用控件 2.2.1常用控件 2.2.2 控 ...

  6. 肝货,详解 tkinter 图形化界面制作流程!

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 本期案例是带着大家制作一个属于自己的GUI图形化界面->用于设计签名的哦(效果如下图),是不是感觉很好玩,是不是很想学习呢?限于篇幅,今天我们首 ...

  7. 又一个4000字肝货,详解tkinter图形化界面制作流程!

    本期案例是带着大家制作一个属于自己的GUI图形化界面->用于设计签名的哦(效果如下图),是不是感觉很好玩,是不是很想学习呢?限于篇幅,今天我们首先详细讲述一下Tkinter的使用方法.本来不准备 ...

  8. web python 自动化是什么_Selenium 凭什么成为 Web 自动化测试的首选?(内附源码)...

    原标题:Selenium 凭什么成为 Web 自动化测试的首选?(内附源码) 自动化 · 工具 1.QTP QTP是一个商业化的功能测试工具,收费,支持web,桌面自动化测试. 2. Selenium ...

  9. 用Java写了一个类QQ界面聊天小项目,可在线聊天(附源码)

    作者: AC路上 blog.csdn.net/weixin_44048140/article/details/109612049 1.功能实现 1.修改功能(密码.昵称.个性签名) 2.添加好友.删除 ...

最新文章

  1. 2017先知创新大会:有ZHI而来
  2. 组件通信 $ref
  3. JAVA开发者大会-Spring Cloud网关分享
  4. 关于Unity的入门游戏飞机大战的开发(上)
  5. python时间库_Python处理日期时间的标准库:time和datetime
  6. python __init__(self)_python中的_init_和self是什么的关系?
  7. 0点睡觉很会养生”苏宁高管的这话让IT人很憋屈
  8. Volley(六 )—— 从源码带看Volley的缓存机制
  9. anaconda下载
  10. 聚合直播,直播接口的使用
  11. TeamTalk编译和部署(一)
  12. linux latex 英文字体,LaTeX 中的一些英文字体
  13. 王者荣耀 露娜 技巧-教学-总结
  14. 新浪云服务器 java 部署
  15. 详谈室内定位技术方案
  16. Mac 使用 80 端口
  17. TextView与EditText
  18. 3款大屏播放软件,用法很详细,用于大屏幕播放视频和图片
  19. 中国色—在线的中国传统颜色集锦
  20. python中arg是什么意思_Python中的*arg和**kwarg

热门文章

  1. 生产质量管理系统有哪些功能?
  2. 项目管理工具 Open Project 介绍
  3. 在Arcgis中进行拓扑检查(二)
  4. WIN11显示右下角所有图标
  5. 分类时为什么都选择one hot编码
  6. POST请求模拟工具、JSON请求工具、http接口测试、post接口测试
  7. dede采集文章内容图片不显示
  8. Function是什么?
  9. Java之加密工具类java.security.MessageDigest或org.apache.commons.codec.digest.DigestUtils
  10. 关于Vue使用ueditor富文本编辑器上传图片