本节会讲解使用Rasa构建智能助手的基础和展示Rasa工程结构。在这里,你可以不安装任何东西进行完整的测试。你也可以安装Rasa并在命令行中执行。

术语表glossary 中包含了Rasa文档中最常见的一些术语的解释。

  • 1. Create a New Project(新建工程)
  • 2. View Your NLU Training Data(查看NLU训练数据)
  • 3. Define Your Model Configuration(定义模型配置)
  • 4. Write Your First Stories(编写第一个故事)
  • 5. Define a Domain(定义领域)
  • 6. Train a Model(训练模型)
  • 7. Talk to Your Assistant(与智能助手对话)
  • Next Steps(下一步)

在这一节的教程中,你会创建一个简单友好的智能助手。它会向你问好,并且在你伤心时会发送一个有趣的图片。

LanguageModelFeaturizer rasa安装 rass language_Core

 

1.新建工程

第一步,执行下面命令创建一个新的工程:

 

rasa init --no-prompt                                       

 

rasa init命令会创建Rasa工程需要的全部文件,并在初始化样本数据上训练简单的聊天机器人。如果命令没有携带--no-prompt标志,你会遇到一些关于工程设置的提问。

以下文件将会被创建:

 

 

__init__.py

帮助python找到你的功能的空文件

actions.py

该文件中你可以自定义执行动作的代码

config.yml ‘*’

Rasa NLU和Rasa Core模型配置文件

credentials.yml

连接到其他服务的详细配置

data/nlu.md ‘*’

Rasa NLU训练数据

data/stories.md ‘*’

故事编写文件

domain.yml ‘*’

智能助手功能定义领域文件

endpoints.yml

连接到像fb messenger通道的详细配置

models/<timestamp>.tar.g

初始化模型

 

‘*’标记的是非常重要的文件,在该教程里有它们详细的解释。

 

2.查看NLU训练数据

Rasa智能助手第一部分就是NLU模型。NLU是Natural Language Understanding的简称,它的意思就是把用户各种信息转换为结构化数据。要使用Rasa完成该功能,你需要提供训练语料,Rasa能够通过这些语料学习如何理解用户信息。并且Rasa能使用这些语料训练模型。

在rasa init 命令新建工程目录里,运行下面命令查看NLU训练数据:

cat data/nlu.md                                       

以##开头的行来定义意图,一个意图就表示相同含义的一组信息。Rasa的工作就是当用户向助手发送新的未知消息时,它能够正确识别其中的意图。在Training Data Format部分,你可以查看关于数据格式的详细信息。

3.定义模型配置

通过配置文件定义你的模型需要用到的Rasa NLU和Rasa Core的组件。在该例子中,NLU模型将使用supervised_embeddings 管道。你可以通过页面here了解不同的NLU 管道。

通过下面命令查看模型配置文件:

cat config.yml                                       

language 和 pipeline主要确定应该如何构建Rasa NLU模型。policies主要定义Rasa Core模型使用的策略policies。

4.编写你的第一个故事

在这一节,你要教你的助手如何响应你的消息。这被称作对话管理,由你的Rasa Core模型来处理。Rasa Core模型以训练”stories”方式从真实的会话数据中学习。一个故事代表用户和助手之间真实的会话过程。

intents和entities行反应了用户的输入,action names 展示助手如何响应用户输入。

下面时一个对话的例子。用户说hello,助手也回复hello。这就是为什么它看起来像一个故事:

LanguageModelFeaturizer rasa安装 rass language_数据_02

 

你可以在 Stories中查看详细信息。

以 - 开始的行是助手的action(执行动作)。在这个会话中,所有的action是把用户的信息原样返回,像utter_greet。但是,通常action可以做任何事情,包括调用api,与外部交互等。

运行下面的命令可以查看data/stories.md文件下的故事例子:

cat data/stories.md                                       

5.定义领域

接下来我们要定义一个领域。这个领域定义了你的助手所能处理的边界:希望用户输入什么样的信息,能够预测哪些执行动作,如何响应用户,存储什么样的信息。助手的领域存储在文件domain.yml中:

cat domain.yml                                       

那么不同部分的意思是什么?

intents

你希望用户说的

actions

助手能做的和说的

templates

助手说的话术模板

 

这些是如何组合的呢?Rasa Core的工作就是在会话的每一步选择一个正确的action去执行。在该例子中,我们的actions只是简单的发送一个消息给用户。这些简单的话语执行的就是domain中以utter_开头的actions。助手将从templates中选择一个模板响应消息。参考 Custom Actions创建自定义action。

6.训练模型

一旦我们添加了新的NLU或Core数据,或者更新领域或配置,就要在样本故事和NLU数据上重新训练神经网络。可以通过使用下面命令重新训练神经网络。该命令将调用Rasa 的Core和NLU训练功能并且把训练好的模型存储到models/文件夹下。该命令将自动重新训练Rasa的数据或配置改变部分的模型。

LanguageModelFeaturizer rasa安装 rass language_自定义_03

 

rasa train命令将查找NLU和CORE的数据并训练组合模型。

7.使用你的助手

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

下一步就是测试它!如果你在本机学习该教程,开始通过下面命令启动和使用你的助手吧:

LanguageModelFeaturizer rasa安装 rass language_数据_04

 

 

下一步

现在你已经成功构建了一个Rasa机器人,是时候学习一些Rasa更高级的功能。

  1. 了解如何使用forms实现业务逻辑
  2. 了解如何使用custom actions(自定义动作)集成其他API
  3. 了解如何把你的机器人链接到不同的messaging apps(消息应用)
  4. 了解如何在你的NLU pipeline中使用自定义components (组件)
  5. 阅读有关自定义和内置entities(实体)

你可以使用Rasa X收集更多会话来改进你的助手:

LanguageModelFeaturizer rasa安装 rass language_自定义_05