Zaktualizuj 'modules/NLG.py'

fix
This commit is contained in:
Julian Zabłoński 2022-06-08 01:06:07 +02:00
parent 4b02834daf
commit a77997409a

View File

@ -1,13 +1,16 @@
import json import json
from xml import dom from xml import dom
value_dict = json.load(open('../DST_DP_lab_9-10/value_dict.json')) value_dict = json.load(open(r'C:\Users\User\VisualStudio\Diagramy\aitech-sd-lab\modules\value_dict.json'))
# json.load(open('value_dict.json'))
class NLG: class NLG:
def __init__(self): def __init__(self):
self.answer = '' self.answer = ''
def update(self, system_act): def update(self, system_act):
self.answer = ''
for domain, intent, slot, value in system_act: for domain, intent, slot, value in system_act:
if domain == 'Cinema' and intent == 'Inform' and slot == 'Seat': if domain == 'cinema' and intent == 'inform' and slot == 'seat':
if value == '': if value == '':
self.answer += f'Gdzie dokładnie chciałabyś/byś zarezezrwować miejsce. ' self.answer += f'Gdzie dokładnie chciałabyś/byś zarezezrwować miejsce. '
elif value == "top": elif value == "top":
@ -18,64 +21,80 @@ class NLG:
self.answer += f'Wolne miejsca na środku w rzędzie 6 miejsca od 5 do 10. ' self.answer += f'Wolne miejsca na środku w rzędzie 6 miejsca od 5 do 10. '
else: else:
self.answer += f'Nie znalazłem miejsca. ' self.answer += f'Nie znalazłem miejsca. '
elif domain == 'Cinema' and intent == 'Inform' and slot == 'Movie': elif domain == 'cinema' and intent == 'inform' and slot == 'cancel_book':
if len(value):
self.answer += f'Rezerwacja na maila: {value} została anulowana. '
elif value == '':
self.answer += f'Proszę podać e-mail na który była rezerwacja miejsce. '
else:
self.answer += f'Rezerwacja nie została anulowana. '
elif domain == 'cinema' and intent == 'inform' and slot == 'movie':
if value == '': if value == '':
self.answer += f'Nie znalazłem filmu. ' self.answer += f'Nie znalazłem filmu. '
else: else:
self.answer += f'Film {value} będzie wyświetlany jutro o godzinie 21:30. ' self.answer += f'Film {value} będzie wyświetlany jutro o godzinie 21:30. '
elif domain == 'Cinema' and intent == 'Offer' and slot == 'Closestscreening': elif domain == 'cinema' and intent == 'offer' and slot == 'closestscreening':
if value in ['Dziś','Jutro','Pojutrze']: if value in ['Dziś','Jutro','Pojutrze']:
self.answer += f'{value} prezentujemy Batmana o 18:30 i Ambulans o 21:00. ' self.answer += f'{value} prezentujemy Batmana o 18:30 i Ambulans o 21:00. '
elif value in value_dict['train']['day']: elif value in value_dict['train']['day']:
self.answer += f'W {value} prezentujemy Ambulans o 18:30 i To nie wypanda o 20:00. ' self.answer += f'W {value} prezentujemy Ambulans o 18:30 i To nie wypanda o 20:00. '
elif value in value_dict['train']['date']: elif value in value_dict['train']['date']:
self.answer += f'Dnia {value} prezentujemy Batmana o 18:00 i Sing 2 o 20:30. ' self.answer += f'Dnia {value} prezentujemy Batmana o 18:00 i Sing 2 o 20:30. '
elif domain == 'Cinema' and intent == 'Request' and slot == 'e-mail': elif domain == 'cinema' and intent == 'request' and slot == 'e-mail':
if value== '': if value== '':
self.answer += 'Prosze podać e-mail. ' self.answer += 'Prosze podać e-mail. '
elif domain == 'Cinema' and intent == 'Request' and slot == 'name': elif domain == 'cinema' and intent == 'request' and slot == 'date':
if value== '':
self.answer += 'Którego dnia chciałabyś/byś pani obejrzeć ten film. '
elif domain == 'cinema' and intent == 'request' and slot == 'name':
if value== '': if value== '':
self.answer += 'Prosze podać imie i nazwisko. ' self.answer += 'Prosze podać imie i nazwisko. '
elif domain == 'Cinema' and intent == 'Request' and slot == 'phone': elif domain == 'cinema' and intent == 'request' and slot == 'phone':
if value== '': if value== '':
self.answer += 'Prosze podać numer telefonu. ' self.answer += 'Prosze podać numer telefonu. '
elif domain == 'Cinema' and intent =='Request' and slot == 'Seat_row': elif domain == 'cinema' and intent =='request' and slot == 'row':
if value in value_dict['train']['seat_row']: if value in value_dict['train']['seat_row']:
self.answer += f'W rzędzie {value} są wolne miejsca od 1 do 4 i od 12 do 15. ' self.answer += f'W rzędzie {value} są wolne miejsca od 1 do 4 i od 12 do 15. '
elif value == '':
self.answer += f'W jakim rzędzie chciałbyś/abyś zarezerwować miejsce. '
else: else:
self.answer += f'Nie ma wolnych miejsc. ' self.answer += f'Nie ma wolnych miejsc w rzędzie {value}. '
elif domain == 'Cinema' and intent =='Request' and slot == 'Seat_place': elif domain == 'cinema' and intent =='request' and slot == 'seat_place':
if value in value_dict['train']['seat_place']: if value in value_dict['train']['seat_place']:
self.answer += f'W rzędzie 4 jest wolne miejsce {value}. ' self.answer += f'W rzędzie 4 jest wolne miejsce {value}. '
else: else:
self.answer += f'W rzędzie 4 nie ma wolnego miejsce {value}. ' self.answer += f'W rzędzie 4 nie ma wolnego miejsce {value}. '
elif domain == 'Cinema' and intent =='Request' and slot == 'Seat': elif domain == 'cinema' and intent =='request' and slot == 'seat':
if value in value_dict['train']['seat']: if value in value_dict['train']['seat']:
self.answer += f'Miejsce {value} jest wolne. ' self.answer += f'Miejsce {value} jest wolne. '
elif value == '':
self.answer += f'Jakie miejsce chciałbyś/abyś zarezerwować. '
else: else:
self.answer += f'Miejsce {value} nie jest wolne. ' self.answer += f'Miejsce {value} nie jest wolne. '
elif domain == 'Cinema' and intent == 'Inform' and slot == 'Location': elif domain == 'cinema' and intent == 'inform' and slot == 'Location':
self.answer += 'Cinema is in Jana Pawła 2/40. ' self.answer += 'Kino znajduję się na ulicy Jana Pawła 2/40. '
elif domain == 'Cinema' and intent == 'Inform' and slot == 'Cinema_name': elif domain == 'cinema' and intent == 'inform' and slot == 'cinema_name':
self.answer += 'Cinema name is Hellios' self.answer += 'Kino nazywa sie Hellios'
elif domain == 'Cinema' and intent == 'Offer' and slot == 'time': elif domain == 'cinema' and intent == 'offer' and slot == 'time':
if value in ['15:00','12:00','18:00','18:30','19:00','20:00','20:30','21:00','21:30']: if value in ['15:00','12:00','18:00','18:30','19:00','20:00','20:30','21:00','21:30']:
self.answer += f'Dostępny jest seans na godzine {value}. ' self.answer += f'Dostępny jest seans na godzine {value}. '
else: else:
self.answer += f'Nie mamy aktualnie seansu na taką godzinę. ' self.answer += f'Nie mamy aktualnie seansu na taką godzinę. '
elif domain == 'Cinema' and intent == 'Request' and slot == 'Ticket': elif domain == 'cinema' and intent == 'request' and slot == 'tickettype':
if value == '': if value == '':
self.answer += 'Czy chciałabyś/byś bilet normalny czy ulgowy? ' self.answer += 'Czy chciałabyś/byś bilet normalny czy ulgowy? '
elif domain == 'cinema' and intent == 'request' and slot == 'quantity':
elif domain == 'Cinema' and intent == 'Request' and slot == 'Quantity':
if value == '': if value == '':
self.answer += 'Ile biletów chciałabyś/byś zarezerwować. ' self.answer += 'Ile biletów chciałabyś/byś zarezerwować. '
elif domain == 'Cinema' and intent == 'Inform' and slot == 'Payments': elif domain == 'cinema' and intent == 'request' and slot == 'hour':
if value == '':
self.answer += 'O jakiej godzinie chciałabyś/byś zobaczyć film. '
elif domain == 'cinema' and intent == 'request' and slot == 'payments':
if value == 'online': if value == 'online':
self.answer += 'Proszę dokonać płatność online. Dziękujemy za skorzystanie z naszych usług. ' self.answer += 'Proszę dokonać płatność online. Dziękujemy za skorzystanie z naszych usług. '
else: else:
self.answer += 'Proszę stawić się 30 minut przed seansem aby dokonać płatność. Dziękujemy za skorzystanie z naszych usług. ' self.answer += 'Proszę stawić się 30 minut przed seansem aby dokonać płatność. Dziękujemy za skorzystanie z naszych usług. '
return self.answer return self.answer
nlg = NLG() # nlg = NLG()
print(nlg.update([['Cinema', 'Offer', 'Closestscreening', "1.02"],['Cinema', 'Request', 'name', ""]])) # print(nlg.update([['cinema', 'offer', 'Closestscreening', "1.02"],['cinema', 'request', 'name', ""]]))