systemy_dialogowe/NLG.ipynb

8.3 KiB

import random
def nlg(system_act):
    intent, domain, slot, value = system_act

    if domain == 'payment' and intent == 'inform':
        if slot == 'type':
            if value == 'blik' or value == 'gotówka' or value == 'karta kredytowa' or value == 'karta restauracyjna' or value == 'bon upominkowy':
                return f"Informuję, że {value} jest możliwą formą płatności w naszej restauracji."
            else:
                return f"Informuję, że {value} nie jest możliwą formą płatności w naszej restauracji."
        if slot == 'vat':
            return f"Twój vat jest {value} w rachunek."
        if slot == 'amount':
            return f"Kwota Twojej płatności to {value}."
        else:
            return "Nie mogę wykonać takiej operacji."
    elif domain == 'booking' and intent == 'inform':
        if slot == 'area':
            return f"Ta restauracja znajduje się w dzielnicy {value}."
        if slot == 'restaurant_name':
            return f"Oto twoja rezerwacja w {value}."
        if slot == "book people":
            if value == 0:
                return f'Nie można zarezerwować stolika dla 0 osób.'
            elif value == 1:
                return f'Można zarezerwować stolik dla Ciebie.'
            elif value <= 10:
                return f'Znalazłem stolik dla {value} osób.'
            elif value >= 11:
                return f'Nie ma stoliku dla {value} osób.'
            else:
                return f'Nie znalazłem stolików dla podanych kryterów.'
        if slot == "book day":
            return f"Dzień Twojej rezerwacji to: {value}."
        if slot == "book time":
            return f"Godzina Twojej rezerwacji to: {value}."
    elif domain == "order" and intent == "inform":
        if slot == "type":
            if value == "na wynos":
                return f'Twoje zamówienie zostanie może zostać przygotowane do odbioru na wynos.'
            elif value == "na miejscu":
                return f'Możesz odebrać zamówienie na miejscu.'
            elif value == "dostawa":
                return f'Twoje zamówienie może być zrealizowane w formie dostawy.'
        if slot == "price range":
            return f"Porównując do cen w innych restauracjach, kwota Twojego zamówienia jest: {value}."
        if slot == "restaurant_name":
            return f"Zamówienie zostanie wykonane przez {value}."
        if slot == "area":
            return f"Zamówienie zostanie zrealizowane w dzielnicy {value}."
        if slot == "book time":
            return f"Godzina Twojego zamówienia to: {value}."
        if slot == "book day":
            return f"Dzień Twojego zamówienia to: {value}."        

    elif intent == 'end_conversation':
        return random.choice(['Żegnam i dziękuję za skorzystanie z usługi.', 'Do widzenia.', "Dziękuję za skorzystanie z usługi, do kolejnego razu."])
    elif intent == 'start_conversation':
        return random.choice(['Witaj, jestem asystentem dialogowym, dzięki któremu złożysz zamówienie w restuaracji.', 'Cześć, w czym mogę pomóc?', "Witam w usłudze, w czym mogę pomóc?"])
    elif intent == 'affirm':
        return random.choice(['Tak.', 'Potwierdzam.', "Mozliwe."])
    elif intent == 'deny':
        return random.choice(['Nie.', 'Nie potwierdzam.', "Niemożliwe."])   
    elif intent == 'recommend' and slot=="name":
        if domain=="food":
            return f"Rekomendowany posiłek to: {value}."
        if domain=="drink":
            return f"Rekomendowany napój to: {value}."    
        if domain=="sauce":
            return f"Rekomendowany sos to: {value}."
    elif intent == 'recommend' and slot=="type":
        if domain=="booking":
            return f"Rekomenduję następującą rezerwację stolika: {value}."  
        if domain=="order":
            return f"Rekomenduję takie zamówienie: {value}."
        if domain=="payment":
            return f"Rekomendowana metoda płatności to: {value}."  
nlg(['inform', 'payment', 'type', 'gotówka'])
'Informuję, że gotówka jest możliwą formą płatności w naszej restauracji.'
nlg(['inform', 'order', 'type', 'na wynos'])
'Twoje zamówienie zostanie może zostać przygotowane do odbioru na wynos.'
nlg(['inform', 'booking', 'restaurant_name', 'biały kwiat'])
'Oto twoja rezerwacja w biały kwiat.'
nlg(['end_conversation', '', '', ''])
'Żegnam.'
nlg(['start_conversation', '', '', ''])
'Cześć, w czym mogę pomóc?'
nlg(['recommend', 'food', 'name', 'zupa grzybowa'])
'Rekomendowany posiłek to: Zupa grzybowa.'
nlg(['recommend', 'payment', 'type', 'blik'])
'Rekomendowana metoda płatności to: blik.'