DP, DST and NLG fixes

This commit is contained in:
Łukasz Jędyk 2021-06-18 15:26:21 +02:00
parent 8a796b96cc
commit 588e00981e
5 changed files with 161 additions and 157 deletions

View File

@ -5,17 +5,11 @@ from collections import defaultdict
class DP: class DP:
"""
Moduł decydujący o wyborze kolejnego aktu, który ma podjąć system prowadząc rozmowę.
Wejście: Reprezentacja stanu dialogu (rama)
Wyjście: Akt systemu (rama)
"""
def __init__(self, dst): def __init__(self, dst):
self.DST = dst self.DST = dst
self.meeting_to_update = False self.meeting_to_update = False
def chooseTactic(self) -> SystemAct: def choose_tactic(self) -> SystemAct:
dialogue_state, last_user_act, last_system_act = self.DST.get_dialogue_state() dialogue_state, last_user_act, last_system_act = self.DST.get_dialogue_state()
slots = self.DST.get_dialogue_slots() slots = self.DST.get_dialogue_slots()
# stan dodawania spotkania # stan dodawania spotkania
@ -89,11 +83,11 @@ class DP:
elif dialogue_state == UserActType.UPDATE_MEETING: elif dialogue_state == UserActType.UPDATE_MEETING:
if not last_system_act: if not last_system_act:
if 'date' not in slots: if 'date' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['date']) system_act = SystemAct(SystemActType.REQUEST, ['date', False])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'time' not in slots: elif 'time' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['time']) system_act = SystemAct(SystemActType.REQUEST, ['time', False])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
else: else:
@ -102,11 +96,11 @@ class DP:
elif last_system_act.getActType() == SystemActType.REQUEST: elif last_system_act.getActType() == SystemActType.REQUEST:
if not self.meeting_to_update: if not self.meeting_to_update:
if 'date' not in slots: if 'date' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['date']) system_act = SystemAct(SystemActType.REQUEST, ['date', False])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'time' not in slots: elif 'time' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['time']) system_act = SystemAct(SystemActType.REQUEST, ['time', False])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
else: else:
@ -119,23 +113,23 @@ class DP:
slot_type = last_system_act.getActParams()[0] slot_type = last_system_act.getActParams()[0]
self.DST.insert_empty_slot(slot_type) self.DST.insert_empty_slot(slot_type)
if 'date' not in slots: if 'date' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['date']) system_act = SystemAct(SystemActType.REQUEST, ['date', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'time' not in slots: elif 'time' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['time']) system_act = SystemAct(SystemActType.REQUEST, ['time', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'place' not in slots: elif 'place' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['place']) system_act = SystemAct(SystemActType.REQUEST, ['place', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'description' not in slots: elif 'description' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['description']) system_act = SystemAct(SystemActType.REQUEST, ['description', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'participants' not in slots: elif 'participants' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['participants']) system_act = SystemAct(SystemActType.REQUEST, ['participants', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
else: else:
@ -144,23 +138,23 @@ class DP:
return system_act return system_act
else: else:
if 'date' not in slots: if 'date' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['date']) system_act = SystemAct(SystemActType.REQUEST, ['date', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'time' not in slots: elif 'time' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['time']) system_act = SystemAct(SystemActType.REQUEST, ['time', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'place' not in slots: elif 'place' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['place']) system_act = SystemAct(SystemActType.REQUEST, ['place', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'description' not in slots: elif 'description' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['description']) system_act = SystemAct(SystemActType.REQUEST, ['description', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif 'participants' not in slots: elif 'participants' not in slots:
system_act = SystemAct(SystemActType.REQUEST, ['participants']) system_act = SystemAct(SystemActType.REQUEST, ['participants', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
else: else:
@ -180,7 +174,7 @@ class DP:
if last_user_act == UserActType.CONFIRM: if last_user_act == UserActType.CONFIRM:
self.meeting_to_update = True self.meeting_to_update = True
self.DST.clear_slots() self.DST.clear_slots()
system_act = SystemAct(SystemActType.REQUEST, ['date']) system_act = SystemAct(SystemActType.REQUEST, ['date', True])
self.DST.system_update(system_act) self.DST.system_update(system_act)
return system_act return system_act
elif last_user_act == UserActType.NEGATE: elif last_user_act == UserActType.NEGATE:
@ -236,8 +230,7 @@ class DP:
return SystemAct(SystemActType.REQMORE, ['meeting_list']) return SystemAct(SystemActType.REQMORE, ['meeting_list'])
else: else:
if 'date' in slots: if 'date' in slots:
system_act = SystemAct(SystemActType.MEETING_LIST, slots) system_act = SystemAct(SystemActType.MEETING_LIST, {'date': slots['date']})
self.DST.clear()
return system_act return system_act
else: else:
system_act = SystemAct(SystemActType.REQUEST, ['date']) system_act = SystemAct(SystemActType.REQUEST, ['date'])
@ -250,8 +243,7 @@ class DP:
return SystemAct(SystemActType.REQMORE, ['free_time']) return SystemAct(SystemActType.REQMORE, ['free_time'])
else: else:
if 'date' in slots: if 'date' in slots:
system_act = SystemAct(SystemActType.FREE_TIME, slots) system_act = SystemAct(SystemActType.FREE_TIME, {'date': slots['date']})
self.DST.clear()
return system_act return system_act
else: else:
system_act = SystemAct(SystemActType.REQUEST, ['date']) system_act = SystemAct(SystemActType.REQUEST, ['date'])

View File

@ -4,12 +4,6 @@ from UserAct import UserAct
class DST: class DST:
"""
Moduł odpowiedzialny za śledzenie stanu dialogu. Przechowuje informacje o tym jakie dane zostały uzyskane od użytkownika w toku prowadzonej konwersacji.
Wejście: Akt użytkownika (rama)
Wyjście: Reprezentacja stanu dialogu (rama)
"""
def __init__(self): def __init__(self):
self.state = None self.state = None
self.last_user_act = None self.last_user_act = None

View File

@ -1,154 +1,144 @@
from SystemAct import SystemAct from SystemAct import SystemAct
from SystemActType import SystemActType from SystemActType import SystemActType
from UserActType import UserActType from UserActType import UserActType
import random
class NLG: class NLG:
"""
Moduł, który tworzy reprezentację tekstową aktu systemowego wybranego przez taktykę dialogu.
Wejście: Akt systemu (rama)
Wyjście: Tekst
"""
def __init__(self, dst): def __init__(self, dst):
self.DST = dst self.DST = dst
def generateResponse(self, systemAct: SystemAct) -> str: def format_meeting(self, date, time, place, participants, description, format_type):
dialogue_state, last_user_act, _ = self.DST.get_dialogue_state() if participants:
slots = self.DST.get_dialogue_slots() participants = ', '.join(participants)
if format_type == 'create':
return f'Data: {date}\nCzas: {time}\nMiejsce: {place}\nUczestnicy: {participants}\nOpis: {description}'.replace('None', 'BRAK')
elif format_type == 'update':
return f'Data: {date}\nCzas: {time}\nMiejsce: {place}\nUczestnicy: {participants}\nOpis: {description}'.replace('None', 'BEZ ZMIAN')
else:
return f'Data: {date}\nCzas: {time}\nMiejsce: {place}\nUczestnicy: {participants}\nOpis: {description}'
def generate_response(self, systemAct: SystemAct) -> str:
dialogue_state, _, _ = self.DST.get_dialogue_state()
print(f'Stacja dialogowa: {dialogue_state}')
if dialogue_state == UserActType.CREATE_MEETING: if dialogue_state == UserActType.CREATE_MEETING:
if systemAct.getActType() == SystemActType.REQUEST: if systemAct.getActType() == SystemActType.REQUEST:
if "date" in systemAct.getActParams(): if 'date' in systemAct.getActParams():
return "W jakim dniu ma się odbyć to spotkanie?" return random.choice(['W jakim dniu ma się odbyć to spotkanie?', 'Jakiego dnia odbędzie się to spotkanie?'])
if "time" in systemAct.getActParams(): elif 'time' in systemAct.getActParams():
return "W jakim czasie ma się odbyć to spotkanie?" return random.choice(['W jakim czasie ma się zacząć to spotkanie?', 'O której godzinie rozpoczyna się to spotkanie?'])
if "place" in systemAct.getActParams(): elif 'place' in systemAct.getActParams():
return "Gdzie ma się odbyć to spotkanie?" return random.choice(['W jakim miejscu odbywać się będzie to spotkanie?', 'Gdzie ma się odbyć to spotkanie?'])
if "description" in systemAct.getActParams(): elif 'description' in systemAct.getActParams():
return "Czy mam dodać jakiś opis do tego spotkania?" return random.choice(['Czy mam dodać jakiś opis do tego spotkania?', 'Czy to spotkanie ma posiadać jakiś opis?'])
if "participants" in systemAct.getActParams(): elif 'participants' in systemAct.getActParams():
return "Kto ma wziąć udział w spotkaniu?" return random.choice(['Kto będzie brał udział w spotkaniu?', 'Kto będzie uczestnikiem tego spotkania?'])
if systemAct.getActType() == SystemActType.CONFIRM_DOMAIN: elif systemAct.getActType() == SystemActType.CONFIRM_DOMAIN:
date = slots['date'] slots = systemAct.getActParams()
time = slots['time'] meeting = self.format_meeting(slots['date'], slots['time'], slots['place'], slots['participants'], slots['description'], 'create')
place = slots['place'] return random.choice([f'Czy mam dodać te spotkanie do kalendarza?\n{meeting}', f'Czy chcesz, abym dodał to spotkanie do kalendarza?\n{meeting}'])
part_list = slots['participants']
part = ""
for p in part_list:
part += p
part += ", "
part = part[:-2]
desc = slots['description']
return f'Czy mam dodać te spotkanie do kalendarza?\n' \
f'Dzień: {date}\nCzas: {time}\nMiejsce: {place}\nUczestnicy: {part}\nOpis: {desc}'
# TODO: nie sprawdzone - trudno wejść do tego stanu
elif dialogue_state == UserActType.UPDATE_MEETING: elif dialogue_state == UserActType.UPDATE_MEETING:
if systemAct.getActType() == SystemActType.REQUEST: if systemAct.getActType() == SystemActType.REQUEST:
if "date" in systemAct.getActParams(): if False in systemAct.getActParams():
return "W jakim dniu miało się odbyć to spotkanie?" if 'date' in systemAct.getActParams():
if "time" in systemAct.getActParams(): return random.choice(['W jakim dniu odbywa się spotkanie, które chcesz edytować?', 'Podaj datę spotkania, które chcesz zmienić.'])
return "W jakim czasie miało się odbyć to spotkanie?" elif 'time' in systemAct.getActParams():
# TODO dopracować po dodaniu DB return random.choice(['O której godzinie zaczyna się spotkanie, które chcesz zmienić?', 'Podaj godzinę spotkania, które chcesz edytować.'])
elif True in systemAct.getActParams():
if 'date' in systemAct.getActParams():
slot_name = 'datę'
slot_question = 'podaj nową datę.'
elif 'time' in systemAct.getActParams():
slot_name = 'godzinę'
slot_question = 'podaj nową godzinę rozpoczęcia tego spotkania.'
elif 'place' in systemAct.getActParams():
slot_name = 'miejsce'
slot_question = 'podaj nowe miejsce, w jakim odbywa się to spotkanie.'
elif 'description' in systemAct.getActParams():
slot_name = 'opis'
slot_question = 'podaj nowy opis tego spotkania.'
else:
slot_name = 'uczestników'
slot_question = 'podaj kim będą nowi uczestnicy tego spotkania.'
return f'Czy chcesz zmienić {slot_name} tego spotkania? Jeśli tak, to {slot_question}'
if systemAct.getActType() == SystemActType.CONFIRM_DOMAIN: if systemAct.getActType() == SystemActType.CONFIRM_DOMAIN:
date = slots['date'] if 'meeting_to_update' in systemAct.getActParams():
time = slots['time'] response = random.choice([f'Czy to jest spotkanie które chcesz edytować?', f'Czy chcesz wprowadzić zmiany do następującego spotkania?'])
place = slots['place'] # TODO: pokazać prawdziwe spotkanie po ew. dodaniu DB
part_list = slots['participants'] meeting = self.format_meeting('24.06.2021', '10:00', 'Kawiarnia Portowa', ['Andrzej Duda', 'Aleksander Kwaśniewski'], 'Spotkanie biznesowe w sprawie tarczy antyrakietowej', None)
part = "" return f'{response}\n{meeting}'
for p in part_list: else:
part += p slots = systemAct.getActParams()
part += ", " meeting = self.format_meeting(slots['date'], slots['time'], slots['place'], slots['participants'], slots['description'], 'update')
part = part[:-2] return random.choice([f'Czy chcesz wprowadzić następujące zmiany do tego spotkania?\n{meeting}', f'Czy potwierdzasz następujące zmiany w tym spotkaniu?\n{meeting}'])
desc = slots['description']
return f'Spotkanie:\n' \
f'Dzień: {date}\nCzas: {time}\nMiejsce: {place}\nUczestnicy: {part}\nOpis: {desc}'
elif dialogue_state == UserActType.CANCEL_MEETING: elif dialogue_state == UserActType.CANCEL_MEETING:
if systemAct.getActType() == SystemActType.REQUEST: if systemAct.getActType() == SystemActType.REQUEST:
if "date" in systemAct.getActParams(): if 'date' in systemAct.getActParams():
return "W jakim dniu miało się odbyć to spotkanie?" return random.choice(['W jakim dniu odbywa się spotkanie, które chcesz anulować?', 'Podaj datę spotkania, które chcesz usunąć z kalendarza.'])
if "time" in systemAct.getActParams(): elif 'time' in systemAct.getActParams():
return "W jakim czasie miało się odbyć to spotkanie?" return random.choice(['O której godzinie zaczyna się spotkanie, które chcesz usunąć z kalendarza?', 'Podaj godzinę spotkania, które chcesz anulować.'])
# TODO dopracować po dodaniu DB # TODO dopracować po dodaniu DB
if systemAct.getActType() == SystemActType.CONFIRM_DOMAIN: if systemAct.getActType() == SystemActType.CONFIRM_DOMAIN:
date = slots['date'] response = random.choice([f'Czy na pewno chcesz anulować następujące spotkanie?', f'Czy potwierdzasz usunięcie następującego spotkania?'])
time = slots['time'] # TODO: pokazać prawdziwe spotkanie po ew. dodaniu DB
# place = slots['place'] meeting = self.format_meeting('24.06.2021', '10:00', 'Kawiarnia Portowa', ['Andrzej Duda', 'Aleksander Kwaśniewski'], 'Spotkanie biznesowe w sprawie tarczy antyrakietowej', None)
# part_list = slots['participants'] return f'{response}\n{meeting}'
# part = ""
# for p in part_list:
# part += p
# part += ", "
# part = part[:-2]
# desc = slots['description']
return f'Spotkanie:\n' \
f'Dzień: {date}\nCzas: {time}'
elif dialogue_state == UserActType.MEETING_LIST: elif dialogue_state == UserActType.MEETING_LIST:
if systemAct.getActType() == SystemActType.REQUEST: if systemAct.getActType() == SystemActType.REQUEST:
if "date" in systemAct.getActParams(): if "date" in systemAct.getActParams():
return "Z jakiego okresu chcesz przejrzeć spotkania?" return random.choice(['Z jakiego dnia chcesz przejrzeć spotkania?', 'Spotkania z jakiego dnia chciałbyś zobaczyć?'])
# TODO: dopracować po dodaniu DB elif systemAct.getActType() == SystemActType.MEETING_LIST:
if systemAct.getActType() == SystemActType.MEETING_LIST: date = systemAct.getActParams()['date']
response = "" response = random.choice([f'Dnia {date} masz zaplanowane następujące spotkania:', f'W dniu {date} odbywają się następujące spotkania:'])
for s in slots: # TODO: pokazać prawdziwe spotkania po ew. dodaniu DB
date = s['date'] meetings = self.format_meeting(date, '10:00', 'Kawiarnia Portowa', ['Andrzej Duda', 'Aleksander Kwaśniewski'], 'Spotkanie biznesowe w sprawie tarczy antyrakietowej', None)
time = s['time'] self.DST.clear()
place = s['place'] return f'{response}\n{meetings}'
part_list = s['participants']
part = ""
for p in part_list:
part += p
part += ", "
part = part[:-2]
desc = s['description']
response += f'Spotkanie:\nDzień: {date}\nCzas: {time}\nMiejsce: {place}\nUczestnicy: {part}\nOpis: {desc}\n'
response += "--------------------"
return response
elif dialogue_state == UserActType.FREE_TIME: elif dialogue_state == UserActType.FREE_TIME:
if systemAct.getActType() == SystemActType.REQUEST: if systemAct.getActType() == SystemActType.REQUEST:
if "date" in systemAct.getActParams(): if 'date' in systemAct.getActParams():
return "W jakim okresie chcesz znaleźć wolny czas?" return random.choice(['Z jakiego dnia chcesz zobaczyć wolne godziny?', 'Z jakiego dnia chciałbyś zobaczyć godziny, w których nie masz spotkań?'])
# TODO: dopracować po dodaniu DB elif systemAct.getActType() == SystemActType.FREE_TIME:
if systemAct.getActType() == SystemActType.FREE_TIME: date = systemAct.getActParams()['date']
response = "" response = random.choice([f'W następujących godzinach, dnia {date} nie masz zaplanowanych spotkań:', f'W dniu {date} następujące godziny są wolne od spotkań:'])
for s in slots: # TODO: pokazać prawdziwe godziny po ew. dodaniu DB
date = s['date'] meeting_hours = '00:00-08:00\n10:00-16:00\n18:00-24:00'
time = s['time'] self.DST.clear()
response += f'Spotkanie:\nDzień: {date}\nCzas: {time}\n' return f'{response}\n{meeting_hours}'
return response
elif systemAct.getActType() == SystemActType.AFFIRM: elif systemAct.getActType() == SystemActType.AFFIRM:
if "create_meeting" in systemAct.getActParams():
return "Spotkanie zostało dodane"
if "update_meeting" in systemAct.getActParams(): if "update_meeting" in systemAct.getActParams():
return "Spotkanie zostało zaktualizowane" task_type_1 = 'zaktualizowane'
if "cancel_meeting" in systemAct.getActParams(): task_type_2 = 'Zaktualizowanie'
return "Spotkanie zostało odwołane" elif "cancel_meeting" in systemAct.getActParams():
task_type_1 = 'odwołane'
task_type_2 = 'Odwołanie'
else:
task_type_1 = 'dodane'
task_type_2 = 'Dodanie'
return random.choice([f'Spotkanie zostało pomyślnie {task_type_1}.', f'{task_type_2} spotkania przebiegło pomyślnie.'])
elif systemAct.getActType() == SystemActType.REQMORE: elif systemAct.getActType() == SystemActType.REQMORE:
if "create_meeting" in systemAct.getActParams(): if "create_meeting" in systemAct.getActParams():
return "Spotkanie zostało odrzucone. Mogę pomóc w czymś jeszcze?" response = 'Tworzenie spotkania zostało przerwane. '
if "update_meeting" in systemAct.getActParams(): elif "update_meeting" in systemAct.getActParams():
return "Aktualizacja spotkania została anulowana. Mogę pomóc w czymś jeszcze?" response = 'Aktualizacja spotkania została przerwana. '
if "cancel_meeting" in systemAct.getActParams(): elif "cancel_meeting" in systemAct.getActParams():
return "Odwoływanie spotkania zostało anulowane. Mogę pomóc w czymś jeszcze?" response = 'Odwoływanie spotkania zostało przerwane. '
if "meeting_list" in systemAct.getActParams() or "free_time" in systemAct.getActParams(): else:
return "Mogę pomóc w czymś jeszcze?" response = ''
return random.choice([f'{response}Czy mogę Ci w czymś jeszcze pomóc?', f'{response}Czy jest jeszcze coś co mogę dla Ciebie zrobić?'])
else: else:
if systemAct.getActType() == SystemActType.WELCOME_MSG: if systemAct.getActType() == SystemActType.WELCOME_MSG:
return "Cześć" introduction = 'Nazywam się Janusz i jestem twoim asystentem kalendarza spotkań.'
if systemAct.getActType() == SystemActType.REQMORE: return random.choice([f'Cześć. {introduction}', f'Dzień dobry. {introduction}', f'Witam. {introduction}'])
return "Czy mogę Ci w czymś jeszcze pomóc?" elif systemAct.getActType() == SystemActType.BYE:
if systemAct.getActType() == SystemActType.BYE: return random.choice(['Do widzenia.', 'Miłego dnia.'])
return "Do widzenia." elif systemAct.getActType() == SystemActType.NOT_UNDERSTOOD:
if systemAct.getActType() == SystemActType.NOT_UNDERSTOOD: try_again = 'Spróbuj swoją wypowiedź sformułować w inny sposób.'
return "Nie rozumiem o czym mówisz." return random.choice([f'Nie rozumiem o czym mówisz. {try_again}', f'Nie zrozumiałem twojej ostatniej wypowiedzi. {try_again}', f'Twoja ostatnia prośba była dla mnie nie zrozumiała. {try_again}'])
# TODO: Not implemented in DP
# if systemAct.getActType() == SystemActType.INFORM:
# if "name" in systemAct.getActParams():
# return "Nazywam się Janusz"
raise Exception("SystemAct:{} not recognized".format(systemAct)) raise Exception("SystemAct:{} not recognized".format(systemAct))

View File

@ -23,7 +23,7 @@
# text: cześć # text: cześć
# intent: hello # intent: hello
# slots: # slots:
1 siema hello NoLabel 1 cześć hello NoLabel
# text: do widzenia # text: do widzenia
# intent: bye # intent: bye
@ -484,6 +484,18 @@
7 prac inform/description I-description 7 prac inform/description I-description
8 projektowych inform/description I-description 8 projektowych inform/description I-description
# text: Proszę jako opis dodać spotkanie dotyczące zakupu firmy
# intent: inform/description
# slots:
1 Proszę inform/description NoLabel
2 jako inform/description NoLabel
3 opis inform/description NoLabel
4 dodać inform/description NoLabel
5 spotkanie inform/description B-description
6 dotyczące inform/description I-description
7 zakupu inform/description I-description
8 firmy inform/description I-description
# text: Spotkanie będzie dotyczyło omówienia strategii biznesowej # text: Spotkanie będzie dotyczyło omówienia strategii biznesowej
# intent: inform/description # intent: inform/description
# slots: # slots:
@ -641,6 +653,22 @@
10 salka meeting/create B-place 10 salka meeting/create B-place
11 A meeting/create I-place 11 A meeting/create I-place
# text: proszę ustawić spotkanie z Jan Nowak 24 grudnia 2022 o godzinie 21.30
# intent: meeting/create
# slots:
1 proszę meeting/create NoLabel
2 ustawić meeting/create NoLabel
3 spotkanie meeting/create NoLabel
4 z meeting/create NoLabel
5 Jan meeting/create B-participant
6 Nowak meeting/create I-participant
7 24 meeting/create B-date
8 grudnia meeting/create I-date
9 2022 meeting/create I-date
10 o meeting/create NoLabel
11 godzinie meeting/create NoLabel
11 21.30 meeting/create B-time
# text: chciałbym umówić spotkanie dzisiaj o godzinie 17.00 # text: chciałbym umówić spotkanie dzisiaj o godzinie 17.00
# intent: meeting/create # intent: meeting/create
# slots: # slots:
@ -650,7 +678,7 @@
4 dzisiaj meeting/create B-date 4 dzisiaj meeting/create B-date
5 o meeting/create B-date 5 o meeting/create B-date
6 godzinie meeting/create NoLabel 6 godzinie meeting/create NoLabel
7 17:00 meeting/create B-time 7 17.00 meeting/create B-time
# text: zapisz mi proszę spotkanie z 3 marca o 17 wizyta u lekarza # text: zapisz mi proszę spotkanie z 3 marca o 17 wizyta u lekarza
# intent: meeting/create # intent: meeting/create

View File

@ -20,7 +20,7 @@ if __name__ == "__main__":
dst.user_update(user_frame) dst.user_update(user_frame)
state, last_user_act, last_system_act = dst.get_dialogue_state() state, last_user_act, last_system_act = dst.get_dialogue_state()
slots = dst.get_dialogue_slots() slots = dst.get_dialogue_slots()
system_act = dp.chooseTactic() system_act = dp.choose_tactic()
print('------ stan ------') print('------ stan ------')
print(state, last_user_act, last_system_act) print(state, last_user_act, last_system_act)
@ -28,7 +28,7 @@ if __name__ == "__main__":
print(slots) print(slots)
print('------ wybrana akcja systemu ------') print('------ wybrana akcja systemu ------')
print(system_act) print(system_act)
system_response = nlg.generateResponse(system_act) system_response = nlg.generate_response(system_act)
print('------ wygenerowana odpowiedź systemu ------') print('------ wygenerowana odpowiedź systemu ------')
print(system_response) print(system_response)
print('-----------------------------------') print('-----------------------------------')