Fully working NLU with book

Teraz wystarczy dodać następne kwestie w "book.jsfg"
This commit is contained in:
Dominik 2021-05-09 21:05:16 +02:00
parent aaadcecbd2
commit 7b53ff1361
2 changed files with 11 additions and 4 deletions

View File

@ -46,9 +46,11 @@ class NLU: #Natural Language Understanding
def test_nlu(self, utterance): def test_nlu(self, utterance):
matched = self.book_grammar.find_matching_rules(utterance) matched = self.book_grammar.find_matching_rules(utterance)
print(matched)
if matched: if matched:
return self.get_dialog_act(matched[0]) return self.get_dialog_act(matched[0])
else: else:
return {'act': 'null', 'slots': []} return {'act': 'null', 'slots': []}
@ -134,7 +136,7 @@ class Janet:
self.nlg = NLG(self.acts, self.arguments) self.nlg = NLG(self.acts, self.arguments)
self.dp = DP(self.acts, self.arguments) self.dp = DP(self.acts, self.arguments)
self.dst = DST(self.acts, self.arguments) self.dst = DST(self.acts, self.arguments)
self.nlu = NLU(self.acts, self.arguments, jsgf.parse_grammar_file('test_book.jsgf')) self.nlu = NLU(self.acts, self.arguments, jsgf.parse_grammar_file('book.jsgf'))
def test(self, command): def test(self, command):
out = self.nlu.test_nlu(command) out = self.nlu.test_nlu(command)
@ -147,7 +149,8 @@ class Janet:
return self.nlg.change_to_text(dest_act) return self.nlg.change_to_text(dest_act)
janet = Janet() janet = Janet()
print(janet.test('chciałbym zarezerwować stolik na jutro na godzinę dziesiątą dla trzech osób')) print(janet.test('chciałbym się umówić na wizytę do Piotra Pająka na jutro')) #Testowy print na start
while(1): while(1):
print('\n')
text = input("Wpisz tekst: ") text = input("Wpisz tekst: ")
print(janet.test(text)) print(janet.test(text))

View File

@ -4,9 +4,13 @@ grammar book;
public <greeting> = hej | cześć | elo | dzień dobry | witam | siemanko | siemanko witam w mojej kuchni | gitara siema; public <greeting> = hej | cześć | elo | dzień dobry | witam | siemanko | siemanko witam w mojej kuchni | gitara siema;
<appointment> = chciałbym się umówić na wizytę <doctor> <dzien_rezerwacji>; public <appointment> = chciałbym się umówić na wizytę <doctor> <dzien_rezerwacji>;
<doctor> = do [imie_lekarza] {doc_list}; public <appointment_test> = chciałbym się umówić na wizytę <dzien_rezerwacji>;
<doctor> = do <imie_lekarza> {doctor_name};
<imie_lekarza> = Jana Kolano | Tomasza Łokieto | Piotra Pająka;
<dzien_rezerwacji> = na <dzien> {day}; <dzien_rezerwacji> = na <dzien> {day};