对话机器人(二)——RASA概述与安装

注:RASA版本为3.1

1.RASA简介

RASA 是构建对话机器人的开源机器学习框架。

  • NLU:确定意图,捕获关键上下文信息。
  • CORE:提供多轮对话管理机制,自动学习上下文与当前意图的关联性。

2. RASA系统架构

在这里插入图片描述

  • RASA开源体系结构
    • NLU:意图分类、实体提取、响应检索。以管道的方式处理用户对话。
    • 对话管理:根据上下文决定对话中的下一个动作。
  • 代理:接收用户输入消息,返回RASA系统的回答。连接NLU和DM,得到Action,调用Action得到回答,保存对话数据到数据存储。
  • 跟踪存储:对话的存储单元,保存用户和机器人的对话。(支持自定义存储)
    • postgresql,SQLite,Oracle,Redis,MongoDB,DynamoDB
  • 事件代理:机器人可以发布一个消息给其他服务来处理这些消息,也可以转发RASA服务的消息到其他服务。
    • RabbitMQ,Kafka,SQL
  • 锁:ID产生器。当RASA时一个集群部署时,客户端发送RASA服务端的消息每次不一定会寻址到同一个服务器,需要一个全局的会话ID,在消息处于活动状态时锁定会话,保证消息的顺序处理。
  • 文件系统:无差别的文件存储服务,训练好的模型可以存储在不同的位置。
    • 磁盘加载、服务器加载、云存储加载
  • 行动服务
    • 用户可以定义任何一种Action连接到 Action Server上,通过训练学习,RASA可以将policy路由到这个Action上,使机器人热插拔一个能力成为可能。

3. RASA消息处理过程

在这里插入图片描述

  1. 消息传入后,被Interpreter(解释器)接收。

  2. interpreter接收消息后,

    • 将消息转换成字典(tokenizer)

    • 转化成特征(featurizer)

    • 提取命名实体(Extractors)

    • 识别意图(Classifier)

      这部分叫做自然语言理解(NLU)。interpreter将输出包括实体意图,和对话的特征一起传给Tracker。

  3. Tracker:用来追踪记录对话状态的对象,将当前状态(特征,意图,实体)以及历史状态信息传给Policy。

  4. Policy(策略):将当前状态以及历史状态一并特征化,并传入预测模型(Policy),预测模型预测出下一个动作(Action)。

  5. Action完成实际动作,并将动作结果通知到tracker,成为历史状态。

  6. Action将结果返回给用户。

4. RASA项目的基本流程

  • 初始化项目
  • 准备NLU训练数据
  • 配置NLU模型
  • 准备故事(story)数据
  • 定义领域(domain)
  • 配置Rasa Core模型
  • 训练模型
  • 测试机器人
a. 常用命令
命令简介
rasa init使用示例训练数据,操作和配置文件创建一个新项目。位于空目录下运行即可
rasa train使用NLU数据和故事来训练模型,并将训练后的模型保存在中./models。
rasa interactive开始一个交互式学习会话,以通过聊天创建新的训练数据。
rasa shell加载经过训练的模型,并允许在命令行上与助手交谈。
rasa run使用训练有素的模型启动Rasa服务器。有关详细信息,请参见配置HTTP API文档。
rasa run actions使用Rasa SDK启动动作服务器。
rasa visualize把stories可视化,生成一个html文件,本地可以打开。
rasa test使用测试NLU数据和故事测试经过训练的Rasa模型。
rasa data split nlu根据指定的百分比对NLU数据进行拆分。
rasa data convert nlu在不同格式之间转换NLU训练数据。
rasa export将对话从跟踪商店存储到事件代理。
rasa x在本地启动RasaX。
rasa -h显示所有可用命令。
b. 项目结构
.
├── actions
│   ├── __init__.py
│   └── actions.py
├── configs
│   ├── domain.yml
│   ├── config.yml
│   ├── credentials.yml
│   └── endpoints.yml
├── data
│   ├── nlu.yml
│   └── stories.yml
├── models
│   └── <timestamp>.tar.gz
└── tests
   └── test_stories.yml

4. 安装RASA

conda create -n rasa3py37 python=3.7
source activate rasa3py37
# 使用清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 先安装指定版本的TensorFlow

pip install tensorflow-text==2.7 -i https://pypi.doubanio.com/simple
pip install tensorflow==2.7 -i https://pypi.doubanio.com/simple
# 安装rasa
pip install rasa -i http://mirrors.aliyun.com/pypi/simple/   --trusted-host mirrors.aliyun.com    --use-deprecated=legacy-resolver

在这里插入图片描述

若出现包冲突,则pip uninstall 并装对应版本的包

# 安装成功后,初始化,自动生成rasa项目所需文件
rasa init --no-prompt
# 测试
rasa shell

安装成功会在指定目录下生成初始化文件。

在这里插入图片描述

参考文献:
[1] 孔小泉,王冠.Rasa实战:构建开源对话机器人[M].电子工业出版社.2022:201.
[2] rasa的安装:https://zhuanlan.zhihu.com/p/439666645
[3] (二)RASA开源引擎介绍 https://zhuanlan.zhihu.com/p/331806270

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值