实现微信聊天机器人-中级篇

article/2025/9/24 23:16:06

一、ChatterBot工作原理

Chatbot Engine的技术框架采用了开源项目ChatterBot (github.com/gunthercox/C)。

ChatterBot是一个python库,利用它可以轻松的创建对话软件。

一个未经训练的ChatterBot实例开始不知道如何沟通,每次用户输入一个语句,ChatterBot就会保存这个语句以及它对应的问句。随着它接受更多的输入,它可以回应的语句数量会增加,每个输入和回应的对应关系准确性也会提高。程序通过搜索与输入语句最相似匹配的语句,来选择最相似的回应,然后基于人们对机器人回应语句的频次,返回最可能的回应。

下图展示了ChatterBot的工作流图:

总体上分为3个层次,输入层,逻辑处理层,输出层。各层都可以扩展自定义的模式。

· 输入层

从一些来源获得输入(如:终端控制台,API接口,语音识别输入等),然后将其转换成ChatterBot可以理解的格式。 目前支持VariableInputTypeAdapter,TerminalAdapter,HipChat等输入适配器。 可以定义自己的输入适配器,通过继承InputAdapter基类,重写process_input方法并返回指定对象Statement就可以实现。

逻辑处理层

逻辑处理层包含了一些逻辑适配器,ChatterBot通过这些逻辑选择一个给定输入语句的回应。 目前支持ClosestMatchAdapter,ClosestMeaningAdapter,ApproximateSentenceMatchAdapter,TimeLogicAdapter,MathematicalEvaluation等逻辑适配器。 ClosestMatchAdapter采用Levenshtein Distance来计算文本相似度。 ClosestMeaningAdapter基于由两个句子形成的字矩阵中每个单词的同义词集的接近程度。 TimeLogicAdapter用来回答关于当前时间的问句。 MathematicalEvaluation用来回答一些数学计算问题。 可以同时使用多个逻辑适配器来处理,机器人将返回最高计算置信度值的回应;如果多个适配器返回相同的置信度,那么选择适配器列表中第一个适配器。 同样,也可以定义自己的逻辑适配器,通过继承LogicAdapter基类,重写相关方法返回指定的值就可以实现。

输出层

返回输入语句的回应,支持多种输出源,如OutputFormatAdapter,TerminalAdapter,HipChat,Mailgun。 可以定义自己的输出适配器,通过继承OutputAdapter基类,重写process_response方法并返回指定对象Statement就可以实现。

以上3层分别对应了Chatterbot的3种适配器类型,输入适配器、逻辑适配器和输出适配器,另外,还有一种类型是存储适配器,存储适配器用来存储所有的对话及问答关系,以供逻辑适配器使用。

存储适配器也是可扩展的,目前支持JsonFileStorageAdapter,MongoDatabaseAdapter,TwitterAdapter,同样也可以自定义存储适配器。


二、ChatterBot使用

ChatterBot可以下载源码编译安装,也可以直接使用pip工具安装。

本例使用pip安装,如下

pip install chatterbot

下面通过一个简单例子说明如何使用:

from chatterbot import ChatBot

# 创建ChatBot实例

