System_Dialogowy_Janet/Code/Modules/NLG_module.py

74 lines
3.0 KiB
Python
Raw Normal View History

2021-06-06 12:09:20 +02:00
import random
2021-06-07 09:30:35 +02:00
import uuid
2021-06-06 12:09:20 +02:00
2021-05-27 15:11:28 +02:00
class NLG:
"""
Moduł, który tworzy reprezentację tekstową aktu systemowego wybranego przez taktykę dialogu.
Wejście: Akt systemu (rama)
Wyjście: Tekst
"""
2021-05-30 13:31:34 +02:00
def __init__(self):
pass
2021-05-27 15:11:28 +02:00
2021-06-06 12:09:20 +02:00
def change_to_text(self, system_acts):
2021-05-27 15:11:28 +02:00
"""
Funkcja zamieniająca akt systemu na tekst rozumiany przez użytkownika.
"""
2021-06-06 12:09:20 +02:00
if(len(system_acts) == 0):
return "Nie mam już nic do powiedzenia :("
act = system_acts.pop(0)
if(len(act) == 0):
return "Nie mam już nic do powiedzenia :("
2021-06-07 09:30:35 +02:00
for action in act:
domain, intent = action
if(domain == "greeting"):
return random.choice(["Cześć, mam na imię Janet", "Hej, jestem Janet. W czym mogę pomóc?", "Dzień dobry, nazywam się Janet"])
2021-06-06 12:09:20 +02:00
2021-06-07 09:30:35 +02:00
if(domain == "end_conversation"):
return random.choice(["Dziękujemy za skorzystanie z naszych usług!", "Do widzenia!", "Do zobaczenia!"])
2021-06-06 12:09:20 +02:00
2021-06-07 09:30:35 +02:00
if(domain == "appointment"):
if (intent == "NoOffer"):
return "Proszę sprecyzować zapis na wizytę (lekarz, godzina)"
if (intent == "book_appointent"):
answer = "Zarezerwowano wizytę"
for key in act[action]:
value = act[action][key]
if(key == "doctor"):
answer += f" do lekarza {value}"
if(key== "datetime"):
answer += f" umówiona na: {value}"
return answer
if (intent == "set_appointment_date"):
value = act[action]["datetime"]
return f"Ustawiono datę wizyty na {value}"
if(domain == "inform"):
if (intent == "Doctors_list"):
value = act[action]["doctors"]
return f"Lista doktorów w naszej placówce: \n{value}"
if (intent == "Location"):
city = act[action]["city"]
street = act[action]["street"]
number = act[action]["number"]
return f"Placówka znajduje się w {city}, {street} {number}"
if (intent == "Opening_Hours"):
value = act[action]["hours"]
return f"Placówka jest otwarta w godzinach {value}"
if (intent == "NoOffer"):
return f"Nie posiadam takiej wiedzy, żeby odpowiedzieć na to pytanie :("
2021-06-07 08:20:21 +02:00
2021-06-07 09:30:35 +02:00
if(domain == "prescription"):
if(intent == "create_prescription" or intent == "collect_prescription"):
answer = f"Odebrano receptę {uuid.uuid4().hex}"
return answer
if(intent == "prescription type"):
return "Wszystkie recepty w naszej placówce są elektroniczne"
if (intent == "NoOffer"):
return f"Nie rozumiem :("
2021-06-07 08:20:21 +02:00