add first grammar and nlu from example
This commit is contained in:
parent
cfbb0317af
commit
b2a2cd6b9f
40
example_nlu.py
Normal file
40
example_nlu.py
Normal file
@ -0,0 +1,40 @@
|
||||
import jsgf
|
||||
|
||||
book_grammar = jsgf.parse_grammar_file('grammar1.jsgf')
|
||||
book_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 = book_grammar.find_matching_rules(utterance)
|
||||
|
||||
if matched:
|
||||
return get_dialog_act(matched[0])
|
||||
else:
|
||||
return {'act': 'null', 'slots': []}
|
||||
|
||||
|
||||
|
||||
|
||||
utterance = 'chciałbym zarezerwować stolik na jutro na godzinę dwunastą trzydzieści na pięć osób'
|
||||
matched = book_grammar.find_matching_rules(utterance)
|
||||
matched
|
||||
|
||||
nlu('chciałbym zarezerwować stolik na jutro na godzinę dziesiątą dla trzech osób')
|
||||
|
||||
get_dialog_act(matched[0])
|
107
grammar1.jsgf
Normal file
107
grammar1.jsgf
Normal file
@ -0,0 +1,107 @@
|
||||
#JSGF V1.0;
|
||||
|
||||
/
|
||||
* Polecenia użytkownika
|
||||
*/
|
||||
public <command> = (dodaj | usuń | zaktualizuj | przeczytaj | kontynuuj | przejdź_do | sprawdź | zakończ);
|
||||
|
||||
/
|
||||
* Lista produktów
|
||||
*/
|
||||
public <products> = (jajka | chleb | mleko | ser | woda | cukier | sól | mięso_wołowe | mięso_kurczak | mięso_indyk | mięso_wieprzowe | bułka_tarta | kajzerka);
|
||||
|
||||
/
|
||||
* Wszystkie produkty w sklepie
|
||||
*/
|
||||
public <all_products> = (<products>);
|
||||
|
||||
/
|
||||
* Wszystkie typy mięsa mielonego
|
||||
*/
|
||||
public <meat_types> = (mięso_wołowe | mięso_kurczak | mięso_indyk | mięso_wieprzowe);
|
||||
|
||||
/
|
||||
* Wszystkie jednostki miary
|
||||
*/
|
||||
public <units> = (kg | dag | g | sztuki);
|
||||
|
||||
/
|
||||
* Komendy dotyczące koszyka
|
||||
*/
|
||||
public <cart_command> = (dodaj | usuń | zaktualizuj | przeczytaj | kontynuuj | przejdź_do | sprawdź | pusty_koszyk);
|
||||
|
||||
/
|
||||
* Pytania użytkownika
|
||||
*/
|
||||
public <question> = (jaka_jest_cena | kiedy_mogę_odebrać | jakie_są_dostępne_produkty | jakie_jest_cena | jaki_jest_stan_magazynowy | czy_chcę_zapłacić_online | jakie_są_opłaty | jakie_są_promocje | jakie_są_godziny_otwarcia);
|
||||
|
||||
/
|
||||
* Witamy użytkownika w systemie
|
||||
*/
|
||||
public <welcome> = (Witaj użytkowniku <number> w systemie zakupów sieci sklepów spożywczych "Galaktyczny Skład".);
|
||||
|
||||
/
|
||||
* Powitanie użytkownika w sklepie
|
||||
*/
|
||||
public <greeting> = (Dzień dobry | Cześć | Witaj);
|
||||
|
||||
/
|
||||
* Wszystkie pytania użytkownika
|
||||
*/
|
||||
public <all_questions> = (<question>)+;
|
||||
|
||||
/
|
||||
* Wszystkie komendy dotyczące koszyka
|
||||
*/
|
||||
public <all_cart_commands> = (<cart_command>)+;
|
||||
|
||||
/
|
||||
* Dialog
|
||||
/
|
||||
public <dialog> = <welcome> <greeting> <command> (<products> | <meat_types> | <units> | koszyk | żadne | <all_cart_commands> | <all_questions>)+;
|
||||
|
||||
|
||||
public <request> = dla jakiego rodzaju sklepów działa system |
|
||||
chcę kupić |
|
||||
zamówienie |
|
||||
potrzebuję zakupów |
|
||||
jakie sklepy oferuje system ;
|
||||
|
||||
|
||||
public <inform> = w naszej ofercie znajdują się produkty spożywcze |
|
||||
dodano {<list>} do koszyka |
|
||||
karta lojalnościowa założona pomyślnie |
|
||||
na numer telefonu zostanie wysłany sms z informacją gdy zakupy będą gotowe do odbioru |
|
||||
dziękujemy za skorzystanie ze sklepu {<shopname>} ;
|
||||
|
||||
|
||||
public <deny> = nie |
|
||||
nie ten |
|
||||
zmień |
|
||||
nie chcę |
|
||||
nie teraz |
|
||||
nie tak |
|
||||
cofnij |
|
||||
usuń <productname> <brandname> z listy;
|
||||
|
||||
|
||||
public <inform> = dodaj do listy zakupów <brandname>;
|
||||
|
||||
public <reqalts> = ale może coś innego |
|
||||
czy jest jakaś inna opcja ;
|
||||
|
||||
public <affirm> = tak |
|
||||
zgoda |
|
||||
oczywiście |
|
||||
dokładnie |
|
||||
pewnie |
|
||||
jasne |
|
||||
dobrze |
|
||||
właśnie tak |
|
||||
ok |
|
||||
rozumiem ;
|
||||
|
||||
public <bye> = do widzenia |
|
||||
dziękuję |
|
||||
miłego dnia |
|
||||
do zobaczenia ;
|
Loading…
Reference in New Issue
Block a user