基于Python的中文聊天机器人

[亡魂溺海] 提交于 2019-12-18 05:14:19

什么是聊天机器人?

聊天机器人(chatbot、talkbot)本质上是基于文本和语音处理算法能够与真人进行交流的计算机程序,广泛用于客服、问答等系统中。优秀的chatbot要能够通过图灵测试。

为什么需要聊天机器人?

单个人的精力、时间和知识存储都是有限的。以电商平台的客服举例,按8小时工作制算如果要保持24小时人工客服在线需要招聘3个客服人员,并且客服人员必须熟悉店铺内所有商品同时熟练掌握与客户的沟通技巧并且熟知各种纠纷解决之道。且不说能不能找到同时满足上述条件的客服人员,可以确定的是雇佣这样的客服的成本会非常高。对于中小型网店,这是一笔很昂贵甚至无法负担的运行支出。试想一下,恰好此时有人向你推荐一款可降低2/3运行成本的聊天机器人,你会如何选择。

聊天机器人种类

根据编程的方式,聊天机器人分为:1、Rule-Based Chatbots,2、Self-Learning Chatbots

1、Rule-Based Chatbots

这一类的聊天机器人基于简单、有限的规则作出应答。

2、Self-Learning Chatbots

既可以通过经典的ML算法实现也可以通过前沿的AI算法实现。可以进一步细分为:Retrieval based、Generative。

2.1 Retrieval based Chatbots

基于原则流程图或者知识图谱从知识库中检索与问题最为匹配的答案,所有问题的答案都是预先生成并村粗在知识库中的。

2.2 Generative based Chatbots

基于大量的对话数据训练模型,问题的答案通过模型产生。

从上到下聊天机器人的智商逐渐升高

开始搭建一个简单的chatbot

必要的知识准备:NLTK、TF-IDF、Cosine similarity、jieba分词器

NLTK:很强大的python自然语言处理工具包,建议花点时间了解一下。
TF-IDF(Term Frequency-Inverse Document Frequency)
TF:表示某个关键词在整篇文章中出现的频率
IDF:表示计算倒文本频率。文本频率是指某个关键词在整个语料所有文章中出现的次数。倒文档频率又称为逆文档频率,它是文档频率的倒数,主要用于降低所有文档中一些常见却对文档影响不大的词语的作用。
更多细节可以参考:https://blog.csdn.net/Eastmount/article/details/50323063
TF-IDF的直观解释是在一个文档中出现频率较高的单词没有出现频率低的单词重要。

基本流程

1、准备数据,可以是大段的文本,选择一个主题然后从所在百度百科页面拷贝文本内容到txt文件中。
2、由于NLTK中文分词功能不完善,该用jieba分词代替。
3、文本切句然后分词
4、计算输入问句和文本的TF-IDF以及余弦相似度
5、输出与输入问句不同的余弦相似度最高的答句。

效果展示

效果展示

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!