【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)

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

一、自然语言处理与智能

自然语言处理技术是智能客服应用的基础,在自然语言处理过程中,首先需要进行分词处理,这个过程通常基于统计学理论,分词的精细化可以提升智能客服的语言处理能力,统计分词和马尔可夫模型是常用的方法,但在非常用词汇的识别精度方面稍显逊色,而精度高低直接影响分词结果的准确性,多样性分词有助于发现形式上的不合理性

自然语言处理技术是智能客服中的重要的环节,也是决定智能客服应用质量好坏和问题处理效率高低的关键因素,创建智能客服通常系统先进行大量学习来充实语言知识库,并结合各种典型案例提升系统的处理能力。智能客服系统重点关注三部分:

1:知识库完善

2:服务满意度

3:处理未知场景的自我学习能力

与传统人工客服相比 智能客服应用一般具有以下优势

可以提供24小时无间断在线服务。

具备持续自主学习能力 。

处理速度快,处理效率高,

可以应对短时大容量服务请求。

成本优势。

从用户问题到答复输出涉及的流程基本框架如下图

 二、智能应用开发库如下

 Gensim 

 NLTK 

SpaCy 

TensorFlow TensorFlow是一个基于数据流编程(dataflow programming)的系统,被广泛应用于图形分类、音频处理、推荐系统和自然语言处理等场景的实现,提供基于Python语言的四种版本:CPU版本(tensorflow)、GPU加速版本(tensorflow-gpu)以及每日编译版本(tf-nightly、tf-nightly-gpu)。

 Theano

Keras

三、充实智能客服的情感

智能客服系统既依赖于专业性数据,也与自然处理理解等人工智能技术紧密相关,在解决用户业务诉求的过程中,难免用到用户咨询以及无法解决的问题等状况,因此提升其情感分析能力,具备多维度服务能力,对提高客户整体满意度有十分重要的积极意义,智能客服,人工客服和用户之间的关系可以简要概括如下图

智能客服处理流程如下图

 四、聊天客服机器人实战

开发环境简介:

我们将使用深度学习技术构建一个聊天机器人,在包含聊天意图类别、用户输入和客服响应的数据集上进行训练。基于循环神经网络(LSTM)模型来分类用户的输入消息所属类别,然后从响应列表中基于随机算法提供响应输出。该实例在执行环境Tensorflow(2.6.0)和Python(3.6.5)中运行成功,其他需要的库为NLTK和Keras。

数据集和模型简介:

所需数据和模型说明如下:

chatbot.json :预定义消息分类、输入消息和客服响应的数据文件。

wordtoken.pkl : pickle 文件,存储包含词汇列表的Python 对象。

category.pkl :pickle 文件,包含消息类别列表。

model.h5 :经过训练的模型,包含模型以及神经元权重相关信息。

数据结构

本实例数据基于JSON(JavaScript Object Notation),JSON是一种轻量级的数据交换格式,完全独立于语言,机器容易解析和生成。JSON 建立在两种结构上:

1)名称:值(name:value)的集合。在计算机语言中称为对象、记录、结构、字典、哈希表、键控列表或关联数组。

(2)值有序列表。通常实现方式为数组、向量、列表或序列,属于通用数据结构,可与通用编程语言互换。

效果展示

语料库如下

 训练过程如下

 

用户在图形界面输入问题 客服机器人会给出相应回答 

 当用户提出了语料库之外的问题 客服便会显示以下回答

 

 五、代码

项目结构如下 

部分代码如下  需要全部代码请点赞关注收藏后评论区留言私信~~~

test文件

#导入库
import nltk
import pickle as pk
import numpy as np
import json as js
import random

from tensorflow import keras
from tensorflow.python.keras.models import load_model
from nltk.stem import WordNetLemmatizer
wordlem = WordNetLemmatizer()
from tkinter import * 
from tkinter import  Text  
from tkinter import  Button  
import tkinter

nltk.download('punkt')
nltk.download('wordnet')
#加载训练模型
load = load_model('data/model.h5')

