From 0a03376129727314e7fa983efe54decf41f859bf Mon Sep 17 00:00:00 2001 From: Karol Idaszak Date: Tue, 19 Apr 2022 21:20:46 +0200 Subject: [PATCH] Implementation of Natural Language Understanding --- .../analizator_jezyka_naturalnego.py | 31 +++++++++++++++++++ system_mockup/generator_jezyka_nautalnego.py | 2 ++ system_mockup/monitor_stanu_dialogowego.py | 2 ++ system_mockup/system_dialogowy.py | 14 +++++++++ system_mockup/taktyka_dialogu.py | 2 ++ 5 files changed, 51 insertions(+) create mode 100644 system_mockup/analizator_jezyka_naturalnego.py create mode 100644 system_mockup/generator_jezyka_nautalnego.py create mode 100644 system_mockup/monitor_stanu_dialogowego.py create mode 100644 system_mockup/system_dialogowy.py create mode 100644 system_mockup/taktyka_dialogu.py diff --git a/system_mockup/analizator_jezyka_naturalnego.py b/system_mockup/analizator_jezyka_naturalnego.py new file mode 100644 index 0000000..0daff3d --- /dev/null +++ b/system_mockup/analizator_jezyka_naturalnego.py @@ -0,0 +1,31 @@ +import re + +def analizator_jezyka_naturalnego(text): + hello = ['dzie[ńn] dobry', 'dobry wiecz[oó]r', 'witam', 'witaj', 'siema', 'elo', 'cze[śs][ćc]'] + request_name = ['imi[eę]', 'nazywasz'] + question = ['\?$'] + + acts = {'hello': [hello], + 'request(name)': [request_name, question]} + text = text_preprocess(text) + frame = act_check(text) + return frame + +def text_preprocess(text): + text = text.lower() + return text + +def act_check(text): + frame = [] + for act, requirements in acts.items(): + req = [check_synonyms(synonyms, text) for synonyms in requirements] + if all(req): + frame.append(act) + return frame + +def check_synonyms(synonyms, text): + for expression in synonyms: + match = re.search(expression, text) + if match: + return True + return False diff --git a/system_mockup/generator_jezyka_nautalnego.py b/system_mockup/generator_jezyka_nautalnego.py new file mode 100644 index 0000000..f3ff2a2 --- /dev/null +++ b/system_mockup/generator_jezyka_nautalnego.py @@ -0,0 +1,2 @@ +def generator_jezyka_nautalnego(): + pass diff --git a/system_mockup/monitor_stanu_dialogowego.py b/system_mockup/monitor_stanu_dialogowego.py new file mode 100644 index 0000000..9946dc0 --- /dev/null +++ b/system_mockup/monitor_stanu_dialogowego.py @@ -0,0 +1,2 @@ +def monitor_stanu_dialogowego(): + pass diff --git a/system_mockup/system_dialogowy.py b/system_mockup/system_dialogowy.py new file mode 100644 index 0000000..07558e1 --- /dev/null +++ b/system_mockup/system_dialogowy.py @@ -0,0 +1,14 @@ +from analizator_jezyka_naturalnego import analizator_jezyka_naturalnego +from monitor_stanu_dialogowego import monitor_stanu_dialogowego +from taktyka_dialogu import taktyka_dialogu +from generator_jezyka_nautalnego import generator_jezyka_nautalnego + +def main(): + text = input('>>>') + frame = analizator_jezyka_naturalnego(text) + monitor_stanu_dialogowego(frame) + taktyka_dialogu() + generator_jezyka_nautalnego() + +if __name__ == '__main__': + main() diff --git a/system_mockup/taktyka_dialogu.py b/system_mockup/taktyka_dialogu.py new file mode 100644 index 0000000..19565cf --- /dev/null +++ b/system_mockup/taktyka_dialogu.py @@ -0,0 +1,2 @@ +def taktyka_dialogu(): + pass