diff --git a/example_nlu.py b/example_nlu.py index 62b4b3b..c8a89d5 100644 --- a/example_nlu.py +++ b/example_nlu.py @@ -1,6 +1,10 @@ import jsgf +from pathlib import Path +import os -book_grammar = jsgf.parse_grammar_file('grammar1.jsgf') +__location__ = Path().resolve() + +book_grammar = jsgf.parse_grammar_file(os.path.join(__location__, "grammar1.jsgf")) book_grammar @@ -31,10 +35,10 @@ def nlu(utterance): -utterance = 'chciałbym zarezerwować stolik na jutro na godzinę dwunastą trzydzieści na pięć osób' +utterance = 'dzień dobry chcę kupić mięso wołowe' matched = book_grammar.find_matching_rules(utterance) matched -nlu('chciałbym zarezerwować stolik na jutro na godzinę dziesiątą dla trzech osób') +nlu('dzień dobry chcę kupić mięso wołowe') get_dialog_act(matched[0]) \ No newline at end of file diff --git a/grammar1.jsgf b/grammar1.jsgf index 75409a0..4f0d804 100644 --- a/grammar1.jsgf +++ b/grammar1.jsgf @@ -1,107 +1,59 @@ -#JSGF V1.0; +#JSGF V1.0 UTF-8 pl; + +grammar online_shopping; -/ - * Polecenia użytkownika - */ public = (dodaj | usuń | zaktualizuj | przeczytaj | kontynuuj | przejdź_do | sprawdź | zakończ); -/ - * Lista produktów - */ public = (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 = (); -/ - * Wszystkie typy mięsa mielonego - */ public = (mięso_wołowe | mięso_kurczak | mięso_indyk | mięso_wieprzowe); -/ - * Wszystkie jednostki miary - */ public = (kg | dag | g | sztuki); -/ - * Komendy dotyczące koszyka - */ public = (dodaj | usuń | zaktualizuj | przeczytaj | kontynuuj | przejdź_do | sprawdź | pusty_koszyk); -/ - * Pytania użytkownika - */ public = (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 = (Witaj użytkowniku w systemie zakupów sieci sklepów spożywczych "Galaktyczny Skład".); -/ - * Powitanie użytkownika w sklepie - */ public = (Dzień dobry | Cześć | Witaj); -/ - * Wszystkie pytania użytkownika - */ public = ()+; -/ - * Wszystkie komendy dotyczące koszyka - */ public = ()+; -/ - * Dialog - / public = ( | | | koszyk | żadne | | )+; +public = (dla jakiego rodzaju sklepów działa system | +chcę kupić | +zamówienie | +potrzebuję zakupów | +jakie sklepy oferuje system); -public = dla jakiego rodzaju sklepów działa system | - chcę kupić | - zamówienie | - potrzebuję zakupów | - jakie sklepy oferuje system ; +public = {( | | )+}; +public = (w naszej ofercie znajdują się produkty spożywcze | +dodano 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 {}); -public = w naszej ofercie znajdują się produkty spożywcze | - dodano {} 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 {} ; +public = (nie | +nie ten | +zmień | +nie chcę | +nie teraz | +nie tak | +cofnij | +usuń z listy); +public = (dodaj do listy zakupów ); -public = nie | - nie ten | - zmień | - nie chcę | - nie teraz | - nie tak | - cofnij | - usuń z listy; +public = (ale może coś innego | +czy jest jakaś inna opcja); - -public = dodaj do listy zakupów ; - -public = ale może coś innego | - czy jest jakaś inna opcja ; - -public = tak | - zgoda | - oczywiście | - dokładnie | - pewnie | - jasne | - dobrze | - właśnie tak | - ok | - rozumiem ; - -public = do widzenia | - dziękuję | - miłego dnia | - do zobaczenia ; \ No newline at end of file +public = (tak | +zgoda | +oczywiście); \ No newline at end of file