如何在 Rasa 1.X 中使用 UserUttered?

问题描述

在 Rasa 1.5.3 中,当用户对我们的聊天机器人说了些什么但这个聊天机器人听不懂时,我们希望自动更正用户输入并将其发送回 NLU 管道,以便 Rasa 理解。

>

我们尝试在 default_fallback 操作中使用 UserUttered 事件,但这不起作用: 使用时:

from rasa_sdk import Action
from rasa_sdk.events import SlotSet,AllSlotsReset,Restarted,UserUtteranceReverted,FollowupAction,ActionReverted,UserUttered
from rasa_sdk.forms import FormAction,REQUESTED_SLOT
from rasa_sdk.events import SlotSet

class ActionDefaultFallback(Action):

    def __init__(self) -> None:
        pass

    def name(self):
        return "action_default_fallback"

    def run(self,dispatcher,tracker,domain):
        text = tracker.latest_message['text']
        correct_text = my_custom_spellcheck.correct(text)

        return UserUttered(text=correct_text)

运行这个 default_fallback_action 只会给我们这个错误

2021-01-19 11:59:05 ERROR    rasa.core.processor  - Encountered an exception while running action 'action_default_fallback'. Bot will continue,but the actions events are lost. Please check the logs of your action server for more information.

如何使用 UserUttered 事件?

解决方法

自定义操作需要返回事件列表,因此您的 run 方法应返回 [UserUttered(text=correct_text)]。有关详情,请参阅 here

,

自动更正是什么意思?通常最好将拼写错误的 nlu 示例直接引入您的 nlu 训练数据中。 否则,我建议您使用拼写检查器创建自定义 NLU 组件,并将其添加到分词器之前的 NLU 管道中。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...