bot = ChatBot("Terminal",##bot名字

storage_adapter="chatterbot.adapters.storage.JsonFileStorageAdapter",##使用json文件存储数据

logic_adapters=[ ##逻


http://chatgpt.dhexx.cn/article/kSq3U9ox.shtml

相关文章

微信聊天机器人,不使用iChat,可以群聊

目录 1. 微信聊天界面截图 2. 图片文字识别 3. 获取最新消息 3.1 独聊 3.2 群聊 4. 机器人聊天系统 5. 成果展示 6. 全部代码 本文参考大神【喵王叭】的文章:python实现微信、QQ聊天自动回复【纯物理】_喵王叭的博客-CSDN博客_python自动回复纯物理方式实现微…

tomcat的开发模式和生产模式

tomcat这两种模式对大家的影响主要是在jsp的开发当中。大家都知道jsp需要先编译成servlet源文件并编译为字节码,即生成.class文件才可以执行,所以在jsp文件首次运行时先要进行编译导致运行较慢,之后的访问都会直接进入执行阶段。 在开发模式下…

chrome开发模式下清除缓存问题

介绍: 在开发的时候经常会遇到这样的问题,后台js修改,前台怎么也清除不了缓存的问题,包括使用ctrlf5都没有办法处理,今天教大家一种方式,在chrome中采用开发模式下彻底清除缓存问题 一、打开chrome,随便访…

微信小程序-云开发模式pk传统开发模式【详细】

👨‍🎓作者:bug菌 ✏️博客:CSDN、掘金等 💌公众号:猿圈奇妙屋 🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。 🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。 小伙伴们,说起开发微…

软件开发模式之敏捷开发(scrum)

简介 这几年关于敏捷开发在互联网企业中越来越广泛被使用到,运用的比较多的当属scrum敏捷开发和xp敏捷开发,人人都在谈论敏捷开发。那什么才是敏捷开发呢? 目录 什么是敏捷开发?传统的开发模式和敏捷开发模式的对比&#xff1f…

特性分支开发模式 or 主干开发模式,团队该如何选择?

对于一个具有一定规模的开发团队而言,团队 Devops 的建设都是迈向高效开发的必经之路,即便没有达到 Devops 建设的程度,为了团队中开发之间的高效协作,基于版本管理工具来选择团队合理的代码分支开发模式都是非常重要的一环。对于…

vue项目的三种开发模式

vue项目的三种开发方式 文章目录 vue项目的三种开发方式1.原始无合作开发2.手动模块化开发3.自动模块化开发1、开发流程2、配置webpack-dev-server1.下载安装包2.配置package.json3、配置webpack.config.js4、执行程序5、调试程序 1.原始无合作开发 包含两个文件:v…

介绍两种常见软件开发模式:“敏捷”和“瀑布”

在软件开发时,经常面对的第一个项目实现决策是“我们应该使用哪种开发方法?”这是一个引起很多讨论(和激烈辩论)的话题。如果您以前没有使用过这种方法,那么适当了解开发方法和理论是必要的;简单地说,这是一种组织软件开发工作的方法。这与项…

常用的4种开发模式

常用的4种开发模式 1. 瀑布式开发 瀑布式开发是由W.W.Royce在1970年提出的软件开发模型,是一种比较老的计算机软件开发模式,也是典型的预见性的开发模式。在瀑布式开发模式中,开发严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤进行,步骤的成果作为衡量进…

小程序:游客模式--开发模式

一、简介 1.1、普通的开发可以正常进行 1.2、小程序开发工具不能预览,不能真机调试,调用微信扫码不能走成功的回调 等等 1.3、仔细观察开发者工具提示当前为“游客模式”,作为开发者需要切换到可以正常开发的“开发模式” 二、解决 2.1、开…

web开发模式+身份认证

一、web开发模式 目前主流的 Web 开发模式有两种,分别是: 1.基于服务端渲染的传统 Web 开发模式:  概念:服务器发送给客户端的 HTML 页面,是在服务器通过字符串的拼接,动态生成的。因此,客户端…

微信小程序——传统开发模式与云开发模式对比

目 录 1、传统开发模式与云开发模式的对比图 2、云开发技术能力说明 3、云开发技术特点 1、传统开发模式与云开发模式的对比图 通过传统开发模式与云开发模式的对比图可以看出传统开发模式需要开发者关注后端服务器,比如数据库、文件存储、负载均衡、异地容灾、…

前后端分离开发模式介绍

1.1 什么是前后端分离 前后端分离是目前一种非常流行的开发模式,它使项目的分工更加明确: 后端:负责处理、存储数据前端:负责显示数据 前端和后端开发人员通过 接口 进行数据的交换。 1.2 为什么要进行前后端分离 前后端可以…

敏捷开发模式

1、敏捷开发的概念 从1990年代开始逐渐引起广泛关注,是一种以人为核心、迭代、循序渐进的开发方法。强调以人为本,专注于交付对客户有价值的软件。是一个用于开发和维持复杂产品的框架。 2、敏捷开发的流程 (图为禅道敏捷开发流程管理) 2.1 产品负责人将…

Django开发模式与流程

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。 一.Django的MTV开发模式与一般的MVC开发模式区别 1.MVC模式 在MVC模式中&am…

【面向对象】DDD(一):传统开发模式 VS DDD 开发模式

我们都知道,很多业务系统都是基于 MVC 三层架构来开发的。实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模式。虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了面向对象编程风格,是一种…

MVC开发模式

一.MVC设计模式 1.MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller&#xff0…

项目的开发模式

开发模式大概可以分为两种: 1、大公司的开发模式; 2、外包的开发模式; 一、大公司的开发模式; 1. 市场调研 2. 项目需求会(人员) 产品市场运营UI开发后端前端项目经理测试–>web/ios/安卓安全 3. …

什么是DDD开发模式

DDD尝试解决业务系统(逻辑CRUD)开发的复杂性问题,这种复杂性是由于复杂的业务规则,业务逻辑变化。 一般系统的业务逻辑、复杂性在于:流转判断多,专业规则多,计算量大。而DDD模式的解决的方式是通过分层,即业…

Scrum敏捷开发模式介绍与实践

文章目录 前言一、开发模式1. 瀑布流开发模式2. 迭代开发模式3. 螺旋开发模式4. 敏捷开发模式 二、敏捷开发模式三、敏捷模式1. Scrum2. Kanban3. XP4. Lean Startup 四、Scrum 敏捷开发模式1. 框架图2. 角色Scrum Master,SMProduct Owners, POSoftware …