move responses to json

This commit is contained in:
Anna Śmigiel 2024-06-11 18:23:36 +02:00
parent abdfe9d1b3
commit 8f85af7f7f
3 changed files with 36 additions and 54 deletions

View File

@ -1,27 +1,33 @@
{
"name_response": [
"Witaj, nazywam się Dia.",
"Cześć! Jestem Dia.",
"Hej, jestem Dia.",
"Witaj! Nazywam się Dia.",
"Cześć, jestem Dia.",
"Hej! Jestem Dia.",
"Jestem Dia. Miło mi Cię poznać.",
"Witaj, jestem chatbot Dia."
],
"unknown": [
"inform": {
"item": "Nasz sklep oferuje szeroki wybór artykułów, takich jak\n artykuły spożywcze,\n ogrodowe\n oraz kosmetyki. Proszę podaj produkt.",
"address": "Nasz sklep nie ma fizycznego adresu. To sklep internetowy.",
"delivery_method": "Dostępne formy dostawy: INPOST, DPD, DHL.",
"payment_method": "Dostępne formy płatności: Karta, przy odbiorze",
"email": "Obsługa klienta: cs2137@gmail.com",
"card_nr": [
"Dzięki karcie rabatowej zbierasz punkty, które poźniej przekładają się na rabat.",
"Dzisiaj z kartą rabatową meble ogrodowe 200zł taniej!",
"Dzisiaj z kartą rabatową szampony 2 w cenie 1!"
]
},
"canthelp": {
"unknown": [
"Przepraszam, nie rozumiem. Możesz to powtórzyć?",
"Nie jestem pewien, co masz na myśli. Czy możesz to wyjaśnić?",
"Nie rozumiem. Możesz to powtórzyć?",
"Nie jestem pewien, co masz na myśli. Możesz to wyjaśnić?",
"Nie jestem pewien, co masz na myśli. Czy możesz to wyjaśnić?"
],
"repeat": [
"Wygląda na to, że krążymy wokół tego samego tematu. Czy możemy przejść do czegoś innego?",
"Znowu to samo pytanie, może zmienimy temat?",
"Ponownie pytasz o to samo, czy jest coś innego, o co chciałbyś zapytać?"
],
"give_price": [
"Cena to 20zl"
]
]
},
"request": {
"card_nr": "Podaj proszę numer karty rabatowej",
"address": "Podaj proszę adres do wysyłki",
"item": "Jaki produkt chcesz kupić?",
"email": "Podaj proszę email.",
"delivery_method": "Jaką formą dostawy jesteś zainteresowany?",
"payment_method": "Jaką formą płatności jesteś zainteresowany?"
},
"bye": "Miłego dnia!",
"confirmation": "Zamówienie zostało złożone!"
}

View File

@ -19,7 +19,7 @@ def main():
nlu = NLU()
dst = DialogStateMonitor()
dp = DialoguePolicy()
generator = ResponseGenerator()
generator = ResponseGenerator(config)
print(Fore.CYAN + "Witaj w chatbocie! Rozpocznij rozmowę.")
print(Fore.YELLOW + "Wpisz 'quit' aby zakończyć program.\n")

View File

@ -7,42 +7,18 @@ import random
class ResponseGenerator:
def __init__(self, config: Config):
with config.responses_path.open('r', encoding='utf-8') as file:
self.responses: Dict[str, list] = json.load(file)
self.responses: Dict[str, dict] = json.load(file)
def nlg(self, system_act):
intent = system_act.intent
slot = system_act.slots[0].name if system_act.slots else None
responses = {
"inform": {
"item": "Nasz sklep oferuje szeroki wybór artykułów, takich jak\n artykuły spożywcze,\n ogrodowe\n oraz kosmetyki. Proszę podaj produkt.",
"address": "Nasz sklep nie ma fizycznego adresu. To sklep internetowy.",
"delivery_method": "Dostępne formy dostawy: INPOST, DPD, DHL.",
"payment_method": "Dostępne formy płatności: Karta, przy odbiorze",
"email": "Obsługa klienta: cs2137@gmail.com",
"card_nr": random.choice([
"Dzięki karcie rabatowej zbierasz punkty, które poźniej przekładają się na rabat.",
"Dzisiaj z kartą rabatową meble ogrodowe 200zł taniej!",
"Dzisiaj z kartą rabatową szampony 2 w cenie 1!"
])
},
"canthelp": {
"unknown": random.choice([
"Przepraszam, nie rozumiem polecenia...",
"Możesz powtórzyć?",
"Powiedz proszę jeszcze raz.."
])
},
"request": {
"card_nr": "Podaj proszę numer karty rabatowej",
"address": "Podaj proszę adres do wysyłki",
"item": "Jaki produkt chcesz kupić?",
"email": "Podaj proszę email.",
"delivery_method": "Jaką formą dostawy jesteś zainteresowany?",
"payment_method": "Jaką formą płatności jesteś zainteresowany?"
},
"bye": "Miłego dnia!",
"confirmation": "Zamówienie zostało złożone!"
}
intent_responses = self.responses.get(intent, {})
slot_responses = intent_responses.get(slot)
return responses.get(intent, {}).get(slot, "Nieznane zapytanie.")
if isinstance(slot_responses, list):
return random.choice(slot_responses)
elif isinstance(slot_responses, str):
return slot_responses
else:
return "Nieznane zapytanie."