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

注:RASA版本为3.1

1.RASA简介

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

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

2. RASA系统架构

对话机器人(二)——RASA概述与安装_第1张图片

  • 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消息处理过程

对话机器人(二)——RASA概述与安装_第2张图片

  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
│   └── .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

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

对话机器人(二)——RASA概述与安装_第3张图片

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

你可能感兴趣的:(对话机器人,人工智能,自然语言处理,深度学习)