Merge remote-tracking branch 'origin/feature/combine_semantic_parser'
This commit is contained in:
commit
3624d1e9b1
@ -4,11 +4,11 @@ grammar brefing;
|
|||||||
|
|
||||||
public <brefing> = <action> {action} (<git> {git} | <repo> {repo});
|
public <brefing> = <action> {action} (<git> {git} | <repo> {repo});
|
||||||
|
|
||||||
<repozytoria> = Gra - kółko i krzyżyk | Zajęcia AI | Projekt - sklep | super_stronka_internetowa | nazwaRepozytorium | pizza | zajecia;
|
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
|
||||||
|
|
||||||
<git> = gicie | githubie | GitHubie | Githubie;
|
<git> = gicie | githubie | githubie ;
|
||||||
|
|
||||||
<action> = co nowego na moim | co nowego w moich | opowiedz mi co się u mnie działo na;
|
<action> = co nowego na moim | co nowego w moich | opowiedz mi co sie u mnie dzialo na;
|
||||||
|
|
||||||
<repo> = <repozytoria> {repozytoria};
|
<repo> = <repozytoria> {repozytoria};
|
||||||
|
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
|
|
||||||
grammar bye;
|
grammar bye;
|
||||||
|
|
||||||
public <bey_zapytanie> = <words_bye> {words_bye};
|
public <bye> = <words_bye>;
|
||||||
|
|
||||||
<words_bye> = Do widzenia | do widzenia | cześć | na razie | hej;
|
<words_bye> = do widzenia;
|
||||||
|
7
semantic_parser/gramatics/hello.jsgf
Normal file
7
semantic_parser/gramatics/hello.jsgf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#JSGF V1.0 UTF-8 pl;
|
||||||
|
|
||||||
|
grammar hello;
|
||||||
|
|
||||||
|
public <hello> = <words_hello>;
|
||||||
|
|
||||||
|
<words_hello> = czesc | hej;
|
@ -2,23 +2,23 @@
|
|||||||
|
|
||||||
grammar issues;
|
grammar issues;
|
||||||
|
|
||||||
public <issue> = (pokaż mi | wyświetl | powiedz mi o) [nowe | nowych] <issues> [<time>] w <repo>;
|
public <issue> = (pokaz mi | wyswietl | powiedz mi o) [nowe | nowych] <issues> [<time>] w <repo>;
|
||||||
|
|
||||||
<repozytoria> = Gra - kółko i krzyżyk | Zajęcia AI | Projekt - sklep | super_stronka_internetowa | nazwaRepozytorium | pizza | zajecia;
|
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
|
||||||
|
|
||||||
<time> = <time_when> {time_when} [ostatniego | ostatnich] [<liczba> {liczba}] <timeunit> {timeunit};
|
<time> = <time_when> {time_when} [ostatniego | ostatnich] [<liczba> {liczba}] <timeunit> {timeunit};
|
||||||
|
|
||||||
<time_when> = z | od | ze | w;
|
<time_when> = z | od | ze | w;
|
||||||
|
|
||||||
<timeunit> = (miesiąca | miesięcy | <miesiac>) | tygodni | miesięcy | dni;
|
<timeunit> = (miesiaca | miesiecy | <miesiac>) | tygodni | miesiecy | dni;
|
||||||
|
|
||||||
<miesiac> = (styczeń | styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecień | kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpień | sierpien | sierpnia | sierpniu) | (wrzesień | wrzesien | wrzesieniu | wrzesnia) | (październik | pazdziernik | październiku | października) | (listopad | listopada | listopadzie) | (grudzień | grudzien | grudnia | grudniu);
|
<miesiac> = (styczen | styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecien | kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpien | sierpien | sierpnia | sierpniu) | (wrzesien | wrzesien | wrzesieniu | wrzesnia) | (pazdziernik | pazdziernik | pazdzierniku | pazdziernika) | (listopad | listopada | listopadzie) | (grudzien | grudzien | grudnia | grudniu);
|
||||||
|
|
||||||
<new> = [nowe] | [nowych];
|
<new> = [nowe] | [nowych];
|
||||||
|
|
||||||
<repo> = <repozytoria> {repozytoria};
|
<repo> = <repozytoria> {repozytoria};
|
||||||
|
|
||||||
<liczba> = (dwa | dwóch | dwójki | dwojki) | (trzy | trzech | trójki ) | (cztery | czterech) | (pieć | pięciu | pieciu) | (sześć | sześciu | szesciu) | (siedem| siedmiu) | (osiem | ośmiu) | (dziewieć | dziewięciu | dziewieciu);
|
<liczba> = (dwa | dwoch | dwojki) | (trzy | trzech | trojki ) | (cztery | czterech) | (piec | pieciu ) | (szesc | szesciu ) | (siedem| siedmiu) | (osiem | osmiu) | (dziewiec | dziewieciu );
|
||||||
|
|
||||||
<issues> = issue | issues;
|
<issues> = issue | issues;
|
||||||
|
|
||||||
|
@ -8,13 +8,13 @@ public <notifications> = pokaz mi [nowe] <powiadomienia> [<time>];
|
|||||||
|
|
||||||
<time_when> = z | od | ze | w;
|
<time_when> = z | od | ze | w;
|
||||||
|
|
||||||
<timeunit> = (miesiąca | miesięcy | <miesiac>) | tygodni | miesięcy | dni;
|
<timeunit> = (miesiaca | miesiecy | <miesiac>) | tygodni | miesiecy | dni;
|
||||||
|
|
||||||
<liczba> = (dwa | dwóch | dwójki | dwojki) | (trzy | trzech | trójki ) | (cztery | czterech) | (pieć | pięciu | pieciu) | (sześć | sześciu | szesciu) | (siedem| siedmiu) | (osiem | ośmiu) | (dziewieć | dziewięciu | dziewieciu);
|
<liczba> = (dwa | dwoch | dwojki | dwojki) | (trzy | trzech | trojki ) | (cztery | czterech) | (piec | pieciu ) | (szesc | szesciu ) | (siedem | siedmiu) | (osiem | osmiu) | (dziewiec | dziewieciu );
|
||||||
|
|
||||||
<powiadomienia> = notif | pow | powiadomienia | notification | notifications;
|
<powiadomienia> = notif | pow | powiadomienia | notification | notifications;
|
||||||
|
|
||||||
<miesiac> = (styczeń | styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecień | kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpień | sierpien | sierpnia | sierpniu) | (wrzesień | wrzesien | wrzesieniu | wrzesnia) | (październik | pazdziernik | październiku | października) | (listopad | listopada | listopadzie) | (grudzień | grudzien | grudnia | grudniu);
|
<miesiac> = (styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpien | sierpnia | sierpniu) | (wrzesien | wrzesieniu | wrzesnia) | (pazdziernik | październiku | pazdziernika) | (listopad | listopada | listopadzie) | (grudzien | grudnia | grudniu);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
grammar pomoc;
|
grammar pomoc;
|
||||||
|
|
||||||
public <pomoc_zapytanie> = jakie są dostępne <functions> {functions} | w czym możesz mi <help> {help};
|
public <pomoc_zapytanie> = jakie sa dostepne <functions> {functions} | w czym mozesz mi <help> {help};
|
||||||
|
|
||||||
<help> = pomoc | pomóc;
|
<help> = pomoc ;
|
||||||
|
|
||||||
<functions> = komenda | komendy | funckja | funkcje | polecenie | polecenia;
|
<functions> = komenda | komendy | funckja | funkcje | polecenie | polecenia;
|
||||||
|
@ -4,12 +4,12 @@ grammar pullrequest;
|
|||||||
|
|
||||||
public <pull_request_zapytanie> = <action> {action} <new> <pullrequest> [w <repo> {repo}];
|
public <pull_request_zapytanie> = <action> {action} <new> <pullrequest> [w <repo> {repo}];
|
||||||
|
|
||||||
<repozytoria> = Gra - kółko i krzyżyk | Zajęcia AI | Projekt - sklep | super_stronka_internetowa | nazwaRepozytorium | pizza | zajecia;
|
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
|
||||||
|
|
||||||
<new> = [nowe] | [nowych];
|
<new> = [nowe] | [nowych];
|
||||||
|
|
||||||
<repo> = <repozytoria> {repozytoria};
|
<repo> = <repozytoria> {repozytoria};
|
||||||
|
|
||||||
<pullrequest> = pull requesty | pull requestów;
|
<pullrequest> = pull requesty | pull requestow;
|
||||||
|
|
||||||
<action> = ile jest | jakie są;
|
<action> = ile jest | jakie sa;
|
||||||
|
@ -2,24 +2,24 @@
|
|||||||
|
|
||||||
grammar tests;
|
grammar tests;
|
||||||
|
|
||||||
public <tests> = (pokaż mi | wyświetl mi | powiedz mi o) [<new>] <test> {test} [<time>] w <repo>;
|
public <tests> = (pokaz mi | wyswietl mi | powiedz mi o) [<new>] <test> {test} [<time>] w <repo>;
|
||||||
|
|
||||||
<repozytoria> = Gra - kółko i krzyżyk | Zajęcia AI | Projekt - sklep | super_stronka_internetowa | nazwaRepozytorium | pizza | zajecia;
|
<repozytoria> = gra - kolko i krzyzyk | zajęcia ai | projekt - sklep | super_stronka_internetowa | nazwarepozytorium | pizza | zajecia;
|
||||||
|
|
||||||
<time> = <time_when> {time_when} [ostatniego | ostatnich] [<liczba> {liczba}] <timeunit> {timeunit};
|
<time> = <time_when> {time_when} [ostatniego | ostatnich] [<liczba> {liczba}] <timeunit> {timeunit};
|
||||||
|
|
||||||
<time_when> = z | od | ze | w;
|
<time_when> = z | od | ze | w;
|
||||||
|
|
||||||
<timeunit> = (miesiąca | miesięcy | <miesiac>) | tygodni | miesięcy | dni;
|
<timeunit> = (miesiaca | miesiecy | <miesiac>) | tygodni | miesiecy | dni;
|
||||||
|
|
||||||
<miesiac> = (styczeń | styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecień | kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpień | sierpien | sierpnia | sierpniu) | (wrzesień | wrzesien | wrzesieniu | wrzesnia) | (październik | pazdziernik | październiku | października) | (listopad | listopada | listopadzie) | (grudzień | grudzien | grudnia | grudniu);
|
<liczba> = (dwa | dwoch | dwojki | dwojki) | (trzy | trzech | trojki ) | (cztery | czterech) | (piec | pieciu ) | (szesc | szesciu ) | (siedem | siedmiu) | (osiem | osmiu) | (dziewiec | dziewieciu );
|
||||||
|
|
||||||
|
<miesiac> = (styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpien | sierpnia | sierpniu) | (wrzesien | wrzesieniu | wrzesnia) | (pazdziernik | październiku | pazdziernika) | (listopad | listopada | listopadzie) | (grudzien | grudnia | grudniu);
|
||||||
|
|
||||||
<new> = [nowe] | [nowych];
|
<new> = [nowe] | [nowych];
|
||||||
|
|
||||||
<repo> = <repozytoria> {repozytoria};
|
<repo> = <repozytoria> {repozytoria};
|
||||||
|
|
||||||
<liczba> = (dwa | dwóch | dwójki | dwojki) | (trzy | trzech | trójki ) | (cztery | czterech) | (pieć | pięciu | pieciu) | (sześć | sześciu | szesciu) | (siedem| siedmiu) | (osiem | ośmiu) | (dziewieć | dziewięciu | dziewieciu);
|
|
||||||
|
|
||||||
<test> = testy | testach | test;
|
<test> = testy | testach | test;
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,11 +6,9 @@ public <time> = <time_when> {time_when} [ostatniego | ostatnich] [<liczba> {lic
|
|||||||
|
|
||||||
<time_when> = z | od | ze | w;
|
<time_when> = z | od | ze | w;
|
||||||
|
|
||||||
<timeunit> = (miesiąca | miesięcy | <miesiac>) | tygodni | miesięcy | dni;
|
<timeunit> = (miesiaca | miesiecy | <miesiac>) | tygodni | miesiecy | dni;
|
||||||
|
|
||||||
<liczba> = (dwa | dwóch | dwójki | dwojki) | (trzy | trzech | trójki ) | (cztery | czterech) | (pieć | pięciu | pieciu) | (sześć | sześciu | szesciu) | (siedem| siedmiu) | (osiem | ośmiu) | (dziewieć | dziewięciu | dziewieciu);
|
|
||||||
|
|
||||||
<miesiac> = (styczeń | styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecień | kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpień | sierpien | sierpnia | sierpniu) | (wrzesień | wrzesien | wrzesieniu | wrzesnia) | (październik | pazdziernik | październiku | października) | (listopad | listopada | listopadzie) | (grudzień | grudzien | grudnia | grudniu);
|
|
||||||
|
|
||||||
|
<liczba> = (dwa | dwoch | dwojki | dwojki) | (trzy | trzech | trojki ) | (cztery | czterech) | (piec | pieciu ) | (szesc | szesciu ) | (siedem | siedmiu) | (osiem | osmiu) | (dziewiec | dziewieciu );
|
||||||
|
|
||||||
|
<miesiac> = (styczen | stycznia | styczniu) | (luty | lutego | lutym) | (marzec | marca | marcu) | (kwiecien | kwietniu | kwietnia) | (maj | maja | maju) | (czerwiec | czerwca | czerwcu) | (lipiec | lipca | lipcu) | (sierpien | sierpnia | sierpniu) | (wrzesien | wrzesieniu | wrzesnia) | (pazdziernik | październiku | pazdziernika) | (listopad | listopada | listopadzie) | (grudzien | grudnia | grudniu);
|
||||||
|
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
hello_act = 'hello'
|
|
||||||
name_request_act = 'request(name)'
|
|
||||||
name_response_act = 'inform(name)'
|
|
||||||
help_response_act = 'helpresponse'
|
|
||||||
unknown_act = 'null'
|
|
@ -1,17 +1,47 @@
|
|||||||
import re
|
import jsgf
|
||||||
|
from os import listdir
|
||||||
|
from os.path import isfile, join
|
||||||
|
|
||||||
from acts import hello_act, name_request_act
|
mypath = "../semantic_parser/gramatics/"
|
||||||
|
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
|
||||||
|
|
||||||
hello = ['dzien dobry', 'dobry wieczor', 'witam', 'witaj', 'siema', 'elo', 'czesc']
|
grammars = []
|
||||||
request_name = ['imie', 'nazywasz']
|
|
||||||
question = ['\?$']
|
|
||||||
|
|
||||||
acts = {hello_act: [hello],
|
for grammarFile in onlyfiles:
|
||||||
name_request_act: [request_name, question]}
|
grammar = jsgf.parse_grammar_file(mypath + grammarFile)
|
||||||
|
grammars.append(grammar)
|
||||||
|
|
||||||
|
def get_dialog_act(rule):
|
||||||
|
slots = []
|
||||||
|
get_slots(rule.expansion, slots)
|
||||||
|
return {'act': rule.grammar.name, 'slots': slots}
|
||||||
|
|
||||||
|
def get_slots(expansion, slots):
|
||||||
|
if expansion.tag != '':
|
||||||
|
slots.append((expansion.tag, expansion.current_match))
|
||||||
|
return
|
||||||
|
|
||||||
|
for child in expansion.children:
|
||||||
|
get_slots(child, slots)
|
||||||
|
|
||||||
|
if not expansion.children and isinstance(expansion, jsgf.NamedRuleRef):
|
||||||
|
get_slots(expansion.referenced_rule.expansion, slots)
|
||||||
|
|
||||||
|
def nlu(utterance):
|
||||||
|
matched = None
|
||||||
|
for grammar in grammars:
|
||||||
|
matched = grammar.find_matching_rules(utterance)
|
||||||
|
if matched:
|
||||||
|
break
|
||||||
|
|
||||||
|
if matched:
|
||||||
|
return get_dialog_act(matched[0])
|
||||||
|
else:
|
||||||
|
return {'act': 'null', 'slots': []}
|
||||||
|
|
||||||
def analizator_jezyka_naturalnego(text):
|
def analizator_jezyka_naturalnego(text):
|
||||||
text = text_preprocess(text)
|
text = text_preprocess(text)
|
||||||
frame = act_check(text)
|
frame = nlu(text)
|
||||||
return frame
|
return frame
|
||||||
|
|
||||||
def text_preprocess(text):
|
def text_preprocess(text):
|
||||||
@ -29,18 +59,3 @@ def text_preprocess(text):
|
|||||||
text = text.replace("\t", " ")
|
text = text.replace("\t", " ")
|
||||||
text = text.replace(" ", " ")
|
text = text.replace(" ", " ")
|
||||||
return text
|
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
|
|
||||||
|
@ -1,18 +1,25 @@
|
|||||||
import acts as acts
|
from taktyka_dialogu import Questions
|
||||||
|
|
||||||
welcome = 'Witaj!'
|
welcome = 'Witaj!'
|
||||||
prompt = 'Zapytaj mnie o moje imię.'
|
|
||||||
resp = 'Nazywam się Dia.'
|
|
||||||
unknown = "Nie rozumiem."
|
unknown = "Nie rozumiem."
|
||||||
|
end = "Żegnaj!"
|
||||||
|
help = "Obsługuję przekazywanie informacji z systemu GitHub - repozytoria, pull requesty, issue, powiadomienia."
|
||||||
|
#todo dodać więcej odpowiedzi
|
||||||
|
|
||||||
|
#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?")
|
||||||
|
|
||||||
def generator_jezyka_nautalnego(frames):
|
|
||||||
for frame in frames:
|
|
||||||
if frame == acts.hello_act:
|
|
||||||
print(welcome, end=" ")
|
|
||||||
elif frame == acts.name_response_act:
|
|
||||||
print(resp, end=" ")
|
|
||||||
elif frame == acts.help_response_act:
|
|
||||||
print(prompt, end=" ")
|
|
||||||
else:
|
else:
|
||||||
print(unknown, end=" ")
|
#dont ask questions
|
||||||
print()
|
if frame['act'] == "hello":
|
||||||
|
print(welcome)
|
||||||
|
elif frame['act'] == "bye":
|
||||||
|
print(end)
|
||||||
|
elif frame['act'] == "pomoc":
|
||||||
|
print(help)
|
||||||
|
else:
|
||||||
|
print(unknown)
|
||||||
|
@ -1,17 +1,24 @@
|
|||||||
from acts import hello_act
|
|
||||||
|
|
||||||
|
|
||||||
dialogue_state = []
|
dialogue_state = []
|
||||||
|
iterator = 1
|
||||||
|
|
||||||
def monitor_stanu_dialogowego(frame):
|
#todo uporzadkować
|
||||||
|
def monitor_stanu_dialogowego(frame, questions):
|
||||||
|
global iterator
|
||||||
# Some frames can reset the dialogue state, like saying hello.
|
# Some frames can reset the dialogue state, like saying hello.
|
||||||
reset_state_if_needed(frame)
|
reset_state_if_needed(frame)
|
||||||
|
singleState = {
|
||||||
list(map(lambda x: dialogue_state.append(x), frame))
|
"iteration": iterator,
|
||||||
|
"frame": frame,
|
||||||
|
"questions": questions
|
||||||
|
}
|
||||||
|
dialogue_state.append(singleState)
|
||||||
|
iterator += 1
|
||||||
return dialogue_state
|
return dialogue_state
|
||||||
|
|
||||||
|
|
||||||
def reset_state_if_needed(frame):
|
def reset_state_if_needed(frame):
|
||||||
if hello_act in frame:
|
global iterator
|
||||||
|
if frame['act'] == "hello" or frame['act'] == "bye":
|
||||||
dialogue_state.clear()
|
dialogue_state.clear()
|
||||||
|
iterator = 1
|
||||||
|
|
||||||
|
@ -5,13 +5,19 @@ from generator_jezyka_nautalnego import generator_jezyka_nautalnego
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
running = True
|
running = True
|
||||||
|
state = []
|
||||||
|
|
||||||
while running:
|
while running:
|
||||||
text = input('>>>')
|
text = input('>>>')
|
||||||
|
|
||||||
frame = analizator_jezyka_naturalnego(text)
|
frame = analizator_jezyka_naturalnego(text)
|
||||||
state = monitor_stanu_dialogowego(frame)
|
#{'act': 'notifications', 'slots': [('time_when', None), ('liczba', ''), ('timeunit', None)]}
|
||||||
response_frames = taktyka_dialogu(state, frame)
|
|
||||||
generator_jezyka_nautalnego(response_frames)
|
questions = taktyka_dialogu(frame) # todo dodac stan
|
||||||
|
|
||||||
|
state = monitor_stanu_dialogowego(frame, questions)
|
||||||
|
|
||||||
|
generator_jezyka_nautalnego(frame, questions, state)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -1,32 +1,26 @@
|
|||||||
from os import stat
|
from enum import Enum
|
||||||
from re import S
|
|
||||||
from acts import *
|
class Questions(Enum):
|
||||||
|
TIME = "time"
|
||||||
|
REPO = "repo"
|
||||||
|
NONE = "none"
|
||||||
|
|
||||||
|
#todo taktyka ma zwracać bardziej złożony obiekt
|
||||||
|
def taktyka_dialogu(frame):
|
||||||
|
return questions(frame)
|
||||||
|
|
||||||
|
#todo dodac wiecej casow
|
||||||
|
#brac pod uwage stan
|
||||||
|
def questions(frame):
|
||||||
|
for slot in frame['slots']:
|
||||||
|
|
||||||
|
if slot[0] == "time_when" and slot[1] == None:
|
||||||
|
return Questions.TIME
|
||||||
|
|
||||||
|
if slot[0] == "repo" and (slot[1] == None or slot[1] == ""):
|
||||||
|
return Questions.REPO
|
||||||
|
|
||||||
|
return Questions.NONE
|
||||||
|
|
||||||
|
|
||||||
def check_condition(state, conditions, type=all):
|
#todo dodać mock github api
|
||||||
if type(i in state for i in conditions):
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def taktyka_dialogu(state, frame):
|
|
||||||
if should_respond_gently(frame):
|
|
||||||
return [hello_act, name_response_act]
|
|
||||||
if should_prompt(frame):
|
|
||||||
return [hello_act, help_response_act]
|
|
||||||
if should_respond_cold(frame):
|
|
||||||
return [name_response_act]
|
|
||||||
return [unknown_act]
|
|
||||||
|
|
||||||
|
|
||||||
def should_respond_gently(state):
|
|
||||||
return check_condition(state, [hello_act, name_request_act])
|
|
||||||
|
|
||||||
|
|
||||||
def should_prompt(state):
|
|
||||||
return check_condition(state, [hello_act], any)
|
|
||||||
|
|
||||||
|
|
||||||
def should_respond_cold(state):
|
|
||||||
return check_condition(state, [name_request_act])
|
|
Loading…
Reference in New Issue
Block a user