From 49e472b258679339f255a51f764e610b1388cbc0 Mon Sep 17 00:00:00 2001 From: MikolajPaterka Date: Tue, 7 Jun 2022 20:48:37 +0200 Subject: [PATCH] natural language genrator vol 1 --- semantic_parser/gramatics/bye.jsgf | 2 +- semantic_parser/gramatics/number.jsgf | 7 +++ semantic_parser/gramatics/repo.jsgf | 7 +++ semantic_parser/parser.py | 12 +++-- system_mockup/generator_jezyka_nautalnego.py | 52 ++++++++++++++++---- 5 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 semantic_parser/gramatics/number.jsgf create mode 100644 semantic_parser/gramatics/repo.jsgf diff --git a/semantic_parser/gramatics/bye.jsgf b/semantic_parser/gramatics/bye.jsgf index bc4bf10..21587f3 100644 --- a/semantic_parser/gramatics/bye.jsgf +++ b/semantic_parser/gramatics/bye.jsgf @@ -4,4 +4,4 @@ grammar bye; public = ; - = do widzenia | do zobaczenia | bye; + = do widzenia | do zobaczenia | bye | zegnaj; \ No newline at end of file diff --git a/semantic_parser/gramatics/number.jsgf b/semantic_parser/gramatics/number.jsgf new file mode 100644 index 0000000..dcc5126 --- /dev/null +++ b/semantic_parser/gramatics/number.jsgf @@ -0,0 +1,7 @@ +#JSGF V1.0 UTF-8 pl; + +grammar number; + +public = [ostatnich] {liczba}; + + = (dwa | dwoch | dwojki | dwojki) | (trzy | trzech | trojki ) | (cztery | czterech) | (piec | pieciu ) | (szesc | szesciu ) | (siedem | siedmiu) | (osiem | osmiu) | (dziewiec | dziewieciu ); diff --git a/semantic_parser/gramatics/repo.jsgf b/semantic_parser/gramatics/repo.jsgf new file mode 100644 index 0000000..d2853f7 --- /dev/null +++ b/semantic_parser/gramatics/repo.jsgf @@ -0,0 +1,7 @@ +#JSGF V1.0 UTF-8 pl; + +grammar repo; + +public = {repozytoria}; + + = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia; \ No newline at end of file diff --git a/semantic_parser/parser.py b/semantic_parser/parser.py index f7c9003..e42f11c 100644 --- a/semantic_parser/parser.py +++ b/semantic_parser/parser.py @@ -44,18 +44,20 @@ def nlu(utterance): #result = nlu('w czym możesz mi pomóc') #result = nlu('jakie są nowe pull requesty') -#result = nlu('ile jest nowych pull requestów') +#result = nlu('ile jest nowych pull requestow') #result = nlu('pokaż mi nowe pow z lipca') #result = nlu('przedstaw mi nowe issues z trzech miesiecy w Zajęcia AI') -#esult = nlu('siemanko') -#result = nlu('bye') +#result = nlu('siemanko') +#result = nlu('zegnaj') #result = nlu('pokaż mi testy od lutego w Zajęcia AI') -#result = nlu('wyświetl mi test w sierpniu w Projekt - sklep') +#result = nlu('powiedz co nowego na moim repozytorium Zajęcia AI') #result = nlu('wyświetl mi trzy nowe powiadomienia w lutym') -#esult = nlu('przedstaw nowe pull requesty') +#result = nlu('przedstaw nowe pull requesty') +#result = nlu('z ostatnich trzech miesiecy') +#result = nlu('ostatnich czterech') #print(result) \ No newline at end of file diff --git a/system_mockup/generator_jezyka_nautalnego.py b/system_mockup/generator_jezyka_nautalnego.py index 6359924..4995ef4 100644 --- a/system_mockup/generator_jezyka_nautalnego.py +++ b/system_mockup/generator_jezyka_nautalnego.py @@ -1,25 +1,59 @@ from taktyka_dialogu import Questions +import random -welcome = 'Witaj!' -unknown = "Nie rozumiem." -end = "Żegnaj!" -help = "Obsługuję przekazywanie informacji z systemu GitHub - repozytoria, pull requesty, issue, powiadomienia." +welcome = ['Witaj!', + "Cześć", + "Hello", + "Hej", + "Dzień dobry", + "Hey"] + +unknown = ["Nie rozumiem.", + "Ubierz to w inne słowa.", + "Nie wiem co masz na myśli.", + "Powiedz to innymi słowami", + "Powiedz co chciałbyś uzyskać"] + +bye = ["Żegnaj!", + "Do zobaczenia", + "Do widzenia", + "Miłego dnia", + "Do widzenia i miłego dnia" + "Narazie"] + +help = ["Obsługuję przekazywanie informacji z systemu GitHub - repozytoria, pull requesty, issue, powiadomienia."] #todo dodać więcej odpowiedzi +time = ["Z jakiego czasu?", "Z jakiego okresu?", "Podaj z jakiego przedziału czasowego"] +repo = ["Z jakiego repozytorium", "Wskaż repozytorium", "Podaj z jakiego repozytorium chciałbyć otrzymać informacje", "Określ repozytorium"] +howmany = ["Ile ostatnich elemntów chcesz zobaczyć?", "Ile ostatnich elmentów wyświetlić?", "Ile ostatnich elemnetów pokazać?"] + +#error_time = ["Podano nie prawidłowy czas, popraw ramy czasowe", "Czas jest nie prawidłowy, podaj ponownie", "Podaj przedział czasowy jeszcze raz"] +#error_repo = ["Podano nieprawidłową nazwę repozytorium", "Podaj ponownie nazwę repozytorium, ponieważ podania nie prawidłową"] + #todo generator powinien przyjmować zwrotkę z taktyki dialogu + def generator_jezyka_nautalnego(frame, question, state): if question != Questions.NONE: #ask additional questions if question == Questions.TIME: - print("Z jakiego czasu?") + print(random.choice(time)) + if question == Questions.REPO: + print(random.choice(repo)) + """ + if question == Questions.HOWMANY: + print(random.choice(howmany)) + """ + + else: #dont ask questions if frame['act'] == "hello": - print(welcome) + print(random.choice(welcome)) elif frame['act'] == "bye": - print(end) + print(random.choice(bye)) elif frame['act'] == "pomoc": - print(help) + print(random.choice(help)) else: - print(unknown) + print(random.choice(unknown))