Dodanie normalizacji do DSM

This commit is contained in:
Patryk Osiński 2024-06-07 15:49:41 +02:00
parent d02bd4b5ae
commit adfea71871

View File

@ -4,6 +4,11 @@ import json
import copy import copy
def normalize(value):
value = value.lower()
return ' '.join(value.split())
class DialogStateMonitor: class DialogStateMonitor:
def __init__(self, initial_state_file: str = '../attributes.json'): def __init__(self, initial_state_file: str = '../attributes.json'):
DST.__init__(self) DST.__init__(self)
@ -25,28 +30,28 @@ class DialogStateMonitor:
if frame.act == 'inform/order': if frame.act == 'inform/order':
new_order = dict() new_order = dict()
for slot in frame.slots: for slot in frame.slots:
new_order[slot.name] = slot.value new_order[slot.name] = normalize(slot.value)
self.__memory['order'].append(new_order) self.__memory['order'].append(new_order)
elif frame.act == 'inform/address': elif frame.act == 'inform/address':
for slot in frame.slots: for slot in frame.slots:
self.__memory['address'][slot.name] = slot.value self.__memory['address'][slot.name] = normalize(slot.value)
elif frame.act == 'inform/phone': elif frame.act == 'inform/phone':
for slot in frame.slots: for slot in frame.slots:
self.__memory['phone'][slot.name] = slot.value self.__memory['phone'][slot.name] = normalize(slot.value)
elif frame.act == 'inform/order-complete': elif frame.act == 'inform/order-complete':
self.__memory['order-complete'] = True self.__memory['order-complete'] = True
elif frame.act == 'inform/delivery': elif frame.act == 'inform/delivery':
for slot in frame.slots: for slot in frame.slots:
self.__memory['delivery'][slot.name] = slot.value self.__memory['delivery'][slot.name] = normalize(slot.value)
elif frame.act == 'inform/payment': elif frame.act == 'inform/payment':
for slot in frame.slots: for slot in frame.slots:
self.__memory['payment'][slot.name] = slot.value self.__memory['payment'][slot.name] = normalize(slot.value)
elif frame.act == 'inform/time': elif frame.act == 'inform/time':
for slot in frame.slots: for slot in frame.slots:
self.__memory['time'][slot.name] = slot.value self.__memory['time'][slot.name] = normalize(slot.value)
elif frame.act == 'inform/name': elif frame.act == 'inform/name':
for slot in frame.slots: for slot in frame.slots:
self.__memory['name'][slot.name] = slot.value self.__memory['name'][slot.name] = normalize(slot.value)
def read(self) -> dict: def read(self) -> dict:
return self.__memory return self.__memory