Обучите rasa_core предсказывать следующее намерение согласно story.md - PullRequest
0 голосов
/ 28 ноября 2018

Нужна помощь для этого.Я хочу знать, как я могу научить своего бота предсказывать следующее намерение в соответствии с тем, что у меня есть в Stories.md.

Чтобы быть ясным: у меня есть намерение «проблема» в этом намерении, я не знаючто пользователь мог записать на пленку.Это может быть любая вещь, которую пользователь квалифицирует, что это проблема для него.Все, что я знаю, это то, что это намерение произойдет на определенном этапе разговора.например:

## story1
* greet
    - utter_greet
* confirm
    - utter_step1
* probleme
    - action_SendIntentProbleme
    - utter_probleme_site

Итак, я знаю, что всегда после utter_step1 пользователь будет сообщать мне свою проблему, и мне не нужно ее понимать, мне просто нужен бот, чтобы квалифицировать его как намеренную проблему, чтобы бытьможет после этого выполнить action_sendintentproblem, а затем utter_problem_site.Ответ бота на это намерение общий.независимо от содержания этого намерения.

Я хочу, чтобы мой бот при прослушивании пользователя после Utter_step1 знал, что следующий ввод будет иметь намерение «проблема», могу ли я указать это в своем файле data.md?или мне нужно добавить это в файл конфигурации и как?

Спасибо за помощь

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете использовать формы для этого варианта использования.

История должна выглядеть следующим образом:

## story1
* greet
    - utter_greet
* confirm
    - utter_step1
    - problem_form
    - form{"name": "problem_form"}
    - form{"name": null}
    - action_SendIntentProbleme
    - utter_probleme_site

В файле вашего домена добавьте:

intents:
  ...

slots:
  problem_message
    type: unfeaturized
  ...

forms:
  - problem_form

actions:
  - utter_ask_problem_message

templates:
  utter_ask_problem_message:
    text: "What is your problem?"

В конфигурации вашей основной политики добавьте политику форм:

policies:
  - name: FormPolicy
  ...

И затем получите такую ​​форму:

from rasa_core_sdk.forms import FormAction

class ProblemForm(FormAction):
    """Accept free text input from the user for suggestions"""

    def name(self):
        return "problem_form"

    @staticmethod
    def required_slots(tracker):
        return ["problem_message"]

    def slot_mappings(self):
        return {"problem_message": self.from_text()}

    def submit(self, dispatcher, tracker, domain):
        return []

Эта форма будет вызывать utter_ask_problem_message до тех пор, пока слот не будетзаполняется пользователем.Поскольку мы называем self.from_text(), слот будет заполнен всем сообщением.

...