diff --git a/model/DialogueState.py b/model/DialogueState.py index 980bb2d..1e655e8 100644 --- a/model/DialogueState.py +++ b/model/DialogueState.py @@ -1,7 +1,6 @@ class DialogueState: - def init(self): + def __init__(self): self.currentActs = [] self.previousActs = [] - self.botName = 'Dia' - self.date = None \ No newline at end of file + self.date = None diff --git a/model/SystemActFrame.py b/model/SystemActFrame.py new file mode 100644 index 0000000..2f6c515 --- /dev/null +++ b/model/SystemActFrame.py @@ -0,0 +1,15 @@ +class SystemActFrame: + + def __init__(self, act, parameters): + self.act = act + self.parameters = parameters + + def __str__(self): + result = "" + result += "Act: " + self.act + " Parameters: { " + for index, parameter in enumerate(self.parameters): + result += parameter + if index < len(self.parameters) - 1: + result += ', ' + result += ' }' + return result diff --git a/presenter/Presenter.py b/presenter/Presenter.py index f837ab6..1f7fb01 100644 --- a/presenter/Presenter.py +++ b/presenter/Presenter.py @@ -1,9 +1,18 @@ +from presenter.chatbot_modules.DialogueStateTracker import DialogueStateTracker +from presenter.chatbot_modules.NaturalLanguageGeneration import NaturalLanguageGeneration from presenter.chatbot_modules.NaturalLanguageUnderstanding import NaturalLanguageUnderstanding +from presenter.chatbot_modules.DialoguePolicy import DialoguePolicy class Presenter: + dialogue_state_tracker = DialogueStateTracker() + nlu = NaturalLanguageUnderstanding() + policy = DialoguePolicy() + nlg = NaturalLanguageGeneration() def process_user_input(self, user_input): - nlu = NaturalLanguageUnderstanding() - user_frames = nlu.text_to_user_frame(user_input) - return '' + user_frames = self.nlu.text_to_user_frame(user_input) + dialogue_state = self.dialogue_state_tracker.processUserAct(user_frames) + system_frames = self.policy.resolve_system_acts(dialogue_state) + msg = self.nlg.generate_text(system_frames) + return msg diff --git a/presenter/chatbot_modules/DialoguePolicy.py b/presenter/chatbot_modules/DialoguePolicy.py index 6515838..954536e 100644 --- a/presenter/chatbot_modules/DialoguePolicy.py +++ b/presenter/chatbot_modules/DialoguePolicy.py @@ -1,10 +1,13 @@ -from model import DialogueState +from model.SystemActFrame import SystemActFrame + class DialoguePolicy: - pass - def init(self): - pass + def resolve_system_acts(self, dialogueState): + system_acts = [] + for act in dialogueState.currentActs: + if "request()" in act.act: + if 'imię' in act.parameters: + system_acts.append(SystemActFrame("inform()", ["imię"])) - def resolveSystemActs(self, dialogueState): - pass \ No newline at end of file + return system_acts diff --git a/presenter/chatbot_modules/DialogueStateTracker.py b/presenter/chatbot_modules/DialogueStateTracker.py index 78b4899..adf932b 100644 --- a/presenter/chatbot_modules/DialogueStateTracker.py +++ b/presenter/chatbot_modules/DialogueStateTracker.py @@ -1,40 +1,17 @@ -from model import DialogueState +from model.DialogueState import DialogueState + class DialogueStateTracker: - def init(self, dialogueState): - pass + def __init__(self): + self.dialogueState = DialogueState() - def processinformFrame(self, userActsFrame, dialogueState): - """ - - :param userActsFrame: - :param dialogueState: - :return: - """ - - - def processUserAct(self, userActsFrame, dialogueState): + def processUserAct(self, userActsFrame): """ :param userActsFrame: input of user acts incoming :return: dialogueState """ - dialogueState.currentActs=userActsFrame + self.dialogueState.currentActs = userActsFrame - if userActsFrame.act == 'hello()': - pass - elif userActsFrame.act == 'request': - pass - elif userActsFrame.act == 'inform': - dialogueState=self.processinformFrame(userActsFrame, dialogueState) - else: - pass - return dialogueState - - - # def setDialogueState(self, dialogueState): - # self.DialogueState=dialogueState - # - # def getDialogueState(self, dialogueState): - # return self.DialogueState \ No newline at end of file + return self.dialogueState diff --git a/presenter/chatbot_modules/NaturalLanguageGeneration.py b/presenter/chatbot_modules/NaturalLanguageGeneration.py index 8cdfd03..cba6f51 100644 --- a/presenter/chatbot_modules/NaturalLanguageGeneration.py +++ b/presenter/chatbot_modules/NaturalLanguageGeneration.py @@ -1,3 +1,9 @@ class NaturalLanguageGeneration: - def get_frame(self, input_from_user): - pass + + def generate_text(self, system_frames): + for system_frame in system_frames: + if system_frame.act == 'inform()': + if 'imię' in system_frame.parameters: + return 'Nazywam się Dia.' + else: + return 'Nie rozumiem co masz na myśli.' diff --git a/view/View.py b/view/View.py index f3e9d10..f94b4cb 100644 --- a/view/View.py +++ b/view/View.py @@ -5,9 +5,8 @@ def init_chat(): print('Witamy w systemie elektronicznej rezerwacji Biletów! W czym mogę pomóc?') user_input = input() result = Presenter().process_user_input(user_input) - for r in result: - print(r) + print(result) if __name__ == "__main__": - init_chat() \ No newline at end of file + init_chat()