我是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应该显示给用户的文本。