Намерение вернуть Null для Rasa nlu

В настоящее время я столкнулся с проблемой, когда, если пользователь вводит слово, которое не было обучено в файле nlu, nlu вернет это:

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

С другими сценариями отлично работает! Есть ли способ зафиксировать эти ошибки и заставить rasa вернуть сообщение об ошибке по умолчанию? Пожалуйста, дай мне знать. Спасибо!


person paul590    schedule 08.01.2019    source источник


Ответы (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": []}

to

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

Но будьте осторожны при использовании второго. Возможно, вам придется проявить осторожность при обновлении пакета python rasa_nlu.

person mvs    schedule 09.01.2019
comment
Привет, @mvs, спасибо за ответ! Прошу прощения за недоразумение. Проблема, с которой я сталкиваюсь, заключается в том, что намерение распознается как нулевое, я не могу добавить это в файл stories.md, поэтому раса кричит на меня. Есть ли способ добавить это в истории или каким-то образом зафиксировать это нулевое намерение и заставить его перейти к значению по умолчанию? - person paul590; 09.01.2019
comment
Один из способов сделать это - использовать запасной механизм. включите некоторые тренинги, которые не относятся к вашему варианту использования, и добавьте их в качестве резервных вариантов. когда RASA NLU не может классифицировать что-либо как ваш вариант использования, он помещает это в резервное намерение. Затем вы можете определить историю для запасного намерения. Надеюсь, это поможет. ваше здоровье! - person mvs; 10.01.2019
comment
Другой, но менее рекомендуемый способ, который вы можете попробовать, - использовать пункт 2 в моем ответе и определить историю на основе YOUR_CUSTOM_INTENT. - person mvs; 10.01.2019
comment
благодарю вас! Я подумал о создании особого намерения и добавлении этих слов сюда. Но мне любопытно, знаете ли вы, есть ли способ для ядра rasa распознать это нулевое намерение или предпринять какое-то действие по умолчанию? Я думаю, что могу попытаться добавить как можно больше вариантов использования для настраиваемого намерения, однако меня беспокоит, что у пользователя может быть вариант использования, о котором я не подумал, и вылетит бот! - person paul590; 15.01.2019
comment
добро пожаловать :) Кажется, они не реализовали какой-либо настраиваемый параметр для этого, как я проверял на странице github. Судя по моему опыту, вам не нужно добавлять много вещей к резервному варианту. Просто добавьте несколько вещей, не связанных со сценарием вашего бота. Он должен хорошо служить цели. В сочетании с порогом уверенности вы можете заставить его работать достойным образом. - person mvs; 21.01.2019
comment
Потрясающие! Еще раз спасибо за вашу помощь, это мне очень помогло! - person paul590; 24.01.2019