#加载数据和中间结果
chatbot = js.loads(open('data/chatbot.json').read())
wordlist = pk.load(open('data/wordlist.pkl','rb'))
category = pk.load(open('data/category.pkl','rb'))


def tokenization(text):
    #分词
    word_tokens = nltk.word_tokenize(text)
    # 词形还原
    #for i in sw:
    word_tokens =  [wordlem.lemmatize(i.lower()) for i in word_tokens] 
    return word_tokens

#词袋模型
def bow(text, wordlist):
    #分词
    tokens = tokenization(text)
    bow = [0]*len(wordlist)  
    for token in tokens:
        for i,flag in enumerate(wordlist):
            if flag == token: 
                #查找匹配成功则标识为1
                bow[i] = 1
                print ("词袋模型匹配结果: %s" % flag)
    return(np.array(bow))

#预测结果
def predict(text, load):
    #设置阈值,过滤阈值以下内容
    err_level = 0.20
    outlist = []
    bow_outcome= bow(text,wordlist)
    result = load.predict(np.array([bow_outcome]))[0]
 
    #根据概率结果排序
    outcome = [[i,j] for i,j in enumerate(result) if j>err_level]
    outcome.sort(key=lambda x: x[1], reverse=True)
    for j in outcome:
        outlist.append({"k": category[j[0]], "probability": str(j[1])})
    return outlist

#设置应答信息
    
def getResponse(pred, intents_json):
    ptype = pred[0]['k']
    print("用户提问类型:",ptype)
    ctype = intents_json['chatbot']
    for type in  ctype:
        if(type['category']== ptype):
            result = random.choice(type['output'])
            print("提供给用户的响应信息:",result)
            break
    return result    


#预测消息响应
def chatbot_Response(query):
    pred = predict(query, load)
    outcome = getResponse(pred, chatbot)
    return outcome




#设置用户和智能客服之间的消息交互
def chatbotInteract():
    query = txt.get("1.0",'end-1c').strip()
    txt.delete("0.0",END)


    chatwnd.tag_config('question', background="white", foreground="black")
    chatwnd.tag_config('answer', background="white", foreground="blue")
    chatwnd.config(state=NORMAL)
    chatwnd.insert(END, "用户问题:\n" + query + '\n\n','question')

    outcome = chatbot_Response(query)
    chatwnd.insert(END, "客服回答:\n" + outcome + '\n\n','answer')   
        
    chatwnd.config(state=NORMAL)
    chatwnd.yview(END)


 
#设置智能客服应用界面风格
tk_window = tkinter.Tk(screenName=None, baseName=None)
tk_window.title("智能客服")
tk_window.geometry("500x600")
tk_window.resizable(False, False)

#设置文本框
chatwnd = Text(tk_window, borderwidth=2, cursor=None,state=NORMAL, background="white", height="12", width="70", font="Arial",wrap=WORD)

#设置滚动条
srb = Scrollbar(tk_window, command=chatwnd.yview, activebackground=None,background="white",borderwidth=2,highlightcolor="purple",cursor="arrow",
jump=0,orient=VERTICAL,width=16,elementborderwidth=1)
srb.pack( side = RIGHT, fill = Y )
chatwnd['yscrollcommand'] = srb.set


#设置信息输入框风格
txt = Text(tk_window, borderwidth=0, cursor=None,background="white",width="25", height="8", font="Arial",wrap=WORD)

#设置发送消息按钮风格
msgBtn = Button(tk_window, font=("kaiti",14), text="咨询", width=12, height=8,highlightcolor=None,image=None,justify=CENTER,state=ACTIVE,
                    borderwidth=0, background="Blue", activebackground="#524e78",fg ='white',relief=RAISED,
                    command= chatbotInteract )




#显示组件内容

srb.place(x=404,y=12, height=398)
chatwnd.place(relx=0.0, rely=0.35, relwidth=0.8, relheight=0.66, anchor='w')
msgBtn.place(bordermode=OUTSIDE,x=175, y=540, height=50)
txt.place(x=2, y=411, height=100, width=400)


