我是Chatbots的新手,并开始使用RASA作为框架。并且想知道RASA使用哪种方法作为其响应生成技术。 (NLG)

从理论上讲,NLG技术有两种类型:


模板驱动的NLG
高级NLG-神经网络和ML


那么,在RASA中,他们使用什么方法?

最佳答案

RASA堆栈足够灵活,可以支持两个用例。

有关问题的文档(v:0.10.3)可在以下位置找到:http://www.rasa.com/docs/core/responses/

TL; DR

RASA提供了基于模板的内置NLG。但是,它还允许您连接到NLG的外部HTTP服务器。该服务器中发生的事情取决于您,它可能是基于神经网络的NLG服务器,但这需要您自己完成。

模板驱动的NLG

从文档:


  默认格式是将话语包含到您的域中
  文件。然后,该文件包含对所有自定义操作的引用,
  可用的实体,广告位和意图。


域文件的一部分将包含模板部分。这是文档中的一个示例:

templates:
  utter_greet:
    - "hey there {name}!"    # variable will be filled by slot with the same name or by custom code
  utter_goodbye:
    - "goodbye 😢"
    - "bye bye 😢"              # multiple templates will allow the bot to randomly pick from them
  utter_default:
    - "default message"


高级NLG-神经网络和ML

从文档:


  重新训练机器人,仅更改文本副本就可能不是最佳选择
  一些工作流程。因此,Core还允许您将
  响应生成,并将其与对话学习分开。
  
  该机器人仍将学习预测动作并响应用户输入
  基于过去的对话,但是它发送回给用户的响应
  是在Rasa Core之外生成的。
  
  如果漫游器想要向用户发送消息,它将调用一个
  带有POST请求的外部HTTP服务器。要配置此端点,
  您需要创建一个endpoints.yml并将其传递给运行或
  服务器脚本。


核心将通过会话中的信息与您的服务器联系,包括用户话语,意图和空位。然后,您的服务器将具有一个基于神经网络的NLG(由您开发),该NLG将返回该bot应该显示给用户的文本。

09-30 10:45