Rasa聊天机器人教程(译)(1)

简介

rasa是一个开源的对话机器人。主要是针对任务型对话机器人,代码开源:
教程地址:https://rasa.com/docs/rasa/
github地址:https://github.com/RasaHQ/rasa

一个例子

教程提供了一个入门的交互式例子了解rasa的基本概念。

创建助手

这个例子创建一个帮助用户订阅新闻的聊天助手,执行以下的步骤了解一个简单的助手是如何被创建的:

  1. NLU数据
    不管用户的表达方式如何,为了让机器理解用户说的话,必须提供一些机器可以学习的消息样本。将这些样本按照消息的意图进行分组。在下面的这个例子中,添加了 “greet"的意图,这个意图包括的消息有:“hi",“Hey”,"good morning"等。
nlu:
- intent: great
	examples:|
		- Hi
		-  Hey!
		- Hallo
		- Good day
		- Good morning
-  intent: subscribe
	example:|
		- I want to get the newsletter
		- can you send me the newsletter?
		- can you sign me up for the newsletter?

- intent: inform
  example:|
  	-My email is  example@example.com
  	-random@example.com
  	- please send it to anything@example.com

意图和它们的例子用来作为机器人语言理解模块的训练数据。

  1. Response
    通过语言理解部分,机器理解了用户表达的用途。之后它需要回复信息给用户。下面是回复的一些例子,如果一个回复对应多个文本,这些文本会随机的被选作为回复内容。
responses:
   utter_greet:
       - text: |
           Hello! How can I help you?
       - text: |
           Hi!
   utter_ask_email:
       - text: |
           What is your email address?
   utter_subscribed:
       - text: |
           Check your inbox at {email} in order to finish subscribing to the newsletter!
       - text: |
           You're all set! Check your inbox at {email} to confirm your subscription.

stories

stories是对话的样例,用来训练机器人基于用户的对话内容做出相对应的回复。它的格式是用户的意图,紧接着是机器的回复或者应该采取的行动。
第一个故事应该是一个机器人帮助用户完成目标的直接过程。然后,可以添加用户不提供信息或者转向其他主题的故事。在下面的例子中,添加了一个用户与机器人交换问候,用户提出订阅需求然后机器请求用户信息的故事。

stories:
 - story: greet and subscribe
   steps:
   - intent: greet
   - action: utter_greet
   - intent: subscribe
   - action: newsletter_form
   - active_loop: newsletter_form

Forms

在很多情况下机器需要收集用户的信息,例如用户订阅新闻,需要知道用户的邮箱。在Rasa里面,收集信息使用表格来完成。下面的例子展示了一个收集用户邮箱的表格。

slots:
  email:
    type: text
    mappings:
    - type: from_text
      conditions:
      - active_loop: newsletter_form
        requested_slot: email
forms:
  newsletter_form:
    required_slots:
    - email

Rules

Rules定义了一些固定的规则,对于某些意图,使用规则来定义机器对这些意图的固定反应。例如下面的例子中,第一个规则定义了当识别用户是subscribe的意图时,采用启动newsletter_form的行为。第二个规则只有在newsletter_form启动之后才会开启,当active loop状态不在处于激活时,表格就算完成了。

rules:
 - rule: activate subscribe form
   steps:
   - intent: subscribe
   - action: newsletter_form
   - active_loop: newsletter_form

 - rule: submit form
   condition:
   - active_loop: newsletter_form
   steps:
   - action: newsletter_form
   - active_loop: null
   - action: utter_subscribed

训练并和助手对话

有了上面的数据,就可以对模型进行训练了。原文中提供了训练的交换见面,通过按下训练按钮就可以训练模型,训练完以后还可以直接对话。

可以按照教程提供的例子,修改代码,适应一个新的任务。

你已经构建了助手,下一步是什么?

训练完模型之后,可以通过对话的方式去验证机器人是否满足自己的要求。但是对于复杂的任务来说,手工测试效率低下。rase 提供了自动化测试的方法,构建用于测试的stories,然后执行rasa test就可以自动化测试。测试的stories长下面这样:

stories:
- story: test for greet and subscribe
  steps:
  - user: |
     Hello there
    intent: greet
  - action: utter_greet
  - user: |
     I want to subscribe to the newsletter. My email is example@email.com
    intent: subscribe
  - action:  utter_subscribed

总结

正如程序语言的hello world一样,这部分介绍了rasa机器人的一个hello world程序。了解使用rasa需要提供的数据和部件:用于训练语言理解模块的NLU数据,用于机器对用户意图产生对应回复的Response数据,用于对话流程的Stories数据,收集用户信息的部件以及机器人必须遵守的Rules设置。最后,还介绍了自动化测试的rasa test命令。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值