【问题标题】:Intent returning Null for Rasa nluIntent 为 Rasa nlu 返回 Null
【发布时间】:2019-06-03 12:22:04
【问题描述】:

我目前遇到一个问题,如果用户在 nlu 文件中输入了一个未经训练的单词,nlu 将返回:

"intent": {
   "name": null,
   "confidence": 0.0
}

在其他情况下,效果很好!有没有办法捕获这些错误并让 rasa 返回默认错误消息?请告诉我。谢谢!

【问题讨论】:

    标签: rasa-nlu


    【解决方案1】:

    不清楚你是如何使用这个 nlu 响应的。

    1. 如果您在 rasa_core 中使用它,您可以在自定义操作类中预先捕获和处理任何此类意图。 例如
    def run(self, dispatcher, tracker, domain):
            intent  = tracker.latest_message.intent["name"]
    
    1. 如果您想在 rasa_nlu 级别执行此操作,请转到 rasa_nlu 安装目录(通常位于“Python 安装文件夹”\Lib\site-packages\rasa_nlu\ 并在 model.py 中进行以下更改
    def default_output_attributes():
            return {"intent": {"name": None, "confidence": 0.0}, "entities": []}
    

     def default_output_attributes():
            return {"intent": {"name": "YOUR_CUSTOM_NAME", "confidence": 0.0}, "entities": []}
    

    但请谨慎使用第二个。升级 rasa_nlu python 包时可能需要小心。

    【讨论】:

    • 嗨@mvs 谢谢你的回复!我为混乱道歉。我遇到的问题是意图被识别为空,我无法将其添加到 stories.md 文件中,因此 rasa 对我大喊大叫。有没有办法让我把它添加到故事中,或者以某种方式捕捉这个空意图并强制它进入默认状态?
    • 一种方法是通过后备机制。包括一些与您的用例无关的培训,并将它们添加到意图后备中。当 RASA NLU 无法将任何内容归类为您的用例时,它会将其置于备用意图之下。然后,您可以为后备意图定义一个故事。希望能帮助到你。干杯!
    • 您可以尝试的另一种但不太推荐的方法是在我的回答中使用第 2 点并根据 YOUR_CUSTOM_INTENT 定义故事。
    • 谢谢!我考虑过创建自定义意图并在此处添加此词。但我很好奇,你知道 rasa 核心是否有办法识别这个空意图或采取一些默认的故障回复操作?我想我可以尝试在自定义意图上添加尽可能多的用例,但是,我担心用户可能有一个我没有想到的用例并使机器人崩溃!
    • welcome :) 似乎他们没有实现任何可配置的选项来做到这一点,正如我在 github 页面上检查的那样。就我的经验而言,你不需要添加很多东西来回退。只需添加一些与您的机器人场景无关的内容。它应该很好地达到目的。结合置信阈值,您可以使其以体面的方式工作。
    猜你喜欢
    • 2019-09-24
    • 2020-10-16
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多