聊天机器人

ChatterBot

ChatterBot是一个基于Python的开源聊天机器人框架。ChatterBot支持中文,且可以在对话中实时改进。

一个未经训练的ChatterBot 实例开始时不知道如何通信。每次用户输入语句时,库都会保存他们输入的文本以及语句响应的文本。当ChatterBot收到更多输入时,它可以回复的响应数量以及与输入语句相关的每个响应的准确性都会增加。

程序通过搜索与输入匹配的最接近的匹配已知语句来选择最接近的匹配响应,然后从选择对该语句的已知响应中选择响应。

详细内容可查看其官方文档:https://chatterbot.readthedocs.io/en/stable/quickstart.html

安装ChatterBot

安装ChatterBot是很简单的:pip install chatterbot

基本概念

编辑距离(Levenshtein距离)

是指两个字符串之间, 由一个转成另一个所需要的最少编辑操作次数。允许的编辑操作包括:将一个字符替换成另一个字符、插入一个字符、删除一个字符。

适配器(Adapter)

一个好的聊天机器人框架应该具有清晰、模块化、耦合度低、部件可插拔与拓展的特点。作为一个好的聊天机器人,Chatterbot也是如此。为此Chatterbot使用了Adapter的概念。ChatterBot每个部分都设计了不同的“适配器”(Adapter),分为逻辑适配器和存储适配器。逻辑适配器确定ChatterBot如何选择对给定输入语句的响应的逻辑,包括:最佳匹配适配器、时间逻辑适配器、数学评估适配器、特定响应适配器。存储适配器提供了一个接口,允许ChatterBot连接到不同的存储技术,包括:SQL存储适配器、MongoDB存储适配器

预处理器(Preprocessors)

预处理器可以修改聊天机器人在逻辑adaper处理语句之前收到的输入语句。ChatterBot内置了几个预处理器:clean_whitespace、unescape_html、convert_to_ascii。你也可以创建自己的预处理器。

过滤器(Filters)

过滤器是创建可以传递给ChatterBot存储适配器的查询的有效方法。过滤器将减少聊天机器人在选择响应时必须处理的语句数量。

流程图

最基本的流程图应该是这样的,首先获得输入的字符串(很多种方式:终端、API等),然后同时被各个逻辑Adapter进行处理,取置信度最高的Response返回。

有时候需要对输入进行预处理:

ChatterBot的使用

基础版本

# -*- coding: utf-8 -*-
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer# 构建ChatBot并指定Adapter
bot = ChatBot('Default Response Example Bot',storage_adapter='chatterbot.storage.SQLStorageAdapter',logic_adapters=[{'import_path': 'chatterbot.logic.BestMatch','default_response':'嗯'}]
)
trainer=ListTrainer(bot)
trainer.train(['在吗?','嗯','在干嘛呢?','吃饭','咋这么晚才吃呢','嗯','明天出去玩吗','有事','我想去迪士尼','哦','晚安','哦'
])
while True:
print(bot.get_response(input("user:")))

运行结果:

需要解释一下上面的程序:

刚开始说明文件的编码方式,如果你需要用到中文,请务必写上。

然后import需要的模块。

通过ChatBot实例化一个聊天机器人,第一参数是聊天机器人的名字,storage_adapter指定存储适配器为SQL方式,logic_adapters指定逻辑适配器为最佳匹配方式,默认回复为”嗯”。

trainer=ListTrainer(bot)将以List集合作为训练数据训练聊天机器人,train方法开始训练。

Get_response()函数得到结果。

适配器的使用

from chatterbot import ChatBot
bot = ChatBot('Math & Time Bot',logic_adapters=['chatterbot.logic.MathematicalEvaluation','chatterbot.logic.TimeLogicAdapter']
)# Print an example of getting one math based response
response = bot.get_response('What is 4 + 9?')
print(response)# Print an example of getting one time based response
response = bot.get_response('What time is it?')
print(response)

运行结果:

使用自带语料库

# -*- coding: utf-8 -*-
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainerchatbot = ChatBot("ChineseChatBot")
trainer=ChatterBotCorpusTrainer(chatbot)
# 使用中文语料库训练它
trainer.train("chatterbot.corpus.chinese")
# 开始对话
while True:
print(chatbot.get_response(input(">")))

运行结果:

分析:

这个语料库是自带的,回答的也不知道是什么玩意

