AMUseBot/ai_talks/AMUseBotBackend/doc/Metody.md
2023-06-05 21:23:33 +02:00

2.5 KiB

Metody użyte w prototypie

NLU

Kacper

DST

Klasa zawierająca informacje o stanie dialogu. Przechowywane informacje to:

  • id przepisu
  • numer obecnego kroku w przepisie
  • wszystkie kroki wybranego przepisu
  • potrzebne składniki
  • historia dialogu

Przykład zapisu stanu dialogu:

{'dialog_state': {'curr_step': 0,
        'inngredients': ['2 tablespoons canola oil', '1 large eggplant, peeled and sliced', '3 eggs, beaten', '2 cups dry bread crumbs'],
        'recipe_id': 61,
        'steps': {0: 'First heat 2 tablespoons canola oil in a large skillet over medium-high heat.',
                1: 'Next dip 1 large eggplant, peeled and sliced in the egg. You should use 3 beaten eggs for this.',
                2: 'Now dip the eggplant into the crumbles. You can use 2 cups dry bread crumbs for this.',
                3: 'Next place the eggplant into the hot oil.',
                4: 'Fry 2 to 3 minutes on each side.',
                5: 'Drain the eggplant on paper towels.'},
        'user_messages': [{'intents': ['greeting', 'req_start'],
                            'system_message': "Hello! I'm AMUseBot, virtual cooking assistant, tell me the name of the recipe you would love to cook today?",
                            'user_message': 'Hello'},
                        {'intents': [], 'system_message': 'Hi! What do you want to cook today?', 'user_message': 'abc'},
                        {'intents': ['req_repeat'],
                            'system_message': 'You choose Easy Fried Eggplant lets get to work.\nFirst heat 2 tablespoons canola oil in a large skillet over medium-high heat.',
                            'user_message': "i don't understand could you repeat"}]}}

DP

Regułowy moduł podejmujący decyzje na podstawie stanu dialogu oraz aktu mowy użytkownika.

Przykład reguły polityki dialogu:

if (None != self.dst_module.generate_state(c.RECIPE_ID_KEY) and "" != self.dst_module.generate_state(c.RECIPE_ID_KEY)):
    if ("req_ingredient_list" in intents
        or "req_ingredient" in intents):
        return NLG.MESSAGE_INGREDIENTS(self.dst_module.generate_state(c.INGREDIENTS_KEY))

NLG

Moduł oparty o gotowe odpowiedzi oraz szablony

Przykład szablonu:

@staticmethod
def MESSAGE_CHOOSEN_RECIPE(recipe_name):
    return "You choose " + recipe_name + " lets get to work."

Dodatkowe metody (Opcjonalne)

Okapi BM25

Wyszukiwarka przepisów - Adrian