做一个基于 chatterbot 的聊天机器人

简介: 今天和大家一起来手撕一个自动问答系统,其实也就是类似我们常说的聊天机器人

初识自动问答系统


关键点

  1. 句意理解
    系统接收到一句话,需要先通过语法分析,语义分析等来理解该句子,这样才能更好的给出回答
  2. 文本信息摘取
    系统需要有自己的语料库、知识库或者相关内容,并从中抽取出相应的回答。
  3. 知识推理
    这个是更高一层的要求,系统应该可以通过上下文,或者接收到的句子的语义,通过知识推理的手段获取到知识库中不存在的答案。


可用技术栈

基于以上几点,可用基于现有的一些算法来训练自己的模型,当然也可用通过开源的框架来搭建,下面我们就先来实践下基于开源框架的实现。


基于 ChatterBot 实现


ChatterBot 是一个功能强大的,基于 Python 的聊天机器人框架,其 GitHub 地址为:https://github.com/gunthercox/ChatterBot/tree/master

官方文档为:https://chatterbot.readthedocs.io,有兴趣的小伙伴可以自行研究。这里我们给出简单的实战过程。


1. 获取语料

中文聊天语料这一块,我选择了网上大神整理的资料,选取其中一部分,小黄鸡语料

https://github.com/codemayq/chinese_chatbot_corpus


2. 使用 Google Colab 训练

Google Colab 是个好东西,我们一定要充分的利用起来。(还不熟悉的可以查看我以前写的一篇文章

  1. 上传处理好的小黄鸡语料到 Colab 上
  2. 在 Colab 上安装 ChatterBot

!pip install chatterbot
!pip install chatterbot-corpus
  1. 创建一个 Chat Bot
from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
chatbot = ChatBot("my chat")
trainer = ListTrainer(chatbot)
  1. 载入语料
with open('xiaohuangji.tsv', encoding='utf-8') as f:
  data = f.read().replace('\t', '\n')
print(data[:100])
  1. 训练
trainer.train(data)

最后,等待训练完成之后,我们再把生成的 db.sqlite3 文件下载到本地。

  1. 部署成服务
    在自己的云主机中,或者自己的本地电脑上安装 ChatterBot,如果安装失败,可以选择使用 anaconda 来安装。
    先简单的做个实验,看看聊天效果怎么样
from chatterbot import ChatBot
 bot = ChatBot(
     'my-chat',
     database_uri='sqlite:///db.sqlite3'
 )
 print('Type something to begin...')
while True:
    try:
        user_input = input()
        bot_response = bot.get_response(user_input)
        print(bot_response)
    # Press ctrl-c or ctrl-d on the keyboard to exit
    except (KeyboardInterrupt, EOFError, SystemExit):
        break

来看下聊天效果:

image.png

个人感觉,效果还行吧,关键是 ChatterBot 是能够从每次的聊天中自动学习,也就是聊天记录越多,这个机器人也就越“精”,是不是很惊喜!


部署成 API

使用轻量级的 flask 来开发 API,简单的代码如下:

from flask import Flask, render_template, request, jsonify
 from chatterbot import ChatBot
 app = Flask(__name__)
 bot = ChatBot(
    'my-chat',
     database_uri='sqlite:///db.sqlite3'
 )
@app.route("/")
def home():
    return render_template("index.html")
@app.route("/get")
def get_bot_response():
    userText = request.args.get('msg')
    return str(bot.get_response(userText))
@app.route("/api/chat/<text>")
def get_bot_api(text):
    res = str(bot.get_response(text))
    return jsonify(res), 200
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8889)

最后看下效果,

页面版:

image.png

页面版风格借鉴了 ChatterBot 官方的代码,有兴趣的同学也可以借鉴下 Django 的实现。

API 版:

image.png

相关文章
|
9月前
|
机器学习/深度学习 人工智能 算法
使用 ChatterBot 库制作一个聊天机器人
使用 ChatterBot 库制作一个聊天机器人
130 0
|
9月前
|
自然语言处理 算法 机器人
做一个基于 chatterbot 的聊天机器人
做一个基于 chatterbot 的聊天机器人
122 0
|
机器学习/深度学习 人工智能 算法
使用 ChatterBot 库制作一个聊天机器人
我们学习一些如何使用 ChatterBot 库在 Python 中创建聊天机器人,该库实现了各种机器学习算法来生成响应对话,还是挺不错的
使用 ChatterBot 库制作一个聊天机器人
|
弹性计算 机器人 关系型数据库
基于chatterbot与wechaty的微信聊天机器人
该项目实现了一款可以自学习的中文聊天机器人,并通过微信提供聊天服务 项目内容: 1、在ECS中部署wechaty微信代理服务 2、在ECS中部署基于chatterbot聊天机器人框架的服务 3、爬取B站up主最新动态
444 0
|
10天前
|
人工智能 自然语言处理 算法
基于DeepSeek的具身智能高校实训解决方案——从DeepSeek+机器人到通用具身智能
本实训方案围绕「多模态输入 -> 感知与理解 -> 行动执行 -> 反馈学习」的闭环过程展开。通过多模态数据的融合(包括听觉、视觉、触觉等),并结合DeepSeek模型和深度学习算法,方案实现了对自然语言指令的理解、物体识别和抓取、路径规划以及任务执行的完整流程。
169 12
|
25天前
|
人工智能 机器人 API
AppFlow:无代码部署Dify作为钉钉智能机器人
本文介绍如何通过计算巢AppFlow完成Dify的无代码部署,并将其配置到钉钉中作为智能机器人使用。首先,在钉钉开放平台创建应用,获取Client ID和Client Secret。接着,创建消息卡片模板并授予应用发送权限。然后,使用AppFlow模板创建连接流,配置Dify鉴权凭证及钉钉连接凭证,完成连接流的发布。最后,在钉钉应用中配置机器人,发布应用版本,实现与Dify应用的对话功能。
AppFlow:无代码部署Dify作为钉钉智能机器人
|
1月前
|
数据采集 监控 数据可视化
优锘科技携手逐际动力,共创数字孪生与具身智能机器人新未来
近日,优锘科技与逐际动力正式宣布达成战略合作,双方将在业务和技术领域展开深度协作,共同探索数字孪生与具身智能机器人的融合应用。这一合作无疑将为智能科技领域注入全新动力,推动行业智能化转型迈向更高水平。
|
2月前
|
机器学习/深度学习 人工智能 算法
人工智能与机器人的结合:智能化世界的未来
人工智能与机器人的结合:智能化世界的未来
354 32
|
2月前
|
人工智能 自然语言处理 机器人
机器人迈向ChatGPT时刻!清华团队首次发现具身智能Scaling Laws
清华大学研究团队在机器人操作领域发现了数据规模定律,通过大规模数据训练,机器人策略的泛化性能显著提升。研究揭示了环境和对象多样性的重要性,提出了高效的數據收集策略,使机器人在新环境中成功率达到约90%。这一发现有望推动机器人技术的发展,实现更广泛的应用。
92 26
|
3月前
|
人工智能 自然语言处理 算法
具身智能高校实训解决方案 ----从AI大模型+机器人到通用具身智能
在具身智能的发展历程中,AI 大模型的出现成为了关键的推动力量。高校作为培养未来科技人才的摇篮,需要紧跟这一前沿趋势,开展具身智能实训课程。通过将 AI 大模型与具备 3D 视觉的机器人相结合,为学生搭建一个实践平台。
291 64

热门文章

最新文章