Rasa 入门教程

本文主要介绍 Rasa 构建助手的基础知识和 Rasa 项目的目录结构。在本教程中,您将构建一个简单友好的助手,该助手将询问您的工作状况,并在您难过的时候向您发送有趣的图片为您加油。

Rasa 入门教程_第1张图片
rasa_tutorial_01.png

本文的目录结构:

  1. 创建一个新项目
  2. 查看 NLU 训练数据
  3. 定义模型配置
  4. 定义 Stories
  5. 定义 Domain
  6. 训练模型
  7. 对话助手

1. 创建一个新项目

第一步是通过以下命令,创建一个新的 Rasa 项目。

rasa init --no-prompt

该命令将创建 Rasa 项目所需要的所有文件,并在一些示例数据上训练一个简单的 bot,如果你不使用 --no-prompt,初始化时会询问你一些关于如何设置项目的问题。

将创建以下文件:(标有星号*的文件十分重要)

文件名 说明
__init__.py 一个空文件,帮助 python 查找你的 actions
actions.py 自定义自己的 actions 的地方
config.yml '*' NLU 和 Core 模型的配置
credentials.yml 连接其他服务的详细信息
data/nlu.md '*' NLU 的训练数据
data/stories.md '*' 场景 stories
domain.yml '*' 助手的域名
endpoints.yml 连接 Facebook Messager 等第三方服务的详细信息
models/.tar.gz 初始化模型

2. 查看 NLU 训练数据

Rasa 助手的第一部分是 NLU 模型,NLU 是自然语言理解,是用来将用户的消息转换为结构化数据。为了让 Rasa 能够做到这一点,你需要提供训练数据,这些训练数据显示 Rasa 助手如何理解用户信息,然后通过这些数据来训练模型。

cat data/nlu.md

以 ## 开头的行用来定义你的意图 intents,它们是具有相同含义的消息组。当你向助手发送消息时,Rasa 将预测正确的意图。你可以在Rasa 入门教程 NLU 系列(二)中查看更详细的信息。

## intent:greet
- hey
- hello
- hi
- good morning
- good evening
- hey there

## intent:goodbye
- bye
- goodbye
- see you around
- see you later

## intent:bot_challenge
- are you a bot?
- are you a human?
- am I talking to a bot?
- am I talking to a human?

3. 定义模型配置

配置文件中定义了 NLU 模型和 Core 模型的组件,本示例中的 NLU 模型将使用 supervised_embeddings 管道,你可以在Rasa 入门教程 NLU 系列(三)了解不同的 NLU 管道。

cat config.yml

language 和 pipeline 定义 NLU 模型应该如何构建,policies 定义 Core 模型将使用什么策略。

# Configuration for Rasa NLU.
# https://rasa.com/docs/rasa/nlu/components/
language: en
pipeline: supervised_embeddings

# Configuration for Rasa Core.
# https://rasa.com/docs/rasa/core/policies/
policies:
  - name: MemoizationPolicy
  - name: KerasPolicy
  - name: MappingPolicy

4. 定义 Stories

在此阶段,你将教你的助手如何回复你的消息,这被称为:对话管理,由你的 Core 模型进行处理。

Core 模型以训练 Stories 的形式从真实的对话数据中学习,Story 是用户和助手之间的真实对话,intents 和 entities 的所在行反映了用户的输入,action 名称所在为助手做出的响应内容。

下面是一个简单的对话示例,用户打招呼,助手做出响应,这就是一个 story:

## story1
* greet
    - utter_greet

你可以在这里查看 Stories 的完整信息。

以符号 - 开头的行是助手要执行的操作,在教程中,所有的动作都是发送回复用户的消息,例如:utter_greet,但是一般而言,一个动作可以执行任何操作,包括调用 API 和与外界交互。

运行一下命令查看 data/stories.md 文件中的示例 Stories:

cat data/stories.md

5. 定义 Domain

接下来我们需要定一个 Domain,它定义了你的助手所生活的世界:应该期望得到什么用户输入,应该能够预测什么 actions,如何响应以及存储什么信息。助手的 Domain 保存在 domain.yml 文件中。

cat domain.yml

Domain 文件中不同部分对应的说明如下:

名称 说明
intents 你希望用户说的话
actions 你的助手可以说的话
templates 你的助手的说话模板

如何搭配在一起? Rasa Core 的工作是在对话的每个步骤中选择正确的 action 去执行。在这种情况下,我们的 actions 只会向用户发送一条消息,这些简单的发送动作是在 Domain 文件中以 actions 为行,utter_开头。助手可以根据 templates 部分中的模板响应消息。若要自定义构建除了发送消息之外的 actions,请参考自定义 actions。

6. 训练模型

每当我们添加新的 NLU 或 Core 数据时,又或者更新 Domain 配置时,我们都需要根据示例 Stories 和 NLU 数据重新训练神经网络。为此,请运行以下命令。该命令将调用 Rasa Core 和 NLU 训练函数,并将训练后的模型存储到 models/ 目录下。该命令将自动重新训练发生改变的数据部分或者配置部分。

rasa train
echo "Finished training."

rasa train 命令将同时查找 NLU 和 Core 数据,并将训练成一个组合模型。

7. 对话助手

恭喜你!你刚刚构建了一个完全由机器学习驱动的助手。

下一步就是尝试一下!如果你在本地计算机上遵循本教程,请运行以下命令开始与您的助手交谈:

rasa shell

作者:关于我

备注:转载请注明出处。

如发现错误,欢迎留言指正。

你可能感兴趣的:(Rasa 入门教程)