聊天机器人-ChatterBot初试相关推荐

  1. python开源聊天机器人ChatterBot——聊天机器人搭建、流程分析、源码分析

    开源聊天机器人ChatterBot 3.1  ChatterBot简介 ChatterBot是一个Python库,可以轻松生成对用户输入的自动响应.ChatterBot使用一系列机器学习算法来产生不同 ...

  2. Github每日精选(第18期):聊天机器人ChatterBot

    ChatterBot 是一个基于机器学习的对话对话引擎,使用 Python 构建,可以根据已知对话的集合生成响应.ChatterBot 的语言独立设计允许它被训练说任何语言. github的地址在这里 ...

  3. 使用 ChatterBot 库制作一个聊天机器人

    作者 | 周萝卜 来源 | 萝卜大杂烩 我们学习一些如何使用 ChatterBot 库在 Python 中创建聊天机器人,该库实现了各种机器学习算法来生成响应对话,还是挺不错的 1什么是聊天机器人 聊 ...

  4. [聊天机器人]:开源ChatterBot工作原理

    作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客:http://blog.csdn.net/qifengzou 日期:2017.08.12 18:35 转载请注明来自&q ...

  5. ChatterBot+第三方中文语料库实现在线聊天机器人

    设计并实现一个在线聊天机器人案例 1.ChatterBot ChatterBot是Python自带的基于机器学习的语音对话引擎,可以基于已知的对话库来产生回应.ChatterBot独特的语言设计可以使 ...

  6. chatbot聊天机器人技术路线汇总

    版权声明:博主原创文章,转载请注明来源,谢谢合作!! https://mp.csdn.net/mdeditor/84481818 聊天机器人实现的技术途径 大约可分为4种:1. 第一种是属于" ...

  7. chatbot聊天机器人技术路线

    聊天机器人实现的技术途径大约可分为以下4种: (其中第一种是属于"调用第三方API",也就是说核心代码和数据库不掌握在自己手里)(第二.三.四种属于开源框架,也就是说我们可以下载其 ...

  8. 转载:chatbot聊天机器人技术路线

    转载&备份: https://blog.csdn.net/tian_panda/article/details/80664578 聊天机器人实现的技术途径大约可分为以下4种: (其中第一种是属 ...

  9. python做人工智能对话_如何用Python制作聊天机器人?

    ,现在几乎30%的任务都是通过聊天机器人完成的.公司使用聊天机器人来提供诸如客户支持.生成信息等服务.以Siri.Alexa等为例,聊天机器人如何在我们的日常生活中发挥作用就变得 ,现在几乎30%的任 ...

最新文章

  1. php soap webservice 实例
  2. java awt显示到组件中出现乱码
  3. sql 使用存储过程传递列名或表名作为参数
  4. BEA WebLogic平台下J2EE调优攻略--转载
  5. gitlab备份与还原:配置文件解读、定时备份、云备份
  6. wxWidgets:wxFileCtrlEvent类用法
  7. 【Linux】一步一步学Linux——mii-tool命令(154)
  8. greenplum 存储过程_揭秘!Greenplum并行执行引擎到底是如何工作的?
  9. 周三直播预告丨openGauss和MogDB的优化分享
  10. 导入已有项目到svn
  11. 2019年最值得关注的几个公众号,好评率高达99.99%
  12. 虚拟机安装mysql5.7.20_虚拟机环境下CentOS 7 中安装Mysql 5.7.24(源码方式安装)
  13. 协同过滤推荐算法(一)原理与实现
  14. PDCN循环 与 GTD时间管理
  15. html变形金刚代码,百度变形金刚JS特效
  16. 将你的vim打造成轻巧强大的IDE
  17. 一亿条数据的排序处理
  18. 【机器学习】李宏毅-预测PM2.5
  19. 友坚Android210更新---支持7寸电阻屏和电容屏
  20. 项目管理笑话集之关羽斩颜良

热门文章

  1. php类知识 self $this都只能在当前类中使用
  2. 漫谈ElasticSearch关于ES性能调优几件必须知道的事(转)
  3. hello~Django
  4. JS判断IE6/IE7/IE8系列的写法
  5. jQuery:input的value值發生改變時,觸發事件
  6. 一些关于图论和二叉树的
  7. codeforces 688D D. Remainders Game(中国剩余定理)
  8. C++ Primer Plus 第一章 预备知识
  9. 神经网络其实并不需要那么深!普林斯顿大学英特尔提出ParNet,12层的网络就能达到80%以上的准确率!...
  10. 重磅!ICDAR 2019-LSVT街景文字识别国际竞赛!奖金丰厚