tk_window.mainloop()

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

  • 241
    点赞
  • 290
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 226
    评论
【资源说明】 基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip 基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip基于sqlite数据库以及深度学习lstm实现的检索式聊天机器人python源码+数据集+模型+代码注释.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
这是一个旺旺客服机器人程序 网上下载的源代码修改而成,原来需要注册没用的控件,给去了 等有时间重新写个再完美一些的出来 下面是使用说明 一、运行环境 OS:WinsowXP/Vista/7(需要管理员权限) 硬件:建议可用内存不低于1GB,空闲时CPU占用率不高于10% 软件:以开启淘宝旺旺和网页不觉得卡、迟钝即可 二、使用条件 1.【必须】只能在阿里旺旺2012卖家版环境下使用 2.【建议】关闭关闭E客服功能 3.【必须】一定要关闭工作台模 4. 【必须】将发送信息设置为Enter(回车键)发送,而不是Enter+Ctrl 5.【建议】关闭自动升级功能 6.【必须】关闭所有自动回复功能 7.【必须】开启机器人任何时候均不得进入暂离、勿扰等模式 8.【必须】取消“不使用电脑XX分钟后进入离开模"式 9.【建议】关闭后台一切不必要软件,特别是P2P软件和大量占用CPU内存等资源的程,机器越卡约可能出现意外 10.【建议】关闭消息提醒所有浮出效果 11.【必须】开启机器人后请勿使用旺旺主动与其他任何人发起聊天,请勿对电脑有任何操作 12.【必须】关闭屏幕保护程序,关闭待机功能,一旦进入待机状态程序将停止 13.【强烈建议】关闭后台一切占用系统资源的程序:如游戏、MP3、视频、下载器等 14.【特别注意】自动回复提问和回答文字中不得含有“\"符号,网址应用"/"代替,如:http://www.baidu.com/index.html 三、常见问题 1.出现自动回复错误 由于机器人是采用模糊判断,假如回复内容为:在吗/在的,则所有回答含有"在吗“的所有提问都会被回答为:在的。 2.出现多句回复或短时间多次提问无法回复 当前版本机器人只擅长回复单句提问,无法适应短时间客户大量提出问题。建议在回复时提示用户提问速度放慢,使用简单易懂的单句 3.经常出现回复”无法识别“ 出现此类问题往往是用户发送图片、文件或者输入错别字或者没有设定符合条件的自动回复语句造成的 4.出现无回复窗口即消失等问题 请保证您的电脑能够流畅运行,本机器人不适合老爷机使用,系统越卡则出现此类问题几率越大 5.其他问题 请检查确保您的电脑已经符合运行环境且已经按照使用条件设置 四、使用技巧、方法 1.先启动旺旺2012卖家版 2.按照第二章节[使用条件]认真设置检查无误后开启本机器人 3.选钩”接受协议“,设置填写您的淘宝ID(即:您店铺中显示联系我所显示的ID名字),填写错误将导致机器人无法运行 4.添加删除设置问题、回答,完成后点击保存 5.关闭清理释放后台程序,将一切占用内存的程序统统退出 6.关闭所有旺旺聊天框,最小化旺旺2012卖家版 7.点击机器人界面”启动“即可,鼠标键盘不再做任何操作 技巧提示: 1.出现任何问题请勿急躁,请认真检查使用步骤、必须条件是否满足,仔细阅读本帮助文档 2.检查软件设置是否错误,是否符合要求 3.如果您找不到阿里旺旺2012卖家版的设置在哪,不明白第二章内容所指的设置在何处请点开旺旺2012卖家版界面,点击左下角”设置“,在出来的界面中细心查找 4.如果您找不到阿里旺旺2012卖家版请到此网址下载: http://www.onlinedown.net/soft/50032.htm [华军软件园] 5.免费软件,如果您想修改自动回复内容请联系597635593@qq.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 226
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值