当前位置: 首页 > news >正文

dialogbot:开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验。

dialogbot:开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,支持网络检索问答、领域知识问答、任务引导问答和闲聊问答,为您提供全方位的对话交互体验。

人机对话系统一直是AI的重要方向,图灵测试以对话检测机器是否拥有高度的智能。如何构建人机对话系统或者对话机器人呢?

  • 对话系统经过三代的演变:

    1. 规则对话系统:垂直领域可以利用模板匹配方法的匹配问句和相应的答案。优点是内部逻辑透明,易于分析调试,缺点是高度依赖专家干预,
      缺少灵活性和可可拓展性。
    2. 统计对话系统:基于部分可见马尔科夫决策过程的统计对话系统,先对问句进行贝叶斯推断,维护每轮对话状态,再跟进对话状态进行对话策略的选择,
      从而生成自然语言回复。基本形成现代的对话系统框架,它避免了对专家的高度依赖,缺点是模型难以维护,可拓展性比较受限。
    3. 深度对话系统:基本延续了统计对话系统的框架,但各个模型采用深度网络模型。利用了深度模型强大的表征能力,语言分类和生成能力大幅提高,
      缺点是需要大量标注数据才能有效训练模型。
  • 对话系统分为三类:

    • 问答型对话:多是一问一答,用户提问,系统通过对问题解析和查找知识库返回正确答案,如搜索。
    • 任务型对话:指由任务驱动的多轮对话,机器需要通过理解、主动询问、澄清等方式确定用户目标,然后查找知识库返回结果,完成用户需求。
      如:机器人售电影票。
    • 聊天型对话:目标是产生有趣且富有信息量的自然答复使人机对话持续下去,如小度音响。

1.问答型对话(Search Dialogue Bot)

1.1 本地检索问答

计算用户问句与问答库中问句的相似度,选择最相似的问句,给出其对应的答复。

句子相似度计算包括以下方法:

  • TFIDF
  • BM25
  • OneHot
  • Query Vector

1.2 网络检索问答

对百度、Bing的搜索结果摘要进行答案的检索

  • 百度搜索,包括百度知识图谱、百度诗词、百度万年历、百度计算器、百度知道
  • 微软Bing搜索,包括bing知识图谱、bing网典

1.3 任务型对话(Task Oriented Dialogue Bot)

  • End to End Memory Networks(memn2n)
  • BABi dataset

1.4 聊天型对话(Generative Dialogue Bot)

  • GPT2 Model
  • Sequence To Sequence Model(seq2seq)
  • Taobao dataset

2.Demo展示

Official Demo: https://www.mulanai.com/product/dialogbot/

The project is based on transformers 4.4.2+, torch 1.6.0+ and Python 3.6+.
Then, simply do:

pip3 install torch # conda install pytorch
pip3 install -U dialogbot

or

pip3 install torch # conda install pytorch
git clone https://github.com/shibing624/dialogbot.git
cd dialogbot
python3 setup.py install

3.应用场景展示

3.1 问答型对话(Search Bot)

example: examples/bot_demo.py

from dialogbot import Botbot = Bot()
response = bot.answer('姚明多高呀?')
print(response)

output:

query: "姚明多高呀?"
answer: "226cm"

3.2 任务型对话(Task Bot)

example: examples/taskbot_demo.py

3.3 聊天型对话(Generative Bot)

3.3.1 GPT2模型使用

基于GPT2生成模型训练的聊天型对话模型。

模型已经 release 到huggingface models:shibing624/gpt2-dialogbot-base-chinese

example: examples/genbot_demo.py

from dialogbot import GPTBot
bot = GPTBot()
r = bot.answer('亲 你吃了吗?', use_history=False)
print('gpt2', r)

output:

query: "亲 吃了吗?"
answer: "吃了"

3.3.2 GPT2模型fine-tune

  • 数据预处理
    在项目根目录下创建data文件夹,将原始训练语料命名为train.txt,存放在该目录下。train.txt的格式如下,每段闲聊之间间隔一行,格式如下:
真想找你一起去看电影
突然很想你
我也很想你想看你的美照
亲我一口就给你看
我亲两口
讨厌人家拿小拳拳捶你胸口今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着

