From 0de57cc83073cde4b6948445cfe014256a1ab1a1 Mon Sep 17 00:00:00 2001 From: Maciej Sobkowiak Date: Mon, 26 Apr 2021 00:29:07 +0200 Subject: [PATCH] Added basic mockups --- .gitignore | 2 ++ DialoguePolicy.py | 18 ++++++++++++++++++ DialogueStateTracker.py | 19 +++++++++++++++++++ NaturalLAnguageGeneration.py | 15 +++++++++++++++ NaturalLanguageUnderstanding.py | 18 +++++------------- main.py | 18 ++++++++++++++++++ 6 files changed, 77 insertions(+), 13 deletions(-) create mode 100644 .gitignore create mode 100644 DialoguePolicy.py create mode 100644 DialogueStateTracker.py create mode 100644 NaturalLAnguageGeneration.py create mode 100644 main.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0b81a20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/venv +__pycache__ \ No newline at end of file diff --git a/DialoguePolicy.py b/DialoguePolicy.py new file mode 100644 index 0000000..d8bdc24 --- /dev/null +++ b/DialoguePolicy.py @@ -0,0 +1,18 @@ +from UserActType import UserActType +from UserAct import UserAct + + +class DP: + """ + Moduł, który tworzy reprezentację tekstową aktu systemowego wybranego przez taktykę dialogu. + Wejście: Akt systemu (rama) + Wyjście: Tekst + """ + + def __init__(self): + pass + + def chooseTactic(self, frameList=None): + if frameList is not None: + systemAct = [0] + return systemAct diff --git a/DialogueStateTracker.py b/DialogueStateTracker.py new file mode 100644 index 0000000..e563e1d --- /dev/null +++ b/DialogueStateTracker.py @@ -0,0 +1,19 @@ +from UserActType import UserActType +from UserAct import UserAct + + +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): + self.frameList = [] + + def addFrame(self, frame): + self.frameList.append(frame) + + def getFrames(self): + return self.frameList diff --git a/NaturalLAnguageGeneration.py b/NaturalLAnguageGeneration.py new file mode 100644 index 0000000..dea92d3 --- /dev/null +++ b/NaturalLAnguageGeneration.py @@ -0,0 +1,15 @@ +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): + pass + + def toText(self, systemAct): + if(systemAct == [0]): + return "Witaj, nazywam się XXX" + else: + return "???" diff --git a/NaturalLanguageUnderstanding.py b/NaturalLanguageUnderstanding.py index f54e21a..1863824 100644 --- a/NaturalLanguageUnderstanding.py +++ b/NaturalLanguageUnderstanding.py @@ -4,6 +4,11 @@ import re class NLU: + """ + Moduł odpowiedzialny za analizę tekstu. W wyniku jego działania tekstowa reprezentacja wypowiedzi użytkownika zostaje zamieniona na jej reprezentację semantyczną, najczęściej w postaci ramy. + Wejście: Tekst + Wyjście: Akt użytkownika (rama) + """ def __init__(self): self.__actParsePatternList = [ @@ -31,16 +36,3 @@ class NLU: if match: return UserAct(actType, actParams) return UserAct(UserActType.INVALID) - - -if __name__ == "__main__": - - nlu = NLU() - - a = nlu.parseUserInput("czesc") - b = nlu.parseUserInput("jak masz na imie") - c = nlu.parseUserInput("zegnaj") - - print(a) - print(b) - print(c) diff --git a/main.py b/main.py new file mode 100644 index 0000000..01952d3 --- /dev/null +++ b/main.py @@ -0,0 +1,18 @@ +from NaturalLanguageUnderstanding import NLU +from NaturalLAnguageGeneration import NLG +from DialogueStateTracker import DST +from DialoguePolicy import DP + +if __name__ == "__main__": + + nlu = NLU() + dst = DST() + nlg = NLG() + dp = DP() + + userFrame = nlu.parseUserInput("czesc") + dst.addFrame(userFrame) + systemAct = dp.chooseTactic(dst.getFrames()) + text = nlg.toText(systemAct) + + print(text)