Update 'nlu.py'

This commit is contained in:
Patryk Gałka 2023-04-20 22:38:00 +02:00
parent 2f0d3350e9
commit 0595bba4d8

30
nlu.py
View File

@ -1,11 +1,16 @@
import jsgf
order_grammar = jsgf.parse_grammar_file('order.jsgf')
order_grammar
from os import listdir
from os.path import isfile, join
utterance = 'chciałbym zamowic pizze vesuvio XXL na dwie osoby'
matched = order_grammar.find_matching_rules(utterance)
gram_dir = './gramatyki/'
grammar_files = [file for file in listdir(gram_dir) if isfile(join(gram_dir, file))]
grammars = []
for grammarFile in grammar_files:
grammar = jsgf.parse_grammar_file(gram_dir + grammarFile)
grammars.append(grammar)
def get_dialog_act(rule):
@ -26,12 +31,19 @@ def get_slots(expansion, slots):
get_slots(expansion.referenced_rule.expansion, slots)
def nlu(_utterance):
_matched = order_grammar.find_matching_rules(_utterance)
def nlu(utterance):
matched = None
for _grammar in grammars:
matched = _grammar.find_matching_rules(utterance)
if matched:
break
if _matched:
if matched:
return get_dialog_act(matched[0])
else:
return {'act': 'null', 'slots': []}
print(nlu('chciałbym zamowic pizze vesuvio XXL na dwie osoby'))
print(nlu('chciałbym zamowic pizze vesuvio XXL na dwie osoby'))
print(nlu('na dowoz'))
print(nlu('dowoz'))