问题描述
在 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 管道中。