Rasa课程、Rasa培训、Rasa面试系列之: Rasa 3.x Stories
Stories
故事是一种训练数据,用于训练助理的对话管理模式。故事可以用来训练模型,使其能够推广到看不见的对话路径。
Format
故事是用户和人工智能助手之间对话的一种表现形式,转换成特定的格式,其中用户输入被表示为意图(以及必要的实体),而助手的响应和动作被表示为动作名称。
User Messages
在撰写故事时,您不必处理用户发送的消息的特定内容。相反,您可以利用NLU管道的输出,它允许您仅使用意图和实体的组合来引用用户可以发送的所有可能的消息,以表示相同的内容。
在此处包含实体也很重要,因为策略学习基于意图和实体的组合预测下一个操作(但是,您可以使用use_entities属性更改 )。
Actions
机器人执行的所有动作(包括响应)都列在动作action 键 的故事中。
您可以将域中的响应列为故事中的响应,从而将其用作操作。类似地,您可以通过在域中的操作actions 列表中包含自定义操作的名称来指示故事应该调用自定义操作。
Events
在训练期间,Rasa开源不会调用action server。这意味着助手的对话管理模型不知道自定义操作将返回哪些事件。因此,设置槽 或激活/停用表单等事件必须作为故事的一部分明确写出。有关更多信息,请参阅事件文档。
Slot Events
槽位事件Slot events写在故事中slot_was_set设置下,如果此槽位设置在自定义操作中,请在自定义操作调用后立即添加slot_was_set事件。如果自定义操作将槽位值重置为“无”,则相应的事件如下所示:
Form Events
在处理故事的表单时,有三种事件需要牢记在心。
- A form action event 表单操作事件(例如,-action:restaurant_form)在第一次启动表单时开始使用,也在表单已激活时恢复表单操作时使用。
- A form activation event 在第一个表单操作事件之后立即使用表单激活事件(例如,active_loop:restaurant_form)。
- A form deactivation event 表单停用事件(例如,active_loop:null),用于停用表单。
Checkpoints and OR statements
检查点、或声明应谨慎使用(如果有的话)。通过使用规则或响应选择器,通常有更好的方法来实现你想要的。
Checkpoints
您可以使用检查点来模块化和简化训练数据。检查点可能有用,但不要过度使用它们。使用大量的检查点会很快让你的示例故事变得难以理解,并且会降低训练的速度。
下面是一个包含检查点的故事示例:
与常规故事不同,检查点不限于从用户输入开始。只要检查点插入到主故事中的正确点,第一个事件就可以是自定义操作或响应。
Or Statements
写短篇故事的另一种方法,或者以同样的方式处理多个意图或槽位事件,是使用or语句。例如,如果您要求用户确认某件事,并且希望以相同的方式对待确认和感谢意图。以下故事将在培训时转换为两个故事:
也可以将or语句与槽位事件一起使用。下面的意思是,故事需要设置name槽位的当前值,是joe或bob:
OR 语句可能很有用,但是如果你使用了很多,那么最好重新构造你的域和/或意图。过度使用或陈述会减缓训练。
Test Conversation Format
测试对话格式是一种将NLU数据和故事合并到一个文件中进行评估的格式。在测试助手中阅读更多关于此格式的信息。测试格式仅用于测试,不能用于训练。
End-to-end Training
Rasa2.2版本中新增
端到端训练是一种实验性的特征。我们引入实验性功能以从我们的社区获得反馈,因此我们鼓励您尝试!但是,将来可能会更改或删除该功能。如果您有反馈(正面或负面),请在Rasa论坛上与我们分享。通过端到端的训练,您不必处理NLU管道提取的消息的特定意图,也不必处理域文件中单独的完全响应。相反,您可以直接在故事中包含用户消息 或机器人响应的文本。有关如何编写端到端故事的详细说明,请参见训练数据格式。
您可以将端到端格式的训练数据与指定了意图和动作的标记训练数据混合:故事可以包含由意图/动作定义的一些步骤,以及由用户或机器人话语直接定义的其他步骤。我们称之为端到端训练,因为策略可以消费和预测实际文本。对于端到端用户输入,将忽略按NLU管道和提取实体分类的意图。只有规则策略和TED策略允许端到端训练。
- RulePolicy在预测期间使用简单的字符串匹配。也就是说,只有当规则中的用户文本字符串和预测期间的输入相同时,基于用户文本的规则才会匹配。
- TEDPolicy通过附加的神经网络传递用户文本,以创建文本的隐藏表示。为了获得可靠的性能,您需要提供足够的训练故事,以便为任何端到端对话回合捕获各种用户文本。
Rasa政策是为下一次话语选择而训练的。与创建完全响应的唯一区别在于TEDPolicy是如何将机器人的话语特征化的。如果是utter_ 动作,TEDPolicy只会看到动作的名称,而如果使用bot键提供实际的话语,TEDPolicy会根据NLU配置将其特征化为文本输入。如果