8.3 KiB
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.'