运行preprocess.py,对data/train.txt对话语料进行tokenize,然后进行序列化保存到data/train.pkl。train.pkl中序列化的对象的类型为List[List],记录对话列表中,每个对话包含的token。

cd dialogbot/gpt/
python preprocess.py --train_path data/train.txt --save_path data/train.pkl
  • 训练模型
    运行train.py,使用预处理后的数据,对模型进行自回归训练,模型保存在根目录下的model文件夹中。

在训练时,可以通过指定patience参数进行early stop。当patience=n时,若连续n个epoch,模型在验证集上的loss均没有下降,则进行early stop,停止训练。当patience=0时,不进行early stop。

代码中默认关闭了early stop,因为在实践中,early stop得到的模型的生成效果不一定会更好。

python train.py --epochs 40 --batch_size 8 --device 0,1 --train_path data/train.pkl

更多的训练参数介绍,可直接看train.py中的set_args()函数中的参数说明

3.3.3 预测模型(人机交互)

运行interact.py,使用训练好的模型,进行人机交互,输入q结束对话之后,聊天记录将保存到sample.txt文件中。

python interact.py --no_cuda --model_dir path_to_your_model

执行interact.py时,可以尝试通过调整topk、topp、repetition_penalty、max_history_len等参数,调整生成的效果。更多的参数介绍,可直接看interact.py的set_args()函数中的参数说明
如果要使用GPU进行生成,则不要调用–no_cuda参数,并且通过–device gpu_id来指定使用哪块GPU。

  • 问答示例
  • sample1
  user :在干嘛
chatbot:睡觉user :这么早就睡觉啦
chatbot:嗯啊你也早点睡啊user :我再玩一会儿手机
chatbot:早点休息晚安user :拜拜啦
chatbot:晚安晚安user :多喝热水
chatbot:哈哈哈user :多喝热水
chatbot:好的咯
  • sample2
  user :在吗
chatbot:在user :我不开心
chatbot:怎么啦user :最近好累啊
chatbot:是挺累的user :作业好多啊
chatbot:还好还好user :我觉得我快要挂科了
chatbot:我也是啊,但是我觉得我快熬出头了user :不说了,我还有好多作业没写
chatbot:我也是啊好多啊user :那先这样,下次再聊,再见了
chatbot:好哒

4.数据集

  • 闲聊语料分享
    |中文闲聊语料 | 数据集地址 |语料描述|
    |---------|--------|--------|
    |常见中文闲聊|chinese_chatbot_corpus|包含小黄鸡语料、豆瓣语料、电视剧对白语料、贴吧论坛回帖语料、微博语料、PTT八卦语料、青云语料等|
    |50w中文闲聊语料 | 百度网盘【提取码:4g5e】 或 GoogleDrive |包含50w个多轮对话的原始语料、预处理数据|
    |100w中文闲聊语料 | 百度网盘【提取码:s908】 或 GoogleDrive|包含100w个多轮对话的原始语料、预处理数据|

中文闲聊语料的内容样例如下:

谢谢你所做的一切
你开心就好
开心
嗯因为你的心里只有学习
某某某,还有你
这个某某某用的好你们宿舍都是这么厉害的人吗
眼睛特别搞笑这土也不好捏但就是觉得挺可爱
特别可爱啊今天好点了吗?
一天比一天严重
吃药不管用,去打一针。别拖着
  • 模型分享
模型共享地址模型描述
model_epoch40_50wshibing624/gpt2-dialogbot-base-chinese 或 百度网盘(提取码:taqh) 或 GoogleDrive使用50w多轮对话语料训练了40个epoch,loss降到2.0左右。
  • Reference
  • Wen T H, Vandyke D, Mrksic N, et al. A Network-based End-to-End Trainable Task-oriented Dialogue System[J]. 2016.
  • How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generation
  • A. Bordes, Y. Boureau, J. Weston. Learning End-to-End Goal-Oriented Dialog 2016
  • Zhao T, Eskenazi M. Towards End-to-End Learning for Dialog State Tracking and Management using Deep Reinforcement Learning [J]. arXiv preprint arXiv:1606.02560, 2016.
  • Kulkarni T D, Narasimhan K R, Saeedi A, et al. Hierarchical deep reinforcement learning: Integrating temporal abstraction and intrinsic motivation [J]. arXiv preprint arXiv:1604.06057, 2016.
  • BBQ-Networks: Efficient Exploration in Deep Reinforcement Learning for Task-Oriented Dialogue Systems
  • Deep Reinforcement Learning with Double Q-Learning
  • Deep Attention Recurrent Q-Network
  • SimpleDS: A Simple Deep Reinforcement Learning Dialogue System
  • Deep Reinforcement Learning with a Natural Language Action Space
  • Integrating User and Agent Models: A Deep Task-Oriented Dialogue System
  • The Curious Case of Neural Text Degeneration
  • DialoGPT: Large-Scale Generative Pre-training for Conversational Response Generation
  • vyraun/chatbot-MemN2N-tensorflow
  • huggingface/transformers
  • Morizeyao/GPT2-Chinese
  • yangjianxin1/GPT2-chitchat

参考链接:https://github.com/shibing624/dialogbot

如果github进入不了也可进入 https://download.csdn.net/download/sinat_39620217/88205596 免费下载相关资料

相关文章:

dialogbot:开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验。

dialogbot:开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,支持网络检索问答、领域知识问答、任务引导问答和闲聊问答,为您提供全方位的对话交互体验。 人机对话系统一直是AI的重要方向&#xf…...

TCP服务器—实现数据通信

目录 前言 1.接口介绍 2.编写服务器 3.编写客户端 4.编译链接 5.测试 6.总结 前言 今天我们要介绍的是使用TCP协议实现数据通信,相比于之前写的UDP服务器实现数据信,在主体逻辑上并没有差别。客户端向服务器发送信息,服务器接受信息并回…...

基于SpringBoot实现MySQL备份与还原

基于SpringBoot实现MySQL备份与还原,需求是在页面上对所有的平台数据执行备份和恢复操作,那么就需要使用代码去调用MySQL备份和恢复的指令,下面是具体实现步骤; MySQL备份表设计 CREATE TABLE IF NOT EXISTS mysql_backups (id …...

【VUE 监听用户滑动】

监听滑动方法 一. touchstart、touchmove、touchend二.v-touch三. 自定义指令 一. touchstart、touchmove、touchend 在 Vue 中监听用户往哪个方向滑动可以通过添加事件监听器,然后在事件回调函数中判断滑动方向。常用的事件监听器有touchstart、touchmove、touche…...

通义大模型:打造更智能、更灵活的自然语言处理技术

大家好,今天我想向大家介绍一款备受瞩目的自然语言处理技术——通义大模型。作为一种基于深度学习的人工智能技术,通义大模型能够模拟人类的思维方式,实现更智能、更灵活的自然语言处理,为我们的生活和工作带来了极大的便利。 在…...

Go 流程控制

if语句使用 package mainimport "fmt"func main() {score : 700if score 700 {fmt.Println("清华")}//if支持一个初始化语句 初始化语句和条件判断用;分割if a : 700; a 700 {fmt.Println("清华")}}清华 清华if_else使用 package mainimpor…...

Python opennsfw/opennsfw2 图片/视频 鉴黄 笔记

nsfw&#xff08; Not Suitable for Work&#xff09;直接翻译就是 工作的时候不适合看&#xff0c;真文雅 nsfw效果&#xff0c;注意底部的分数 大体流程&#xff0c;输入图片/视频&#xff0c;输出0-1之间的数字&#xff0c;一般情况下&#xff0c;Scores < 0.2 认为是非…...

四、Linux中cd、pwd以及相对/绝对路径和特殊路径符

1、cd命令&#xff1a; cd命令可以切换当前工作目录&#xff0c;基础语法是&#xff1a; cd [linux路径] &#xff08;1&#xff09;、打开Linux的命令提示行&#xff0c;当前工作目录是home&#xff0c;输入“cd /”&#xff0c;可以切换到根目录下&#xff0c;在根目录下输…...

第八章 CUDA内存应用与性能优化篇(上篇)

cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…...

chrome浏览器改为黑色背景

chrome浏览器改为黑色背景 https://blog.csdn.net/yuchen_123456/article/details/127487278 不一样的地方&#xff1a;...

【AI】《动手学-深度学习-PyTorch版》笔记(十七):卷积神经网络入门

AI学习目录汇总 1、从全链接层到卷积 1.1 卷积 我们在前面学习的多层感知机中,已经认识了全链接层,缺点很明显,在稍微大点的网络模型中,参数成指数级别增长。参数量很快就达到数十亿,这样的量级几乎无法计算。为此科学家们想出一个减少参数的方法:卷积。 从全链接层到…...

element-ui table表格,根据缩放自适应

安装依赖 npm install af-table-columnmain.js 中引入依赖&#xff0c; import Vue from vue import ElementUI from element-ui //需要按需引入&#xff0c;先引入vue并引入element-ui import AFTableColumn from af-table-column Vue.use(AFTableColumn)demo样式&#xff1…...

【electron】electron安装过慢和打包报错:Unable to load file:

文章目录 一、安装过慢问题:二、打包报错&#xff1a;Unable to load file: 一、安装过慢问题: 一直处于安装过程 【解决】 #修改npm的配置文件 npm config edit#添加配置 electron_mirrorhttps://cdn.npm.taobao.org/dist/electron/二、打包报错&#xff1a;Unable to load…...

微服务部署中的动态扩缩容和故障迁移实践经验!快来看看!

随着微服务架构的快速普及&#xff0c;越来越多的组织开始将传统的单体应用转变为分布式的微服务系统。在这种架构下&#xff0c;动态扩缩容和故障迁移变得尤为重要&#xff0c;因为它们能够帮助我们应对不断变化的负载和故障情况。本文将详细介绍动态扩缩容和故障迁移的概念&a…...

代码随想录第四十五天

代码随想录第四十五天 Leetcode 70. 爬楼梯Leetcode 322. 零钱兑换Leetcode 279. 完全平方数 Leetcode 70. 爬楼梯 题目链接: 爬楼梯 自己的思路:之前是用斐波那契做的&#xff0c;但是现在学了完全背包&#xff0c;可以将m2拓展的更大一点&#xff0c;我们可以将楼顶n设为背包…...

Vue Baidu Map--自定义点图标bm-marker

自定义点图标 将准备好的图标放到项目中 使用import引入&#xff0c; 并在data中进行声明 <script> import mapIconRed from ./vue-baidu-map/img/marker_red_sprite.png export default {data() {return {mapIconRed,}}, } </script>在<bm-marker>中加入参…...

ZooKeeper的基本概念

集群角色 通常在分布式系统中&#xff0c;构成一个集群的每一台机器都有自己的角色&#xff0c;最典型的集群模式就是Master/Slave模式(主备模式)。在这种模式中&#xff0c;我们把能够处理所有写操作的机器称为Master机器&#xff0c;把所有通过异步复制方式获取最新数据&…...

SpringBoot复习:(51)默认情况下DataSource是怎么创建出来的,是什么类型的?

DataSource是通过DataSourceAutoConfiguration创建的&#xff0c;这个类代码如下&#xff1a; 可以看到DataSourceAutoConfiguration有个静态内部类PooledDataSourceConfiguration,在这个类上有个Import注解&#xff0c;导入了DataSourceConfiguration.Hikari这个类&#xff0…...

Python+Selenium自动化测试环境搭建步骤(selenium环境搭建)

一、自动化简介 1.自动化测试概念&#xff1a; 是把以人为驱动的测试转化为机器执行的一种过程&#xff0c;它是一种以程序测试程序的过程 2.自动化测试分类&#xff1a; 一般IT上所说的自动化测试是指功能自动化测试&#xff0c;通过编码的方式用一段程序来测试一个软件的功…...

实现简单纯Canvas文本输入框,新手适用

文章目录 概要效果技术细节代码 概要 Canvas上面提供输入&#xff1a; 一、最简单可能是用dom渲染一个input,覆盖在图形上面进行文本编辑&#xff0c;编辑完再把内容更新到图形.这样简单&#xff0c;但是缺点也明显&#xff0c;就是它不是真正绘制在canvas上面&#xff0c;没…...

保姆级教程:手把手教你用Python搭建HTTP服务器,为安信可BL602模组OTA升级铺路

从零构建Python HTTP服务器&#xff1a;物联网开发者的OTA升级基石 在物联网设备开发中&#xff0c;固件升级(OTA)是产品生命周期管理的关键环节。想象一下这样的场景&#xff1a;当您需要为部署在数百公里外的设备更新功能时&#xff0c;无需物理接触设备&#xff0c;只需通过…...

告别实车测试!手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试环境(附避坑指南)

新能源汽车OBC/DCDC控制器HIL测试环境搭建实战指南 在新能源汽车三电系统开发中&#xff0c;车载充电机(OBC)和DC/DC变换器的功能验证一直是工程师面临的挑战。传统实车测试不仅成本高昂&#xff0c;而且难以覆盖所有边界条件。硬件在环(HIL)测试技术通过将真实控制器接入虚拟车…...

线下技术沙龙:AI Coding深度实践LLM应用分享

活动简介 我们正在经历一场软件开发 范式的变革。从Copilot的智能补全&#xff0c;到Cursor的对话式编程&#xff0c;再到Agent自主完成复杂任务——代码的编写方式&#xff0c;正在被重新定义。 但这场变革的核心&#xff0c;不是工具本身&#xff0c;而是使用工具的人。 本…...

产品工程师(Product Engineer)角色为何在创业公司成为最稀缺的竞争力?

在科技招聘市场&#xff0c;一位能力顶尖的工程师投递了上百份简历&#xff0c;却始终卡在“技术面试过关、产品讨论却露怯”的阶段。团队明明需要能快速交付价值的人&#xff0c;可最终录用的往往是那些“既懂代码又能自己做产品决策”的少数派。大多数候选人把精力全放在刷 L…...

解析日本工程塑料厂家代理新日铁住金产品的核心价值与

在众多日本工程塑料供应商中&#xff0c;新日铁住金凭借其在特种工程塑料领域的技术积累和稳定品质&#xff0c;成为众多制造企业的优选合作伙伴。对于寻求高性价比、稳定供应的塑胶制品厂、精密注塑厂及汽车零部件厂商而言&#xff0c;选择专业代理商是平衡品质与成本的关键。…...

NovelReader插件化扩展指南:如何添加新的翻页效果

NovelReader插件化扩展指南&#xff1a;如何添加新的翻页效果 【免费下载链接】NovelReader 仿照"任阅"的追书、看书的小说阅读器。重写"任阅"的代码&#xff0c;优化代码逻辑和代码结构&#xff0c;降低内存使用率。重写小说阅读器&#xff0c;支持网络阅…...

15天学会AI应用开发(一)搭建AI大模型应用开发环境

AI大模型时代来了&#xff0c;程序员们纷纷入坑AI应用开发&#xff0c;可是苦于AI教程良莠不齐&#xff0c;往往花费了大量时间精力和金钱&#xff0c;却仍然过其门而不入。 有鉴于此&#xff0c;博主开始连载AI应用开发教程《15天学会AI应用开发》&#xff0c;帮助大家快速掌…...

拓璞数控港股上市:市值142亿港元 年营收5.8亿,净利163万

雷递网 雷建平 5月20日上海拓璞数控科技股份有限公司&#xff08;简称&#xff1a;“拓璞数控”&#xff0c;股票代码&#xff1a;“07688”&#xff09;今日在港交所上市。拓璞数控此次发售6533万股&#xff0c;发售价26.39港元&#xff0c;募资总额为17.24亿港元&#xff1b;…...

告别枯燥理论!用Quartus II和LPM_ROM手把手带你玩转FPGA正弦波音乐盒

用FPGA演奏音乐&#xff1a;基于Quartus II的数字音乐盒实战指南 当技术遇上艺术&#xff0c;冰冷的电路也能唱出温暖的旋律。今天我们将打破传统FPGA实验的刻板印象&#xff0c;用一块开发板和几行代码&#xff0c;打造一个会唱歌的数字音乐盒。这不是普通的波形发生器&#x…...

Linux设备模型核心数据结构解析:从kobject到sysfs的驱动开发指南

1. 项目概述&#xff1a;从“黑盒”到“白盒”的设备认知之旅在Linux的世界里&#xff0c;我们每天都在和各种设备打交道&#xff1a;一块硬盘、一张网卡、一个USB摄像头。对于普通用户或应用开发者而言&#xff0c;这些设备可能只是/dev/sda、eth0这样的一个文件节点或接口名。…...