Compare commits
66 Commits
Author | SHA1 | Date | |
---|---|---|---|
5e16a186e8 | |||
ab09962900 | |||
![]() |
7a5064f19e | ||
![]() |
6598a84e48 | ||
4b1c33bf98 | |||
5922f0e074 | |||
60a298fa49 | |||
88741c2d2b | |||
![]() |
5d83b7b0e8 | ||
73b33cdea7 | |||
471ad1809b | |||
47dcf1fcae | |||
![]() |
d47fd92d3b | ||
![]() |
dfc964d63a | ||
db6e02e547 | |||
4a699901df | |||
![]() |
da419d6659 | ||
![]() |
56eb2b45da | ||
![]() |
793b7ca37b | ||
f78b47f176 | |||
0b4c46e239 | |||
![]() |
e114203287 | ||
![]() |
53628482e7 | ||
![]() |
b4e1f57795 | ||
2a9a51fea8 | |||
8de3945432 | |||
759afb4760 | |||
d0b58ba9c8 | |||
![]() |
246536a77e | ||
![]() |
2f91de8a22 | ||
![]() |
d1758cfcef | ||
![]() |
48b0371578 | ||
6090d5d923 | |||
![]() |
5c18bc5b9a | ||
![]() |
9dffcd9369 | ||
a509445ce6 | |||
1ce3ba572c | |||
796f145dda | |||
![]() |
5641552a38 | ||
![]() |
f867485ec3 | ||
![]() |
50ef2e242c | ||
5ed603bafd | |||
35700b2a53 | |||
![]() |
3368ef53c4 | ||
![]() |
56830134d3 | ||
![]() |
3c52d24af0 | ||
61b597adcd | |||
d192eb02d3 | |||
![]() |
2cff58e5fc | ||
![]() |
d2bc978dec | ||
78b4f7d6fc | |||
![]() |
ca8298e8cb | ||
![]() |
12360d890a | ||
ed9ffa08b6 | |||
![]() |
dd4c9abb2a | ||
![]() |
c11a52df6f | ||
222339aa99 | |||
dd197c59b6 | |||
258c15a77b | |||
12c2d689da | |||
fd26fece6c | |||
7080753d4c | |||
![]() |
f7456ed9e4 | ||
![]() |
31ee2d4c6a | ||
98c6c45059 | |||
fe67ba9f55 |
21
acts_parsed.json
Normal file
21
acts_parsed.json
Normal file
File diff suppressed because one or more lines are too long
88
book.jsgf
Normal file
88
book.jsgf
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#JSGF V1.0 UTF-8 pl;
|
||||||
|
|
||||||
|
grammar book;
|
||||||
|
|
||||||
|
public <ack> = potwierdzam | tak | tak potwierdzam | tak to wszystko | to poprosze | super to zatem wszystko | oki | to odbiore | wszystko jest ok dziekuje | dobrze nie moge sie juz doczekac;
|
||||||
|
|
||||||
|
public <affirm> = poprosze w takim razie ta pizze razy <liczba> oraz <liczba> litra coli | chciabym zamowic na adres <address> | wybornie czy z kuchni woskiej znajdzie sie lasagne oraz czy w winach znajda sie ciekawsze pozycje takie jak amarena | jestem wysoce niepocieszony z powodu braku trunkow siarczystych ale jakos przebrne przez to czy na deser jest mozliwosc tiramisu | dziekuje | na 15 dzisiaj mozna zarezerowac stoli z podanym obiadem | na <godzina> na pojutrze | no dobrze przekonales mnie zoze u was zamowienie czy przyjmujecie patnosc karta | pamietajcie zeby bylo cieple | tak poprosze ;
|
||||||
|
|
||||||
|
public <bye> = (dobrze nie moge sie juz doczekac | do widzenia | dziekuje milego dnia);
|
||||||
|
|
||||||
|
public <hello> = <hej_siema> <who_are_you> | witam system | dzien dobry | czesc | witam ;
|
||||||
|
|
||||||
|
public <help> = [pokaz] <help_with> {help_with};
|
||||||
|
|
||||||
|
public <negate> = dziekuje to wszystko | jakie aperitify sa u was dostepne | poprosze w takim razie carpaccio z buraka tiramisu i jakies dwa napoje | troche drogo nie ma znizki dla studentow | za drogo;
|
||||||
|
|
||||||
|
public <null> = pelen profesjonalizm ;
|
||||||
|
|
||||||
|
public <repeat> = czyli nie ma mozliwosci zamowienia i zjedzenia w restauracji ;
|
||||||
|
|
||||||
|
public <reqalts> = chetnie wezme ziemniaki pieczone | to prosze dodac to do moje zamowienia czy macie jakies napoje | patnosc moze byc karta ale w 3 porcjach | super to zatem wszystko | pasuje czy mozesz powiedziec jakie skadniki sa w saatce moge miec uczulenia na niektore skadniki | a mozliwosc jest z szarlotki z lodami | dostawy i patnosci | a na miejscu moge zapacic | wezme cole ile wynosi cakowity koszt zamowienia | okej w takim razie dziekuje za pomoc pojde do innej restauracji;
|
||||||
|
|
||||||
|
public <reqmore> = w takim razie niech zostanie poczatkowa opcja mozemy przejsc do kwestii dostawy | platnosc gotowka ulica sezamkowa <liczba> pacanowo | okej to wziabym | [okej to wziabym] [to] a co do <potrawa> {dish} proponujesz | okej to wezme do tego cole zero ile wynosi koszt caego zamowienia | chciabym bez saatki jednak a w miejscu tego kiszonke czy maci kiszonki w restauracji | tak | dobrze a czy po takich potrawach nie bedzie mi smierdziao z buzi na randce | czemu nie podaes tego wczesniej piwo to tez napoj | kuflowe mocne | a czy mozecie zapakowac dania na wynoc | dobrze to poprosze jednak 4pak kuflowego i prosze zapakowac na wynos | to poprosze | dobrze w takim razie zaproponuj cos innego;
|
||||||
|
|
||||||
|
public <restart> = od nowa;
|
||||||
|
|
||||||
|
public <thankyou> = dobrze w takim razie dziekuje za informacje i bede o tej <godzina> | to bedzie moje cale zamowienie;
|
||||||
|
|
||||||
|
public <confirm> = dziekuje | tak;
|
||||||
|
|
||||||
|
public <deny> = jednak nie zjem <potrawa> ;
|
||||||
|
|
||||||
|
public <inform> = chcialbym zjesc <potrawa> <potrawa> <potrawa> i <potrawa> | na wynos ale odbiore je osobiscie | na przystawke poprosze <potrawa> | platnosc gotowka | przepraszam a co z dostawa | chcialbym zamowic na adres xyz | to poprosze domowy sernik | wezme <potrawa> ile wynosi calkowity koszt zamowienia | dobrze na przystawke poprosze <potrawa> na danie glowne <potrawa> z poledwicy a na deser <potrawa> | tak zloz zamowienie na adres xyz | platnosc gotowka <address> <address> | to wszystko mozemy przejsc do platnosci;
|
||||||
|
|
||||||
|
public <request> = interesuja mnie dania kuchni wloskiej oraz meksykanskiej | jaka jest gramatura waszego burrito i czy mozna wybrac do niego mieso | przyjmujecie patnosc karta | a od ktorej do ktorej jest otwarta | super w takim razie czy mogbym dokonac rezerwacji na godzine 21 | przy oknie poprosze | jakie alergeny zawiera stek z grillowanymi warzywami i jakie piwa importowane macie dokadnie | czy akceptujecie bitcoina | a w jakiej cenie jest ta pizza | koreanskie bibimbap z woowina brzmi dobrze ile kosztuje | nie nie chce nic zmieniac prosze o przekazanie dania do realizacji | zaplace gotowka przy odbiorze | lasagne brzmi super moge do tego wypic cole i zamowic jakis deser | wszystko jest okej dziekuje | chciabym dostac 2 rozne warianty mozesz mi zaproponowac alternatywe dla drugiej osoby zamiast ryby i rosou | podaj menu bez potraw na zimno | a piwo 0 | a czy mozna blikiem | jakie dania oferujecie | czy oferujecie rozne poziomy wysmazenia wolowiny | ile kosztuje to danie gowne | tak zoz zamowienie na adres xyz | a cos innego nie lubie kurczaka | czy macie moze w ofercie zrazy woowe | jaka macie karte napojow | czy oferujecie dowoz | jaki jest koszt steka z poledwicy woowej caprese i wody gazowanej | poprosze o dostawe na adres rubiez 12j na godzine 16 | dziekuje czy moge zamowic posiki na godzine 15 | a co oferujecie z dan miesnych | czy do tego serwowane sa jeszcze ziemniaki | dziekuje bardzo w takim razie chciabym to zamowic | jaka sa ceny deserow | jak duza jest porcja pierogow ruskich | to poprosze do tego sok owocowy soki z jakich owocow sa dostepne czy sa one swiezo wyciskane | to poprosze dodac to do zamowienia oraz podsumowac cae zamowienie | na wynos | 00120 watykan | a czy macie jakies dania azjatyckie | w takim razie dodaj ja do zamowienia czy mogbys zaproponowac cos na przystawke i na deser | poprosze wode i cole | nie dziekuje do widzzenia | chciabym zjesc tatara zupe grzybowa stek i tiramisu czy moge zjesc tatara bez cebuli | za drogo jednak nie zjem tatara z dowozem na adres biedronkowa 4 | w takim razie na przystawke bedzie tatar a co do zupy mam pytanie z jakich grzybow ona sie skada | w takim razie cae moje zamowienie to bedzie tatar krem z dyni stek z poledwicy woowej i obedzie sie bez deseru pytanie jeszcze czy mozna pacic karta | w takim razie chetnie zostane i na ten moment bedzie dla mnie wszystko | tak ale jeszcze to nie koniec | jaki serwujecie rodzaj ryby | w postaci fileta czy z oscmi | a jakies warzywa lub surowke | czy posiadacie danie dnia | w jakich cenach sa te <potrawa> | z dostawa | co macie w menu dzisiaj | przyjmujecie platnosc karta;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public <select> = poprosze <liczba> {portion_size} porcje | [<zamawianie>] <potrawa> {dish} | no dobrze | [<proszenie>] <address> {address} | czy moglibyscie przygotowac <liczba> porcji na okreslona godzine na wynos;
|
||||||
|
|
||||||
|
public <welcomemsg> = czesc jestem agentem dialogowym przyjmujacym zamowienia w restauracji moge doradzic ci w wyborze odpowiedniej pozycji z menu w czym moge ci pomoc ;
|
||||||
|
|
||||||
|
public <rezerwuj> = chcialbym zarezerwowac stolik <dzien_rezerwacji> <godzina_rezerwacji> <liczba_osob> ;
|
||||||
|
|
||||||
|
public <offer> = Jakie dodatki moge wziac do ryby | Jakie inne desery oferujesz | ul Tulipanow 6 Poznan | jaki zestaw zarekomendowabys dla studenta z ograniczonym budzetem | a macie Piwo | a co bys zarekomendowa do takiego obiadu | czy patnosc mozna podzielic na 3 osoby | to gotowka | poprosze srednio krwisty | dziekuje za pomoc | Dobrze a czy carpaccio posiada jakies alergeny | chciabym sie dowiedziec jaka ryba wiekszosci ryb nie lubie | chciabym saatke ktora nie ma majonezy i jest swieza | to gotowki za ile musze byc w restauracji zeby wszystko byo gotowo | to odbiore | Podsumuj to | Pomaranczowy | Super dziekuje | spozywanie tuszczy i wyeliminowanie weglowodanow a ponadto znaczne ograniczenie posikow zawierajacych cukier a wiec owocow i warzyw | a jest piwo | Czy macie w ofercie wodke | a ile wyjdzie za wszystko | dziekuje to wszystko | Czy dao by sie ja zamienic na inna skoro nie lubie ososia | Okej brzmi dobrze Chciabym jeszcze zamowic cos do picia | Skad to wiesz jako system | Swietnie dziekuje za pomoc | Czy moge zjesc tatara bez cebuli;
|
||||||
|
|
||||||
|
public <platnosc> = [zaplace | poprosze] <metoda_platnosci> {payment_method};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<proszenie> = poprosze na | poprosze do | poprosze | do | na ;
|
||||||
|
|
||||||
|
<zamawianie> = chcialbym zjesc | poprosze | chcialbym | chcialabym | chcialabym zjesc | chce | chce zjesc | dla mnie bedzie | wezme ;
|
||||||
|
|
||||||
|
<address> = uniwersytetu poznanskiego <liczba> 61614 poznan | poziomkowa <liczba> poznan | poznan | uam poznan | wydzial matematyki | poznanska <liczba> | sezamkowa <liczba> | pacanowo;
|
||||||
|
|
||||||
|
<hej_siema> = hej | siema | czesc | witam ;
|
||||||
|
|
||||||
|
<who_are_you> = w czym mozesz mi pomoc | w czym mi mozesz pomoc | jakim botem jestes | czym sie zajmujesz ;
|
||||||
|
|
||||||
|
<dzien_rezerwacji> = (na | w) <dzien> {day};
|
||||||
|
|
||||||
|
<dzien> = dzisiaj | jutro | poniedzialek | wtorek | srode | czwartek | piatek | sobote | niedziele;
|
||||||
|
|
||||||
|
<godzina_rezerwacji> = (na | o) [godzine] <godzina_z_minutami> {hour};
|
||||||
|
|
||||||
|
<godzina_z_minutami> = <godzina> [<minuty>];
|
||||||
|
|
||||||
|
<godzina> = dziewiata | dziesiata | jedenasta | dwunasta | 19;
|
||||||
|
|
||||||
|
<minuty> = pietnas | trzydziesci;
|
||||||
|
|
||||||
|
<liczba_osob> = (na | dla) <liczba> {size} osob;
|
||||||
|
|
||||||
|
<liczba> = dwie | dwoch | trzy | trzech | cztery | czterech | piec | pieciu | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 123;
|
||||||
|
|
||||||
|
<metoda_platnosci> = (karta | gotowka | blikiem) [<miejsce_platnosci>] ;
|
||||||
|
|
||||||
|
<miejsce_platnosci> = (na miejscu | przy odbiorze | z gory);
|
||||||
|
|
||||||
|
<help_with> = menu | (jakie posilki moge zjesc z tego menu) | (A jaka to <potrawa>) ;
|
||||||
|
|
||||||
|
<potrawa> = tatara | tatar | poledwica | poledwice | pizza | pizze | tiramisu | zrazy [wolowe] | pyzy | placki | makaron | picia | zupa | danie_glowne | deser | napoj | ryba | rybe | cole | tiramisu | zupe grzybowa | stek | soki | kebaba;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
16
data/dialog-08-01-01.tsv
Normal file
16
data/dialog-08-01-01.tsv
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
user Witam system hello()
|
||||||
|
system Dzień Dobry, jestem systemem przyjmowania zamówień w restauracji, jak mogę ci pomóc? welcomemsg()
|
||||||
|
user Dania jakiej kuchni macie w swojej karcie? request(cuisine)
|
||||||
|
system W naszej restauracji oferujemy dania kuchni międzynarodowej. Mamy w menu pozycje kuchni włoskiej, francuskiej, oraz meksykańskiej. Jakie danie z jakiej kuchni byłoby dla ciebie najbardziej interesujące? inform(cuisines=włoska, francuska, meksykańska)
|
||||||
|
user Interesują mnie dania kuchni włoskiej oraz meksykańskiej request(dish_interest=Italian, Mexican)
|
||||||
|
system Oczywiście, z kuchni włoskiej polecam: Lasagne - tradycyjne danie z warstwami makaronu, mięsa mielonego, beszamelu i sera Spaghetti carbonara - makaron z sosem na bazie jajek, boczku i parmezanu Pizza neapolitańska - z chrupiącym cienkim ciastem, sosem pomidorowym i świeżymi składnikami Natomiast z kuchni meksykańskiej mamy: Fajitas - grillowane paski mięsa lub warzyw podawane z tortillami, salsą i guacamole Burrito - duże tortille nadziewane ryżem, fasolą, mięsem, warzywami i sosami Tacos - małe kukurydziane lub mączne tortille z różnymi nadzieniami Wszystkie te dania są przygotowywane z najwyższej jakości, świeżych składników. Możemy również dostosować poziom ostrości do Twoich preferencji. inform(Italian_dishes=Lasagne, Spaghetti carbonara, Pizza neapolitańska, Mexican_dishes=Fajitas, Burrito, Tacos)
|
||||||
|
user Czy macie może dostępne tortellini z prosciutto w sosie pomidorowym? I jakie salsy oferujecie do burrito? request(dish=tortellini with prosciutto in tomato sauce, burrito salsas)
|
||||||
|
system Tak, mamy w naszej ofercie tortellini z prosciutto w sosie pomidorowym. Jest to bardzo popularne danie z kuchni włoskiej. Jeśli chodzi o salsy do burrito, oferujemy kilka różnych rodzajów: Salsa pomidorowa - klasyczna, łagodna salsa na bazie pomidorów, cebuli i ziół Salsa verde - ostra salsa na bazie tomatillo, czosnku i chili Możesz wybrać jedną lub obie salsy, aby dopasować je do Twoich preferencji smakowych.Czy potrzebujesz jeszcze jakichś informacji? Jestem gotowy przyjąć Twoje zamówienie. inform(tortellini_dish_available=tak, burrito_salsas=salsa pomidorowa, salsa verde)
|
||||||
|
user Jaka jest gramatura waszego burrito, i czy można wybrać do niego mięso? request(burrito_size, burrito_meat_options)
|
||||||
|
system Standardowa gramatura jednego burrito to około 500-550 gramów. Jeśli chodzi o wybór mięsa, tak, możesz wybrać rodzaj mięsa, które chcesz mieć nadziane w swoim burrito. Oferujemy następujące opcje: Wołowina - kawałki grillowanej wołowiny Kurczak - kawałki grillowanego kurczaka Wieprzowina - kawałki pieczonej wieprzowiny Wegetariańskie - bez mięsa, tylko warzywa i fasola inform(burrito_size=550g, burrito_meat_options=wołowina, kurczak, wieprzowina, wegetariańskie)
|
||||||
|
user Jaki jest koszt zestawu burrito z wołowiną oraz woda gazowana? request(cost=burrito with beef, water)
|
||||||
|
system Cena pojedynczego burrito z wołowiną wynosi 29 zł.Natomiast cena butelki wody gazowanej o pojemności 0,5 litra to 5 zł.Zatem pełny zestaw składający się z: 1 burrito z wołowiną 1 butelka wody gazowanej 0,5 l będzie kosztował łącznie 34 zł. inform(burrito_cost=29 PLN, water_cost=5 PLN, total_cost=34 PLN)
|
||||||
|
user Przyjmujecie płatność kartą? request(payment_method)
|
||||||
|
system Tak oczywiśćie, czy chciełby Pan zamówić i zapłacić za ten zestaw? affirm()
|
||||||
|
user Tak poproszę affirm()
|
||||||
|
system Dobrze przyjmuje płatność kartą. Bardzo dziękuję i życzę smacznego! inform(payment_accepted)
|
|
14
data/dialog-08-03-01.tsv
Normal file
14
data/dialog-08-03-01.tsv
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
user Dzień dobry hello()
|
||||||
|
system Dzień Dobry, jestem systemem przyjmowania zamówień w restauracji, jak mogę ci pomóc? welcomemsg()
|
||||||
|
user Na jakiej ulicy mieści się restauracja request(address)
|
||||||
|
system Nasza restauracja mieści się przy ulicy Głównej 15, w samym centrum Poznania. Jest to bardzo dogodna lokalizacja, łatwo nas znaleźć i dojechać do nas różnymi środkami transportu. inform(address=Główna 15, Poznań)
|
||||||
|
user A od której do której jest otwarta request(hours)
|
||||||
|
system Nasza restauracja jest otwarta codziennie od godziny 11:00 do 22:00. Czy potrzebujesz jeszcze jakichś informacji na temat godzin otwarcia naszej restauracji? Jestem do Twojej dyspozycji. inform(hours=11:00-22:00)
|
||||||
|
user czy kuchnia jest otwarta w tych samych godzinach? request(kitchen_hours)
|
||||||
|
system Tak, kuchnia naszej restauracji jest otwarta w tych samych godzinach, co cały lokal. affirm()
|
||||||
|
user Super, w takim razie czy mógłbym dokonać rezerwacji na godzinę 21 request(reservation_time=21:00)
|
||||||
|
system Oczywiście, z przyjemnością dokonam rezerwacji stołu na godzinę 21:00. affirm()
|
||||||
|
user w takim razie chciałbym zarezerwować stolik dla 2 osób request(reservation_size=2)
|
||||||
|
system Doskonale, w takim razie dokonam rezerwacji stolika dla 2 osób.Potwierdzam, że rezerwujecie stolik na dziś wieczorem o godzinie 21:00 dla 2 osób. Czy potrzebujesz jeszcze jakichś specjalnych udogodnień lub życzeń? Np. stolik w cichym miejscu, przy oknie, czy miejsce dla osoby niepełnosprawnej? inform(reservation_time=21:00, reservation_size=2)&request(table_location)
|
||||||
|
user Przy oknie poproszę request(table_location=window)
|
||||||
|
system Doskonale, w takim razie potwierdzam Państwa rezerwację stolika na dziś wieczorem o godzinie 21:00 dla 2 osób przy oknie. Życzę Państwu miłego wieczoru w naszej restauracji. Do zobaczenia o 21:00! confirm(reservation_time=21:00, reservation_size=2, table_location=window)
|
|
12
data/dialog-08-05-01.tsv
Normal file
12
data/dialog-08-05-01.tsv
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
user Hej, jakim botem jesteś? hello()
|
||||||
|
system Dzień Dobry, jestem systemem przyjmowania zamówień w restauracji, jak mogę ci pomóc? welcomemsg()
|
||||||
|
user Jakie macie drugie dania w ofercie oraz jakie napoje oferujecie? request(menu_items, drinks)
|
||||||
|
system W naszej karcie dań głównych znajdziesz między innymi: Stek z grillowanymi warzywami Kurczak w sosie curry z ryżem basmati Lasagne z mięsem i sosem beszamelowym Pieczona łosoś z ziemniakami i sałatką Tagliatelle z krewetkami w sosie pomidorowym Jeśli chodzi o napoje, oferujemy szeroki wybór: Wody mineralne gazowane i niegazowane Soki owocowe i warzywne Lemoniady i napoje gazowane Kawa, herbata, cappuccino Wina czerwone, białe i różowe Piwa krajowe i importowane inform(menu_items=Stek z grillowanymi warzywami, Kurczak w sosie curry z ryżem basmati, Lasagne z mięsem i sosem beszamelowym, Pieczona łosoś z ziemniakami i sałatką, Tagliatelle z krewetkami w sosie pomidorowym, drinks=Wody mineralne gazowane i niegazowane, Soki owocowe i warzywne, Lemoniady i napoje gazowane, Kawa, herbata, cappuccino, Wina czerwone, białe i różowe, Piwa krajowe i importowane)
|
||||||
|
user Jakie alergeny zawiera stek z grillowanymi warzywami? I jakie piwa importowane macie dokładnie? request(allergens_stek, imported_beers)
|
||||||
|
system Jeśli chodzi o stek z grillowanymi warzywami, w tym daniu mogą występować następujące alergeny: Gluten - w przyprawach i sosach użytych do przygotowania Mleko -w masle i sosach użytych Soja - w sosach lub marynatacie Prosimy poinformować nas o jakichkolwiek alergiach lub nietolerancjach, abyśmy mogli dostosować danie do Twoich potrzeb.Jeśli chodzi o piwa importowane, w naszej ofercie mamy między innymi: Heineken (Holandia) Corona (Meksyk) Guinness (Irlandia) Asahi (Japonia) Peroni (Włochy) Stella Artois (Belgia) inform(allergens_stek=Gluten, Mleko, Soja, imported_beers=Heineken, Corona, Guinness, Asahi, Peroni, Stella Artois)
|
||||||
|
user W takim razie poproszę ten stek oraz trzynaście Guinnessów. Chciałbym od razu zapłacić request(order)
|
||||||
|
system Rozumiem, w takim razie przyjmuję Twoje zamówienie: Stek z grillowanymi warzywami, 13 butelek piwa Guinness Oczywiście, mogę przyjąć płatność już teraz. Akceptujemy gotówkę, karty płatnicze oraz płatności mobilne.Jaka forma płatności będzie dla Ciebie najwygodniejsza? inform(order=Stek z grillowanymi warzywami, 13 Guinnessów)
|
||||||
|
user Czy akceptujecie BitCoina? request(payment)
|
||||||
|
system Niestety nie posiadamy takiej formy płatności. Posiadamy możliwość płatnośći kartą lub gotówką. inform(payment_methods=gotówka, karty płatnicze, płatności mobilne)
|
||||||
|
user To dobrze bo nie mam BitCoinów. Poproszę kartą request(payment_method=bitcoin)
|
||||||
|
system Dobrze przyjmuje płatność kartą. Bardzo dziękuję i życzę smacznego! negate
|
|
12
data/dialog-08-07-01.tsv
Normal file
12
data/dialog-08-07-01.tsv
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
user Cześć hello()
|
||||||
|
system Dzień Dobry, jestem systemem przyjmowania zamówień w restauracji, jak mogę ci pomóc? welcomemsg()
|
||||||
|
user Chciałbym zamówić dużą hawajską na grubym cieście. Czy taka pozycja jest u was dostępna? request(order=large hawaiian pizza on thick crust)
|
||||||
|
system Tak, mamy tę pozycję w naszym menu. Nasza duża pizza hawajska serwowana jest na grubym, chrupiącym cieście i zawiera: Sos pomidorowy Ser mozzarella Szynka Ananas Jest to bardzo popularna i lubiana przez naszych gości pizza. Rozmiar dużej wynosi 40 cm średnicy, więc z pewnością będzie to sycąca porcja. affirm()
|
||||||
|
user A w jakiej cenie jest ta pizza? inform(pizza_details=Sos pomidorowy, Ser mozzarella, Szynka, Ananas, size=40cm)
|
||||||
|
system Cena pizzy w naszej restauracji wynosi 35 złotych, czy chciałbyś coś jeszcze do tego? request(price)
|
||||||
|
user Poproszę w takim razie tą pizze razy 2 oraz 1,5 litra coli inform(price=35 PLN)
|
||||||
|
system Rozumiem, w takim razie przyjmuję Twoje zamówienie: 2 duże pizze hawajskie na grubym cieście 1,5 litra Coca-Coli Czy chcielibyście coś jeszcze dodać do tego zamówienia? Mogę również przyjąć płatność. request(additional_order)
|
||||||
|
user To wszystko. Możemy przejść do płatności inform(order=2 large hawaiian pizzas on thick crust, 1.5L Coca-Cola)
|
||||||
|
system Proszę dać mi znać, jak chciałby Pan uregulować rachunek. Oferujemy płatność kartą lub gotówką. request(payment)
|
||||||
|
user Kartą inform(payment_methods=card, cash)
|
||||||
|
system Dobrze płatność przyjęta. Bardzo dziękuję i życzę smacznego! request(payment_method=card)
|
|
18
data/dialog-08-09-01.tsv
Normal file
18
data/dialog-08-09-01.tsv
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
user Dzień dobry hello()
|
||||||
|
system Dzień Dobry, jestem systemem przyjmowania zamówień w restauracji, jak mogę ci pomóc? welcomemsg()
|
||||||
|
user Chciałbym zamówić jakąś ostrą potrawę, co możesz mi polecić? request(spicy_dish_recommendation)
|
||||||
|
system Mamy kilka propozycji dań o wyrazistym, ostrym smaku, które mogą Cię zainteresować: Tajskie curry czerwone z kurczakiem - to intensywne, aromatyczne danie z nutami chili, galangalu i limonki. Meksykańskie fajitas z wołowiną - serwowane z ostrą salsą, guacamole i pikantną papryką jalapeño. Koreańskie bibimbap z wołowiną - ryż z warzywami, marynowanym wołowym mięsem i ostrym sosem gochujang. Indyjskie kurczak tikka masala - kurczak w kremowym, korzennym sosie curry. inform(dish_recommendations=Tajskie curry czerwone z kurczakiem, Meksykańskie fajitas z wołowiną, Koreańskie bibimbap z wołowiną, Indyjskie kurczak tikka masala)
|
||||||
|
user Koreańskie bibimbap z wołowiną brzmi dobrze. Ile kosztuje? request(order=Koreańskie bibimbap z wołowiną)
|
||||||
|
system Cena tego dania wynosi 35 zł. Czy chciałbyś zamówić to danie? Mogę przyjąć Twoje zamówienie i przekazać je do realizacji w kuchni. inform(price=35 PLN)
|
||||||
|
user Tak, poproszę o przygotowanie tego dania. affirm()
|
||||||
|
system Czy chciałbyś jeszcze coś dodać lub zmienić w tym zamówieniu? Jestem gotowy, aby przekazać je do realizacji w kuchni. request(additional_changes)
|
||||||
|
user Nie, nie chcę nic zmieniać. Proszę o przekazanie dania do realizacji. negate()
|
||||||
|
system Dobrze, dziękuję za złożenie zamówienia, przekazałem je na kuchnie, smacznego! inform(order_placed)request(delivery)affirm()
|
||||||
|
user Przepraszam, a co z dostawą? inform(delivery_cost=10 PLN)
|
||||||
|
system Oczywiście oferujemy dostawę, na jaki adres chciałby pan zamówić? Koszt dostawy to 10 złotych. request(delivery_address)
|
||||||
|
user Chciałbym zamówić na adres XYZ inform(delivery_address=XYZ)
|
||||||
|
system Dobrze, jaką formę płatnośći Pan preferuje. Obsługujemy płatność kartą lub gotówką. request(payment_method)
|
||||||
|
user Zapłacę gotówką przy odbiorze inform(payment_methods=card, cash)
|
||||||
|
system Oczywiście, dziękuję za złożenie zamówienia, przekazałem je na kuchnie, smacznego! Zamówienie dotrzę na wskazany adres w około 40 minut. request(payment_method=cash)
|
||||||
|
user Dziękuję, to wszystko. affirm()
|
||||||
|
system Dobrze, dowidzenia i życzę miłego dnia! inform(delivery_time=40 minutes)
|
|
10
data/dialog-08-11-01.tsv
Normal file
10
data/dialog-08-11-01.tsv
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
user Hej, w czym mi możesz pomóc? hello()
|
||||||
|
system Dzień Dobry, jestem systemem przyjmowania zamówień w restauracji, jak mogę ci pomóc? welcomemsg()
|
||||||
|
user Chcialbym zjeśc obiad wegetariański, w którym nie ma mięsa. Zaproponuj mi coś request(vegetarian_dish)
|
||||||
|
system Mamy kilka ciekawych propozycji dla wegetarian: Lasagne warzywna - z warstwami bakłażana, cukinii, papryki i sosem beszamelowym. Curry warzywne z ciecierzycą - aromatyczne curry z mieszanką warzyw, ciecierzycą i ryżem basmati. Tagliatelle z pesto i pieczonymi warzywami - makaron z domowym pesto oraz pieczonymi brokułami, cukinią i pomidorkami. Zapiekanka z warzyw i sera feta - warzywa sezonowe zapiekane z serem feta i ziołami. Spaghetti z sosem pomidorowym i grillowanymi warzywami - makaron z sosem pomidorowym, grillowanymi bakłażanami, cukinią i papryką. Wszystkie te dania są pyszne, sycące i w pełni wegetariańskie. Czy któreś z nich Cię zainteresowało? Chętnie przyjmę Twoje zamówienie. inform(dish_recommendations=Lasagne warzywna, Curry warzywne z ciecierzycą, Tagliatelle z pesto i pieczonymi warzywami, Zapiekanka z warzyw i sera feta, Spaghetti z sosem pomidorowym i grillowanymi warzywami)
|
||||||
|
user Lasagne brzmi super, mogę do tego wypić cole i zamówić jakiś deser? request(order=Lasagne warzywna)
|
||||||
|
system Oczywiście, lasagne to doskonały wybór wraz z cola. A na deser polecam nasz domowy sernik lub ciasto czekoladowe. Oba są bardzo popularne wśród naszych gości. request(additional_order=cola, dessert)
|
||||||
|
user To poproszę domowy sernik inform(dessert_recommendations=domowy sernik, ciasto czekoladowe)
|
||||||
|
system Dobrze. Podsumowując Twoje zamówienie: Lasagne Cola Domowy sernik Czy chciałbyś jeszcze coś dodać lub zmienić w tym zamówieniu? Jestem gotowy, aby przekazać je do realizacji w kuchni. request(order=Lasagne, cola, domowy sernik)
|
||||||
|
user Wszystko jest okej, dziękuję confirm(order=Lasagne, cola, domowy sernik)
|
||||||
|
system Dziękuję również, życzę smacznego. thankyou()
|
|
14
data/dialog-08-13-01.tsv
Normal file
14
data/dialog-08-13-01.tsv
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
user Cześć hello()
|
||||||
|
system Dzień Dobry, jestem systemem przyjmowania zamówień w restauracji, jak mogę ci pomóc? welcomemsg()
|
||||||
|
user Dzień dobry, czy byłoby wolne miejsce dziś wieczorem około godziny 19? inform(time=19:00)
|
||||||
|
system Tak, mamy dostępny stolik na godzinę 19:00. To dobry czas, ponieważ jest to szczyt serwowania kolacji, ale wciąż mamy kilka wolnych miejsc.Czy chciałbyś zarezerwować ten stolik na dziś wieczorem o 19:00? Mogę od razu dokonać rezerwacji na Twoje nazwisko. affirm(),request(name)
|
||||||
|
user Oczywiście bardzo chętnie proszę zarezerwować na XYZ, ale chciałbym się również dowiedzieć z czego głównie słynie wasza restauracja? affirm(),inform(name=XYZ),reqmore()
|
||||||
|
system Rozumiem, w takim razie dokonam rezerwacji stolika na nazwisko XYZ na dziś wieczorem o godzinie 21:00 dla 2 osób.Jeśli chodzi o to, czym słynie nasza restauracja, to mamy kilka specjalności, które cieszą się szczególną popularnością wśród naszych gości: Kuchnia włoska - jesteśmy znani z pysznych, tradycyjnych dań włoskich, takich jak lasagne, spaghetti carbonara czy pizza neapolitańska na cienkim, chrupiącym cieście. Dania fusion - łączymy smaki kuchni z różnych stron świata, tworząc unikalne, pełne aromatów dania, np. koreańskie bibimbap czy tajskie curry. Świeże owoce morza - nasi kucharze mistrzowsko przyrządzają ryby i owoce morza, serwując je w wielu różnych odsłonach. Domowe desery - nasz cukiernik przygotowuje wyśmienite, domowe ciasta i desery, takie jak sernik czy czekoladowe brownie. Mamy również bogatą ofertę win, piw i koktajli, które doskonale komponują się z naszymi daniami.Czy jest coś konkretnego, czym chciałbyś się zainteresować? Chętnie udzielę więcej informacji. inform(time=19:00,party_size=2),inform(cuisine=italian,fusion,seafood,desserts,drinks)
|
||||||
|
user Wybornie czy z kuchni włoskiej znajdzie się Lasagne? Oraz czy w winach znajdą się ciekawsze pozycję takie jak Amarena? inform(dish=lasagne),request(wine=amarena)
|
||||||
|
system Oczywiście, w naszej restauracji serwujemy pyszną, tradycyjną lasagne - to jedna z naszych specjalności kuchni włoskiej. Jeśli chodzi o wina, w naszej ofercie niestety nie znajdzie Pan wina amarena. inform(dish=lasagne),negate(wine=amarena)
|
||||||
|
user Jestem wysoce niepocieszony z powodu braku trunków siarczystych, ale jakoś przebrnę przez to. Czy na deser jest możliwość tiramisu? negate(),request(dessert=tiramisu)
|
||||||
|
system Tak oczywiśćie nasza restauracja serwuje doskonałe tiramisu. Czy to wszystko? inform(dessert=tiramisu),reqmore()
|
||||||
|
user Jeszcze pytanie czy w waszym obiekcie znajduje się toaleta, pytam ponieważ na google można znaleźć opinie, że trzeba korzystać z latryny? request(restroom)
|
||||||
|
system Tak w naszym obiekcie znaduje się darmowa toaleta. Opinie na platformie goolge są w błędzie. inform(restroom=available)
|
||||||
|
user Dobrze w takim razie dziękuję za informację i będę o tej 19. thankyou&inform(time=19:00)
|
||||||
|
system Doskonale, w takim razie potwierdzam Pana rezerwację stolika na dziś wieczorem o godzinie 19:00. Życzę Panu miłego wieczoru w naszej restauracji. Do zobaczenia o 19:00! affirm(),bye()
|
|
37
data/dialog-09-02-01.tsv
Normal file
37
data/dialog-09-02-01.tsv
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
user Hej, w czym możesz mi pomóc? hello()
|
||||||
|
system "Witamy w restauracji ""Jarvis"". Jestem systemem przyjmującym zamówienia. W czym mogę pomóc? " welcomemsg()
|
||||||
|
user Chciałbym zamówić bardzo duży obiad dla 2 osób. Co możesz mi polecić? request(size="large",people="2")
|
||||||
|
system "Jako bardzo duży obiad dla dwóch osób mogę polecić następujący zestaw:
|
||||||
|
|
||||||
|
1x Sałatka caprese
|
||||||
|
1x Carpaccio z buraka
|
||||||
|
2x Rosół z makaronem
|
||||||
|
2x Ryba z grilla
|
||||||
|
|
||||||
|
Jeśli chcesz również deser mogę polecić:
|
||||||
|
1x Tiramisu
|
||||||
|
1x Lody waniliowe" offer(value="1x Sałatka caprese 1x Carpaccio z buraka 2x Rosół z makaronem 2x Ryba z grilla")&offer(value="1x Tiramisu 1x Lody waniliowe")
|
||||||
|
user Chciałbym dostać 2 różne warianty. Możesz mi zaproponować alternatywę dla drugiej osoby zamiast ryby i rosołu? reqalts(exclude="ryba, rosół")
|
||||||
|
system "W takim razie proponuję następujący zestaw:
|
||||||
|
|
||||||
|
1x Sałatka caprese
|
||||||
|
1x Carpaccio z buraka
|
||||||
|
1x Rosół z makaronem
|
||||||
|
1x Ryba z grilla
|
||||||
|
1x Zupa grzybowa
|
||||||
|
1x Pieczona kaczka z jabłkami
|
||||||
|
Jeśli chcesz również deser mogę polecić:
|
||||||
|
1x Tiramisu
|
||||||
|
1x Lody waniliowe" offer(value="1x Sałatka caprese 1x Carpaccio z buraka 1x Rosół z makaronem 1x Ryba z grilla 1x Zupa grzybowa 1x Pieczona kaczka z jabłkami")&offer(value="1x Tiramisu 1x Lody waniliowe")
|
||||||
|
user Jakie dodatki mogę wziąć do ryby? reqmore(value="dodatki")
|
||||||
|
system Do potrawy Ryba z grilla oferujemy następujące dodatki: ziemniaki pieczone, surówka Colesław, ryż smażony. offer(value="ziemniaki pieczone, surówka Colesław, ryż smażony")
|
||||||
|
user Chętnie wezmę ziemniaki pieczone. ack(value="ziemniaki pieczone")
|
||||||
|
system Dobrze, zaznaczyłem iż ryba z grilla ma być z dodatkiem ziemniaki pieczone. Czy chciałby Pan zmienić coś jeszcze w zamówieniu czy przejść do procesu ustalenia dostawy i płatności? affirm&confirm&reqmore
|
||||||
|
user Jakie inne desery oferujesz? request(type="dessert")
|
||||||
|
system Jako deser w ofercie posiadamy: Tiramisu, Szarlotka, Lody waniliowe offer(value="Tiramisu, Szarlotka, Lody waniliowe")
|
||||||
|
user W takim razie niech zostanie początkowa opcja. Możemy przejść do kwestii dostawy? deny()&request(value="delivery")&request(value="payment")
|
||||||
|
system Zrozumiałem. Proszę o podanie adresu dostawy oraz metody płatności (oferujemy płatność kartą lub gotówką na miejscu). request(value="delivery)&select(value="payment")
|
||||||
|
user ul. Tulipanów 6, Poznań inform(delivery="ul. Tulipanów 6, Poznań")
|
||||||
|
user Zapłacę gotówką na miejscu inform(delivery="cash")
|
||||||
|
system Zamówienie zostało złożone i jest teraz w przygotowaniu. Dziękuję bardzo i życzę smacznego! affirm()&bye()
|
||||||
|
user Dziękuję thankyou()
|
Can't render this file because it contains an unexpected character in line 3 and column 97.
|
85
data/dialog-09-04-01.tsv
Normal file
85
data/dialog-09-04-01.tsv
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
user Hej, w czym mozesz mi pomoc? hello()
|
||||||
|
system "Witamy w restauracji ""Jarvis"". Jestem systemem przyjmującym zamówienia. W czym mogę pomóc? " welcomemsg()
|
||||||
|
user Co macie w menu dzisiaj? request(value="menu")
|
||||||
|
system "Nasze dzisiejsze menu jest następujące:
|
||||||
|
|
||||||
|
Przystawki:
|
||||||
|
|
||||||
|
Tatar wołowy
|
||||||
|
Carpaccio z buraka
|
||||||
|
Sałatka caprese
|
||||||
|
|
||||||
|
Zupy:
|
||||||
|
|
||||||
|
Krem z dyni
|
||||||
|
Rosół z makaronem
|
||||||
|
Zupa grzybowa
|
||||||
|
|
||||||
|
Dania główne:
|
||||||
|
|
||||||
|
Stek z polędwicy wołowej
|
||||||
|
Pieczona kaczka z jabłkami
|
||||||
|
Lasagne
|
||||||
|
Ryba z grilla
|
||||||
|
Risotto z kurczakiem i grzybami
|
||||||
|
Pierogi ruskie
|
||||||
|
Placki ziemniaczane
|
||||||
|
|
||||||
|
|
||||||
|
Desery:
|
||||||
|
|
||||||
|
Tiramisu
|
||||||
|
Szarlotka
|
||||||
|
Lody waniliowe" offer(value="Przystawki: Tatar wołowy Carpaccio z buraka Sałatka caprese Zupy: Krem z dyni Rosół z makaronem Zupa grzybowa Dania główne: Stek z polędwicy wołowej Pieczona kaczka z jabłkami Lasagne Ryba z grilla Risotto z kurczakiem i grzybami Pierogi ruskie Placki ziemniaczane Desery: Tiramisu Szarlotka Lody waniliowe")
|
||||||
|
user Podaj menu bez potraw na zimno reqalts(exclude="cold")
|
||||||
|
system "Nasze dzisiejsze menu wyłączając potrawy na zimno jest następujące:
|
||||||
|
|
||||||
|
Przystawki:
|
||||||
|
|
||||||
|
Carpaccio z buraka
|
||||||
|
|
||||||
|
Zupy:
|
||||||
|
|
||||||
|
Krem z dyni
|
||||||
|
Rosół z makaronem
|
||||||
|
Zupa grzybowa
|
||||||
|
|
||||||
|
Dania główne:
|
||||||
|
|
||||||
|
Stek z polędwicy wołowej
|
||||||
|
Pieczona kaczka z jabłkami
|
||||||
|
Lasagne
|
||||||
|
Ryba z grilla
|
||||||
|
Risotto z kurczakiem i grzybami
|
||||||
|
Pierogi ruskie
|
||||||
|
Placki ziemniaczane" offer(value="Przystawki: Carpaccio z buraka Zupy: Krem z dyni Rosół z makaronem Zupa grzybowa Dania główne: Stek z polędwicy wołowej Pieczona kaczka z jabłkami Lasagne Ryba z grilla Risotto z kurczakiem i grzybami Pierogi ruskie Placki ziemniaczane")
|
||||||
|
user jaki zestaw zarekomendowąłbyś dla studenta z ograniczonym budżetem? request(budget="low")
|
||||||
|
system "Jako zestaw potraw na zimno w wersji budżetowej polecam:
|
||||||
|
|
||||||
|
1x Carpaccio z buraka (10 zł)
|
||||||
|
1x Lasagne (20zł)" offer(value="1x Carpaccio z buraka (10 zł) 1x Lasagne (20zł)")
|
||||||
|
user To prosze dodać to do moje zamówienia, czy macie jakieś napoje? ack&request(type="drink")
|
||||||
|
system Jako napój mogę zaproponować jeden z następujących trunków: Coca-cola (500ml), Fanta (500ml), Woda mineralna (wersja gazowana lub niegazowana) (500ml) offer(value="Coca-cola (500ml), Fanta (500ml), Woda mineralna (wersja gazowana lub niegazowana) (500ml)")
|
||||||
|
user a macie Piwo? reqalts(type="beer")
|
||||||
|
system Niestety, nie mamy w ofercie napojów alkoholowych. canthelp()
|
||||||
|
user A piwo 0? reqalts(value="piwo 0")
|
||||||
|
system Niestety, nie ma w naszym menu napoju piwo 0. canthelp()
|
||||||
|
user a co byś zarekomendował do takiego obiadu request(type="drink", attribute="relevant")
|
||||||
|
system Dla studenta z ograniczonym budżetem mogę zarekomendować napój: woda mineralna (gazowana) (500ml) offer(value="woda mineralna (gazowana) (500ml)")
|
||||||
|
user to poprosze ack
|
||||||
|
user czy płatnośc można podzielić na 3 osoby? request(payment_type="split")
|
||||||
|
system Przykro mi, ale oferujemy jedynie standardowe formy płatności kartą lub gotówką na miejscu. canthelp()
|
||||||
|
user płatność może byc kartą ale w 3 porcjach request(payment_type="split")
|
||||||
|
system Przykro mi, ale nie wspieramy tej opcji płatności canthelp()
|
||||||
|
user Czy opakowanie na wynos są dodatkowo płatne? request(topic="packaging", value="price")
|
||||||
|
system Nie, opakowania są wliczone w cenę potrawy. inform
|
||||||
|
user Super to zatem wszystko ack&bye
|
||||||
|
system W celu realizacji zamówienia proszę o podanie adresu dostawy oraz formy płatności. canthelp()&canthelp()
|
||||||
|
user "Uniwersytetu Poznańskiego 4, 61-614 Poznań
|
||||||
|
Sala D-3,
|
||||||
|
płatność za pomocą kryptowalut" inform(delivery="Uniwersytetu Poznańskiego 4, 61-614 Poznań Sala D-3")&inform(payment="kryptowalut")
|
||||||
|
system Przykro mi, ale nie wspieramy tej opcji płatności. Oferujemy płatność kartą lub gotówką na miejscu. canthelp()
|
||||||
|
user a czy można blikiem? request(type="payment", value="blikiem")
|
||||||
|
system Przykro mi, ale nie wspieramy tej opcji płatności. Oferujemy płatność kartą lub gotówką na miejscu canthelp()
|
||||||
|
user to gotówką inform(payment="cash")
|
||||||
|
system Zrozumiałem. Zamówienie zostało złożone i jest teraz w przygotowaniu. Dziękuję bardzo i życzę smacznego! affirm()&bye()
|
Can't render this file because it contains an unexpected character in line 3 and column 45.
|
45
data/dialog-09-06-01.tsv
Normal file
45
data/dialog-09-06-01.tsv
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
user Dzień dobry hello()
|
||||||
|
system "Witamy w restauracji ""Jarvis"". Jestem systemem przyjmującym zamówienia. W czym mogę pomóc?" welcomemsg()
|
||||||
|
user Czy przyjmujecie zamówienia tylko z jednej restauracji? request(restaurant="other")
|
||||||
|
system "Obecnie obsługujemy tylko restaurację ""Jarvis""." canthelp()
|
||||||
|
user Jakie dania oferujecie? request(type="menu")
|
||||||
|
system "Nasze dzisiejsze menu jest następujące:
|
||||||
|
|
||||||
|
Przystawki:
|
||||||
|
|
||||||
|
Tatar wołowy
|
||||||
|
Carpaccio z buraka
|
||||||
|
Sałatka caprese
|
||||||
|
|
||||||
|
Zupy:
|
||||||
|
|
||||||
|
Krem z dyni
|
||||||
|
Rosół z makaronem
|
||||||
|
Zupa grzybowa
|
||||||
|
|
||||||
|
Dania główne:
|
||||||
|
|
||||||
|
Stek z polędwicy wołowej
|
||||||
|
Pieczona kaczka z jabłkami
|
||||||
|
Lasagne
|
||||||
|
Ryba z grilla
|
||||||
|
Risotto z kurczakiem i grzybami
|
||||||
|
Pierogi ruskie
|
||||||
|
Placki ziemniaczane
|
||||||
|
|
||||||
|
|
||||||
|
Desery:
|
||||||
|
|
||||||
|
Tiramisu
|
||||||
|
Szarlotka
|
||||||
|
Lody waniliowe" offer(value="Przystawki: Tatar wołowy Carpaccio z buraka Sałatka caprese Zupy: Krem z dyni Rosół z makaronem Zupa grzybowa Dania główne: Stek z polędwicy wołowej Pieczona kaczka z jabłkami Lasagne Ryba z grilla Risotto z kurczakiem i grzybami Pierogi ruskie Placki ziemniaczane Desery: Tiramisu Szarlotka Lody waniliowe")
|
||||||
|
user Dobrze, na przystawke poprosze tatar, na danie glowne stek z poledwicy a na deser tiramisu inform(order="Tatar wołowy, stek z poledwicy, tiramisu")
|
||||||
|
user czy oferujecie rozne poziomy wysmazenia wolowiny? reqmore(topic="stek z poledwicy", value="smażenie")
|
||||||
|
system "Tak, stek może być podany jako ""krwisty"", ""średnio krwisty"", ""wysmażony"" oraz ""mocno wysmażony"". " "offer(value="""krwisty"", ""średnio krwisty"", ""wysmażony"" oraz ""mocno wysmażony"")"
|
||||||
|
user poprosze srednio krwisty. inform(value="stek z polędwicy", attribute="średnio krwisty")
|
||||||
|
system Dobrze, zaznaczyłem że stek ma być średnio krwisty. Czy chciałby Pan zmienić coś jeszcze w zamówieniu czy przejść do procesu ustalenia dostawy i płatności? affirm&reqmore
|
||||||
|
user Moze finalizowac zamowienie affirm()
|
||||||
|
system Dobrze, poproszę o podanie adresu dostawy oraz metodę płatności (oferujemy płatność kartą lub gotówką na miejscu). request(value="delivery")&select(value="payment")
|
||||||
|
user platnosc gotowka, ulica sezamkowa 123, Pacanowo inform(payment="cash")&inform(delivery="ulica sezamkowa 123, Pacanowo")
|
||||||
|
system Zamówienie zostało złożone i jest teraz w przygotowaniu. Dziękuję bardzo i życzę smacznego! affirm()&bye()
|
||||||
|
user dziekuje za pomoc thankyou()&bye()
|
Can't render this file because it contains an unexpected character in line 3 and column 83.
|
18
data/dialog-09-08-01.tsv
Normal file
18
data/dialog-09-08-01.tsv
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
user Siema, w czym możesz mi pomóc? hello()
|
||||||
|
system "Witamy w restauracji ""Jarvis"". Jestem systemem przyjmującym zamówienia. W czym mogę pomóc?" welcomemsg()
|
||||||
|
user Chciałabym zamówic coś na obiad, co polecasz? request(value="recommendation")
|
||||||
|
system Jako danie główne mogę polecić danie Stek z polędwicy wołowej, a na przystawkę Carpaccio z buraka. offer(value="Stek z polędwicy wołowej, Carpaccio z buraka")
|
||||||
|
user Ile kosztuje to danie główne? reqmore(topic="Stek z polędwicy wołowej", value="price")
|
||||||
|
system Stek z polędwicy wołowej kosztuje 39,99 zł. inform(value="39,99 zł")
|
||||||
|
user Dobrze, a czy carpaccio posiada jakies alergeny? reqmore(topic="Carpaccio z buraka", value="allergens")
|
||||||
|
system Carpaccio z buraka zawiera następujące alergeny: mleko inform(topic"Carpaccio z buraka", question="allergens", value="mleko")
|
||||||
|
user Okej, to wziąłbym to, a co do picia proponujesz? request(value="recommendation", type="drink")
|
||||||
|
system Jako napój mogę zaproponować jeden z następujących trunków: Coca-cola (500ml), Fanta (500ml), Woda mineralna (wersja gazowana lub niegazowana) (500ml) offer(value="Coca-cola (500ml), Fanta (500ml), Woda mineralna (wersja gazowana lub niegazowana) (500ml)")
|
||||||
|
user Czy w ofercie nie ma napoi zero? reqmore(topic="napoje zero")
|
||||||
|
system Oferujemy napój coca-cola w wersji zero. Woda mineralna również nie zawiera cukru. inform(topic="napoje zero")
|
||||||
|
user Okej to wezmę do tego cole zero, ile wynosi koszt całego zamówienia? affirm()
|
||||||
|
system Zrozumiałem. Twoje zamówienie to teraz: Stek z polędwicy wołowej, Carpaccio z buraka oraz Coca-cola (zero). Całkowity koszt zamówienia wraz z dostawą to 64.99 zł. affirm&imp-conf
|
||||||
|
user Dobrze chciałbym zapłacić przy odbiorze gotówką, czy jest taka możliwość? reqmore(topic="payment")
|
||||||
|
system Tak, oferujemy opcję płatności kartą przy odbiorze. Czy w takim razie złożyć zamówienie? Jeśli tak to proszę podać adres dostawy. affirm&request(value="delivery")
|
||||||
|
user Tak złóż zamówienie, na adres XYZ. affirm&inform(delivery="XYZ")
|
||||||
|
system Zamówienie zostało złożone i jest teraz w przygotowaniu. Dziękuję bardzo i życzę smacznego! affirm()&bye()
|
Can't render this file because it contains an unexpected character in line 3 and column 70.
|
43
data/dialog-09-12-01.tsv
Normal file
43
data/dialog-09-12-01.tsv
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
user witam hello
|
||||||
|
system "Witamy w restauracji ""Jarvis"". Jestem systemem przyjmującym zamówienia. W czym mogę pomóc?" welcomemsg
|
||||||
|
user chciałbym zamówic ostry mało tłuszczowy obiad czy cos doradzisz ? request(type="low-fat")
|
||||||
|
system Mogę polecić szaszłyki z kurczaka w ostrym sosie, z dodatkiem autorskiej sałatki warzywnej naszego szefa. offer(value="zaszłyki z kurczaka w ostrym sosie, z dodatkiem autorskiej sałatki warzywnej naszego szefa")
|
||||||
|
user a cos innego nie lubie kurczaka reqalts(exclude="kurczak")
|
||||||
|
system W takim razie może Ryba z grilla z dodatkiem mieszanki ostrych przypraw? offer(value="Ryba z grilla z dodatkiem mieszanki ostrych przypraw")
|
||||||
|
user chciałbym się dowiedzieć jaka ryba, większości ryb nie lubię :( reqmore(topic="Ryba z grilla z dodatkiem mieszanki ostrych przypraw", value="gatunek")
|
||||||
|
system Jedyną rybą jaką dysponujemy jest pstrąg. inform(topic="Ryba z grilla z dodatkiem mieszanki ostrych przypraw", value="pstrąg")
|
||||||
|
user Pasuje. czy możesz powiedzieć jakie składniki sa w sałatce moge miec uczulenia na niektóre składniki reqmore(topic="sałatka warzywna", value="składniki")
|
||||||
|
system Sałatka warzywna zawiera następujące składniki: ziemniaki, marchew, pietruszka, jajka, ogórki kiszone, cebula, jabłka, groszek zielony, majonez, musztarda. inform(topic="sałatka warzywna", argument="składniki", value="ziemniaki, marchew, pietruszka, jajka, ogórki kiszone, cebula, jabłka, groszek zielony, majonez, musztarda")
|
||||||
|
system Jeśli chcesz, mogę zamówić wersję potrawy bez danego składnika. inform(topic="alternative")
|
||||||
|
user chciałbym sałatke, która nie ma majonezy i jest swieza reqalts(include="sałatka warzywna", exclude="majonez", exclude=“nieświeża")
|
||||||
|
system Nasze potrawy zawsze są świeże, nasza restauracja i jej pracownicy spełniają wszystkie normy sanepidu. Dodałem do zamówienia sałatkę warzywną (bez majonezu). inform(topic="świeżość")
|
||||||
|
user chciałbym bez sałatki jednak, a w miejscu tego kiszonke. Czy maci kiszonki w restauracji reqalts(include="kiszonka")
|
||||||
|
system Usunąłem potrawę Sałatka warzywna z zamówienia. Przykro mi, w ofercie nie posiadamy potrawy kiszonka. canthelp
|
||||||
|
user chodziło mi o kiszonki czyli ogorek kiszony, kimchi, kapusta kiszona itd reqalts(include="ogorek kiszony, kimchi, kapusta kiszona")
|
||||||
|
system Mamy w ofercie kimchi. Czy dodać je do zamówienia? offer(value="kimchi")&expl-conf
|
||||||
|
user tak affirm
|
||||||
|
system Dobrze, dodałem Kimchi do zamówienia. Czy chciałby Pan zmienić coś jeszcze w zamówieniu czy przejść do procesu ustalenia dostawy i płatności? ack&reqmore
|
||||||
|
user chciałbym jeszcze zamówic deser. Co się znajduje w panstwa ofercie request(type="dessert")
|
||||||
|
system Jako deser oferujemy: Tiramisu, Szarlotka, Lody waniliowe offer(value="Tiramisu, Szarlotka, Lody waniliowe")
|
||||||
|
user czy szarlotka jest wypiekana przez panstwa reqmore(topic="szarlotka")
|
||||||
|
system Nasze potrawy zawsze są świeże i przygotowywane na miejscu. inform(topic="świeżość")
|
||||||
|
user a mozliwosc jest z szarlotki z lodami ? request(include="szarlotka", include="lody")
|
||||||
|
system Czy dobrze rozumiem, iż chcesz dodać do zamówienia szarlotkę oraz lody? Expl-conf
|
||||||
|
user tak, ale na jednym talerzu zeby było reqmore(topic="szarlotka z lodami")
|
||||||
|
system Zrozumiałem, dodam tę informację jako notkę do zamówienia. affirm
|
||||||
|
system Czy chciałby Pan zmienić coś jeszcze w zamówieniu czy przejść do procesu ustalenia dostawy i płatności? reqmore
|
||||||
|
user dostawy i płatnosci reqmore(topic="delivery and payment")
|
||||||
|
system Zrozumiałem. Proszę o podanie adresu dostawy oraz metody płatności (oferujemy płatność kartą lub gotówką na miejscu). request(value="delivery")&request(value="payment")
|
||||||
|
user a czy mógłbym przyjsc do restauracji i zjesc o danej godzinie ? reqmore(topic="takeout")
|
||||||
|
system Oferujemy opcję zamówienia z odbiorem osobistym. Zamówienia złożone przez internet mogą być zjedzone wewnątrz restauracji jeśli znajdują się wolne stoliki. offer(value="takeout")
|
||||||
|
user a na miejscu moge zapłacic reqmore(topic="payment")
|
||||||
|
system Tak, oferujemy możliwość płatności kartą lub gotówką w restauracji inform(topic="payment")
|
||||||
|
user to gotowki za ile musze byc w restauracji zeby wszystko było gotowo affirm&reqmore(topic="czas realizacji zamówienia")
|
||||||
|
system Przewidywany czas realizacji zamówienia to 97 minut. inform(topic="czas realizacji zamówienia")
|
||||||
|
user na 15 dzisiaj mozna zarezerowac stoli z podanym obiadem reqmore(topic="rezerwacja", time="today, 15:00")
|
||||||
|
system Przykro mi, ale nie oferujemy możliwości rezerwacji stolika online. canthelp
|
||||||
|
user czyli nie ma mozliwosci zamowienia i zjedzenia w restauracji repeat
|
||||||
|
system Zamówienia złożone przez internet mogą być zjedzone wewnątrz restauracji jeśli znajdą się wolne stoliki. canthelp
|
||||||
|
user oki ack
|
||||||
|
user to odbiore ack
|
||||||
|
system Zrozumiałem. Zamówienie zostało odnotowane z odbiorem w restauracji o godzinie 15. Dziękuję bardzo i życzę smacznego! affirm&inform(topic="order received", delivery_time="today 15:00")&bye
|
Can't render this file because it contains an unexpected character in line 3 and column 90.
|
24
data/dialog-10-01-01.tsv
Normal file
24
data/dialog-10-01-01.tsv
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
user Witam system hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Jaką kuchnie oferujecie? request(value="type")
|
||||||
|
system Oferujemy kuchnie polska inform(value="polish")
|
||||||
|
user czy macie może w ofercie zrazy wołowe? request(value="zrazy wolowe")
|
||||||
|
system Niestety, w naszej ofercie nie ma zrazów wołowych, mamy jednak w ofercie "Stek z polędwicy wołowej". negate()&offer(value="Stek z poledwicy wolowej")
|
||||||
|
user cena jest per 100g? czy jest to danie o określonej gramaturze, jeżeli tak to jakiej? request(value="size")
|
||||||
|
system Danie ma określoną porcję - 250 gramów. inform(size="250g")
|
||||||
|
user Jaką macie kartę napojów? request(value="drinks")
|
||||||
|
system Mamy do wyboru soki owocowe, wodę i colę. offer(value="soki owocowe")&offer(value="woda")&offer(value="cola")
|
||||||
|
user Jakie aperitify są u was dostępne? "request(value="aperitif")"
|
||||||
|
system Nasze menu to: "przystawki": "Tatar wołowy", "Carpaccio z buraka", "Sałatka caprese", "zupy": "Krem z dyni", "Rosół z makaronem", "Zupa grzybowa", "dania_glowne": "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne, "Ryba z grilla, "Risotto z kurczakiem i grzybami", "Pierogi ruskie", "Placki ziemniaczane", "desery": "Tiramisu", "Szarlotka, "Lody waniliowe" select()
|
||||||
|
user Czy oferujecie dowóz? request(value="delivery")
|
||||||
|
system Tak oferujemy dowóz. inform(value="true")
|
||||||
|
user Czy dowóz dojeżdża na Naramowice w Poznaniu? Jeżeli tak to jaki jest koszt dowozu? request(delivery="Naramowice",value="cost")
|
||||||
|
system Tak, dowóz na Naramowice w Poznaniu będzie kosztował około 10zł w zależności od dokładnego adresu. inform(value="10")
|
||||||
|
user Jaki jest koszt steka z polędwicy wołowej, caprese i wody gazowanej? request(value="price")
|
||||||
|
system "Stek z polędwicy wołowej" kosztuje 49zł, "Sałatka caprese" 19zł a woda gazowana 5zł. inform(price="49",price="19",price="5")
|
||||||
|
user Podsumuj to request(value="summary")
|
||||||
|
system Twoje zamówienie to "Stek z polędwicy wołowej", "Sałatka caprese" i "Woda gazowana". Łączna cena to 63zł. inform(price="63")
|
||||||
|
user Poproszę o dostawę na adres Rubież 12J na godzinę 16 inform(address="Rubiez 12J",time="16:00")
|
||||||
|
system Twoje zamówienie kosztuje łacznie z dostawą 70zł, potwierdzasz? inform(price="70")&request()
|
||||||
|
user Potwierdzam ack()
|
||||||
|
system Dziękujemy za skorzystanie z naszych usług. Przewidywany czas oczekiwania na zamówienie to 45minut. bye()&inform(time="45 min")
|
Can't render this file because it contains an unexpected character in line 3 and column 46.
|
27
data/dialog-10-03-01.tsv
Normal file
27
data/dialog-10-03-01.tsv
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
user Dzień dobry hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Czy udało mi się skontaktować z siecią restauracji czy wybraną restauracją? request(value="type")
|
||||||
|
system Skontaktowałeś się z restauracją "Uniwersytecka". inform(name="Uniwersytecka")
|
||||||
|
user Dziękuję. czy mogę zamówić posiłki na godzinę 15 request(time="15:00")
|
||||||
|
system Chcesz zamówić danie na miejscu czy na wynos? select()
|
||||||
|
user na wynos, ale odbiorę je osobiście inform(value="to go")
|
||||||
|
system Ok, możesz zamówić posiłki na godzinę 15. Co chciałbyś zamówić? confirm()
|
||||||
|
user A co oferujecie z dań mięsnych request(value="meat")
|
||||||
|
system Oferowane przez nas dania główne mięsne to: "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne", "Ryba z grilla", "Risotto z kurczakiem i grzybami", select()
|
||||||
|
user Jaki serwujecie rodzaj ryby request(value="fish")
|
||||||
|
system Serwujemy mintaja. inform(fish="mintaj")
|
||||||
|
user w postaci fileta czy z ośćmi request(value="type")
|
||||||
|
system Ryba podawana jest jako filet. inform(value="filet")
|
||||||
|
user Dziękuję. jaka jest cena? request(value="price")
|
||||||
|
system "Ryba z grilla" kosztuje 39zł. inform(price="39")
|
||||||
|
user Czy do tego serwowane są jeszcze ziemniaki request()
|
||||||
|
system Tak, danie "Ryba z grilla" zawiera pieczone ziemniaki. confirm()
|
||||||
|
user A jakieś warzywa lub surówkę? request()
|
||||||
|
system Tak, zawiera surówkę z kiszonej kapusty. confirm()
|
||||||
|
user dziękuję bardzo, w takim razie chciałbym to zamówić request(value="fish")
|
||||||
|
system Dodano do zamówienia, coś jeszcze? confirm()
|
||||||
|
user jakie desery Państwo oferują request(value="dessert")
|
||||||
|
system Oferujemy: "Tiramisu" "Szarlotka", "Lody waniliowe", select()
|
||||||
|
user Jaka są ceny deserów request(value="price")
|
||||||
|
system "Tiramisu" 15zł, "Szarlotka" 15zł, "Lody waniliowe" 10zł inform()
|
||||||
|
user Poproszę Tiramisu request(value="Tiramisu")
|
Can't render this file because it contains an unexpected character in line 3 and column 102.
|
24
data/dialog-10-05-01.tsv
Normal file
24
data/dialog-10-05-01.tsv
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
user Hej, jakim botem jesteś? hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Czy posiadacie danie dnia? request(value="menu")
|
||||||
|
system Dzisiejsze danie dnia to "Zupa grzybowa" i "Pierogi ruskie". select()
|
||||||
|
user jak duża jest porcja pierogów ruskich? request(value="size")
|
||||||
|
system Porcja pierogów ruskich zawiera 8 szt. inform(size="8")
|
||||||
|
user To poproszę dwie porcje. Jakie napoje macie w ofercie? request(value="drinks")
|
||||||
|
system Mamy do wyboru soki owocowe, wodę i colę. offer(value="soki owocowe")&offer(value="woda")&offer(value="cola")
|
||||||
|
user To poproszę do tego sok owocowy. Soki z jakich owoców są dostępne? Czy są one świeżo wyciskane? request(drink="sok owocowy")
|
||||||
|
system Oferujemy sok jabłkowy i pomarańczowy. Niestety, nie mamy w ofercie soków świeżo wyciskanych. confirm()
|
||||||
|
user w jakich cenach są te soki? request(value="price")
|
||||||
|
system Jeden sok 300ml kosztuje 6zł inform(price="6")
|
||||||
|
user to poproszę dodać to do zamówienia oraz podsumować całe zamówienie confirm()
|
||||||
|
system Jaki sok chciałbyś zamówić? Jabłkowy czy pomarańczowy? offer(value="drink")
|
||||||
|
user Pomarańczowy request(drink="pomaranczowy")
|
||||||
|
system Ok. Twoje zamówienie to: 2x "Pierogi ruskie" i sok pomarańczowy. Łączna cena to 56zł. Chcesz zamówić na miejscu czy na wynos? confirm()
|
||||||
|
user na wynos request(delivery="true")
|
||||||
|
system Chcesz zamówić z dostawą czy odebrać osobiście? offer(value="delivery type")
|
||||||
|
user Z dostawą request(delivery="true")
|
||||||
|
system Jaki jest adres dostawy? request(value="address")
|
||||||
|
user 00120 Watykan inform()
|
||||||
|
system Dowóz zamówienia na taki adres będzie kosztował 21,37zł. Łączna cena zamówienia to 77,37zł, czy potwierdzasz zamówienie? confirm()&inform(price="77")
|
||||||
|
user Tak potwierdzam ack()
|
||||||
|
system Dziękujemy za skorzystanie z naszych usług. Przewidywany czas oczekiwania na zamówienie to 45minut. confirm()
|
Can't render this file because it contains an unexpected character in line 3 and column 47.
|
23
data/dialog-10-07-01.tsv
Normal file
23
data/dialog-10-07-01.tsv
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
user Cześć hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Mam ochotę na jakieś danie z makaronem. Czy mógłbyś mi coś polecić? request(value="pasta")
|
||||||
|
system Mamy w ofercie "Lasagne" i "Rosół z makaronem". select()
|
||||||
|
user A czy macie jakieś dania azjatyckie? request(type="Asian")
|
||||||
|
system Niestety, nie oferujemy dań kuchni azjatyckiej. negate()
|
||||||
|
user No dobrze, a w jakiej cenie jest Lasagnia? request(value="price")
|
||||||
|
system Lasagnia kosztuje 29zł. inform(price="29")
|
||||||
|
user W takim razie dodaj ją do zamówienia Czy mógłbyś zaproponować coś na przystawkę i na deser? confirm()&request(value="starter, dessert")
|
||||||
|
system Mamy w ofercie przystawki: "Tatar wołowy", "Carpaccio z buraka", "Sałatka caprese", oraz desery: "Tiramisu" "Szarlotka", "Lody waniliowe". select()
|
||||||
|
user Poproszę w takim razie Carpaccio z buraka, Tiramisu i jakieś dwa napoje request(value="carpaccio")
|
||||||
|
system Z napojów mamy do wyboru soki owocowe, wodę i colę. offer(value="drinks")
|
||||||
|
user Poproszę wodę i colę request(value="woda")&request(value="cola")
|
||||||
|
system Dodano do zamówienia. Czy to wszystko? confirm()
|
||||||
|
user Tak confirm()
|
||||||
|
system Twoje zamówienie to: "Carpaccio z buraka", "Lasagne", "Tiramisu", "Woda" i "Cola". Całość wyniosła 77zł. Chcesz zamówić z dostawą czy odbiorem osobistym? inform(price="77")
|
||||||
|
user Z dostawą request(value="delivery")
|
||||||
|
system Na jaki adres? request(value="address")
|
||||||
|
user Uniwersytetu Poznańskiego 4, 61-614 Poznań request(address="Uniwersytetu Poznańskiego 4, 61-614 Poznań")
|
||||||
|
system Ok, łączna cena z dostawą to 87zł. Potwierdzasz zamówienie? confirm()
|
||||||
|
user Potwierdzam ack()
|
||||||
|
system Dziękujemy za skorzystanie z naszych usług. Przewidywany czas oczekiwania na zamówienie to 45minut. bye()&inform()
|
||||||
|
user Super, dziękuję bye()
|
Can't render this file because it contains an unexpected character in line 3 and column 95.
|
6
data/dialog-10-09-01.tsv
Normal file
6
data/dialog-10-09-01.tsv
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
user Dzień dobry. hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Chciałbym zamówić jakiś zestaw sushi na kilka osób na imprezę urodzinową. request()
|
||||||
|
system Niestety, nie mamy sushi w ofercie restauracji "Uniwersytecka" czy chciałbyś zobaczyć menu? negate()&reqmore()
|
||||||
|
user Nie, dziękuję. Do widzzenia. negate()&bye()
|
||||||
|
system Dziekuję, miłego dnia! bye()
|
Can't render this file because it contains an unexpected character in line 4 and column 55.
|
12
data/dialog-10-11-01.tsv
Normal file
12
data/dialog-10-11-01.tsv
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
user Hej, czym się zajmujesz? hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Pokaż menu help(value="menu")
|
||||||
|
system Nasze menu to: "przystawki": "Tatar wołowy", "Carpaccio z buraka", "Sałatka caprese", "zupy": "Krem z dyni", "Rosół z makaronem", "Zupa grzybowa", "dania_glowne": "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne, "Ryba z grilla, "Risotto z kurczakiem i grzybami", "Pierogi ruskie", "Placki ziemniaczane", "desery": "Tiramisu", "Szarlotka, "Lody waniliowe" select()
|
||||||
|
user Chciałbym zjeść tatara, zupe grzybowa, stek i tiramisu. Czy mogę zjeść tatara bez cebuli? request(value="tatar",value="zupa grzybowa",value="stek",value="tiramisu")&reqalt(value="tatar",exclusion="cebula")
|
||||||
|
system Tak, możemy przygotować tatara bez cebuli. confirm()
|
||||||
|
user Pełen profesjonalizm. To będzie moje całe zamówienie. Pamiętajcie żeby było ciepłe! affirm()
|
||||||
|
system Ok, twoje zamówienie to: "Tatar wołowy", "Zupa grzybowa", "Stek z polędwicy wołowej" i "Tiramisu". Łączna cena to 109zł. Chcesz zamówić z odbiorem osobistym czy dowozem? confirm()&inform(value="order")
|
||||||
|
user Za drogo! Jednak nie zjem tatara. Z dowozem na adres Biedronkowa 4 request(exclude="tatar")
|
||||||
|
system Ok, usunąłem tatara z zamówienia. Dostawa na wybrany adres będzie kosztować 10zł. Całość zamówienia będzie kosztować 89zł. Potwierdzasz zamówienie? confirm()&inform(price="89")
|
||||||
|
user tak ack()
|
||||||
|
system Dziękujemy za skorzystanie z naszych usług. Przewidywany czas oczekiwania na zamówienie to 45minut. bye()&inform(time="45 min")
|
Can't render this file because it contains an unexpected character in line 3 and column 29.
|
15
data/dialog-10-13-01.tsv
Normal file
15
data/dialog-10-13-01.tsv
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
user Cześć hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Czy znalazłoby się coś z kuchni andaluzyjskiej? request(value="type")
|
||||||
|
system Nasze menu to: "przystawki": "Tatar wołowy", "Carpaccio z buraka", "Sałatka caprese", "zupy": "Krem z dyni", "Rosół z makaronem", "Zupa grzybowa", "dania_glowne": "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne, "Ryba z grilla, "Risotto z kurczakiem i grzybami", "Pierogi ruskie", "Placki ziemniaczane", "desery": "Tiramisu", "Szarlotka, "Lody waniliowe" select()
|
||||||
|
user W takim razie na przystawkę będzie Tatar, a co do zupy mam pytanie z jakich grzybów ona się składa? request(value="tatar")
|
||||||
|
system "Zupa grzybowa" składa się z pieczarek. inform()
|
||||||
|
user Liczyłem na coś bardziej wyrafinowanego, w takim razie poproszę krem z dyni, a co do dania głównego mam pytanie czy Lasagne może zawierać laktozę? request(value="main")
|
||||||
|
system Przykro mi, że nasze menu nie spełnia twoich oczekiwań. Cieżko pracujemy, żeby przygotować dania spełniające potrzeby wszystkich klientów. Tak, danie "Lasagne" zawiera laktozę. negate()
|
||||||
|
user W takim razie całe moje zamówienie to będzie tatar, krem z dyni, stek z polędwicy wołowej i obędzie się bez deseru. Pytanie jeszcze czy można płacić kartą? request(value="tatar",value="stek")
|
||||||
|
system Tak, można płacić kartą. Czy chcesz zamówić na miejscu czy na wynos? confirm()
|
||||||
|
user Będzie na miejscu o ile są wolne miejsca. request(value="no delivery")
|
||||||
|
system Tak, aktualnie mamy dużo wolnych stolików w restauracji. confirm()
|
||||||
|
user W takim razie chętnie zostanę i na ten moment będzie dla mnie wszystko confirm()
|
||||||
|
system Dziękujemy za skorzystanie z naszych usług. Przewidywany czas oczekiwania na zamówienie to 10minut. bye()&inform()
|
||||||
|
user Dobrze, nie mogę się już doczekać! bye()
|
Can't render this file because it contains an unexpected character in line 3 and column 71.
|
5
data/dialog-11-02-01.tsv
Normal file
5
data/dialog-11-02-01.tsv
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
user Dzień dobry hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Chciałbym zjeść 3-daniowy obiad z kuchni włoskiej. inform(value="3-daniowy obiad z kuchni włoskiej")
|
||||||
|
system Proponuję "Sałatka caprese", "Lasagne", "Tiramisu" select()
|
||||||
|
user Mógłbyś mi napisać z jakich składników składa się sałatka? reqmore()
|
Can't render this file because it contains an unexpected character in line 3 and column 79.
|
40
data/dialog-11-04-01.tsv
Normal file
40
data/dialog-11-04-01.tsv
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
user Hej, w czym mozesz mi pomoc? hello()&help()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. welcomemsg()
|
||||||
|
user Moge doradzic ci w wyborze odpowiedniej pozycji z menu. help()
|
||||||
|
user W czym moge ci pomoc? help()
|
||||||
|
user Jakie macie menu na dzisiaj? help()
|
||||||
|
system "przystawki":"Tatar wołowy", "Carpaccio z buraka","Sałatka caprese","zupy":"Krem z dyni","Rosół z makaronem","Zupa grzybowa","dania_glowne":"Stek z polędwicy wołowej","Pieczona kaczka z jabłkami","Lasagne","Ryba z grilla","Risotto z kurczakiem i grzybami","Pierogi ruskie","Placki ziemniaczane","desery":"Tiramisu""Szarlotka","Lody waniliowe" offer()
|
||||||
|
user Jestem na diecie keto, jakie posiłi moge zjeść z tego menu? reqmore(value="dieta keto")
|
||||||
|
system Co to znaczy dieta keto? repeat()
|
||||||
|
user spożywanie tłuszczy i wyeliminowanie węglowodanów, a ponadto znaczne ograniczenie posiłków zawierających cukier, a więc owoców i warzyw null()
|
||||||
|
system "Tatar wołowy" "Zupa grzybowa", Stek z polędwicy wołowej offer()
|
||||||
|
user Dobrze a czy po takich potrawach nie będzie mi śmierdziało z buzi na randce? reqmore()
|
||||||
|
system Kwestia tego co lubi dziewczyna reqmore()
|
||||||
|
user Zaszło nieporozumienie, ide na randke z moim chłopakiem, czy mógłbyś nie opierać się na stereotypach? Było to dla mnie bardzo krzywdzące reqmore()
|
||||||
|
system Przepraszam, moje dane uczące pochodzą ze stereotypowego źródła. W takim razie to zależy od tego, czy twój chłopak lubi smak mięsa wołowego i grzybów reqmore()
|
||||||
|
user Okej a macie coś dopicia? request(value="napoje")
|
||||||
|
system colę, wodę i lemoniadę offer()
|
||||||
|
user a jest piwo? reqmore()
|
||||||
|
system tak, żubr i kuflowe mocne offer()
|
||||||
|
user Czemu nie podałeś tego wcześniej? piwo to też napoj null()
|
||||||
|
system Bo brzmisz jakbyś miał mniej niż 18 lat. Masz przy sobie dowód osobisty? reqmore()
|
||||||
|
user Tak ack()
|
||||||
|
system gratuluję. Czy w takim razie chcesz zamówić piwo? offer()
|
||||||
|
user Tak ack()
|
||||||
|
system jakie? reqmore()
|
||||||
|
user kuflowe mocne inform(value="kuflowe mocne")
|
||||||
|
system czy w takim razie twoje zmówienie to:"Tatar wołowy" "Zupa grzybowaStek z polędwicy wołowej mocne inform()
|
||||||
|
user Tak, ale jeszcze to nie koniec null()
|
||||||
|
user Czy macie w ofercie wódkę? request(value="wódka")
|
||||||
|
system Niestety nie negate()
|
||||||
|
user a czy możecie zapakować dania na wynoc? help(value="pakowanie na wynos")
|
||||||
|
system Tak affirm()
|
||||||
|
user a ile wyjdzie za wszystko? request(value="cena")
|
||||||
|
system 103zł inform()
|
||||||
|
user podaj cene za poszczególne składniki zamowienia reqmore()
|
||||||
|
system 22 28 zupa 45zł stek kuflowe inform()
|
||||||
|
user dobrze to poprosze jednak 4-pak kuflowego i prosze zapakowac na wynos confirm()
|
||||||
|
user czy cena za pudełka jest doliczana? help()
|
||||||
|
system jest wliczona w cenę inform()
|
||||||
|
system całośc wyniesie 127zł inform()
|
||||||
|
user dziękuje to wszystko bye()
|
Can't render this file because it contains an unexpected character in line 6 and column 19.
|
13
data/dialog-11-06-01.tsv
Normal file
13
data/dialog-11-06-01.tsv
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
user Dzień dobry hello()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Czy oferujecie burgery? request(value="burger")
|
||||||
|
system Nie, z dan głównych oferujemy: "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne", "Ryba z grilla", "Risotto z kurczakiem i grzybami", "Pierogi ruskie", "Placki ziemniaczane" select()
|
||||||
|
user czy do pierogow ruskich dodajecie skwarki? reqmore(value="Pierogi ruskie")
|
||||||
|
system tak affirm()
|
||||||
|
user Czy moglibyscie przygotowac 20 porcji na okreslona godzine na wynos? request(value="Pierogi ruskie", value="20", value="15:00", value="pojutrze")
|
||||||
|
system jak najbardziej affirm()
|
||||||
|
user to poprosze affirm()
|
||||||
|
system Pierogi ruskie 20 razy, tak? Na którą godzinę? inform()&request()
|
||||||
|
user na 15:00 na pojutrze select(value="15:00", value="pojutrze")
|
||||||
|
system przyjmujemy tylko zamówienia na ten sam dzień. Wróc do nas pojutrze negate()
|
||||||
|
user ok, dziekuje za pomoc bye()
|
Can't render this file because it contains an unexpected character in line 3 and column 44.
|
26
data/dialog-11-08-01.tsv
Normal file
26
data/dialog-11-08-01.tsv
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
user Siema, w czym możesz mi pomóc? hello()&help()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji.Moge doradzic ci w wyborze odpowiedniej pozycji z menu.W czym moge ci pomoc? welcomemsg()
|
||||||
|
user Chciałbym zamówić coś dietetycznego na obiad, co polecasz? help(value="dietetyczne", category="obiad")
|
||||||
|
system "Sałatka caprese" z przystawek i "Ryba z grilla" na danie główne offer()
|
||||||
|
user A jaka to ryba? reqmore(value="ryba")
|
||||||
|
system Łosoś offer()
|
||||||
|
user Czy dało by się ją zamienić na inną, skoro nie lubię łososia? reqalts(value="ryba")
|
||||||
|
system Nie negate()
|
||||||
|
user Dobrze w takim razie zaproponuj coś innego. reqalts(value="cokolwiek")
|
||||||
|
system "Pierogi ruskie", offer()
|
||||||
|
user Okej brzmi dobrze. Chciałbym jeszcze zamówić cos do picia. affirm()&help(value="napoje")
|
||||||
|
system Polecam colę albo wodę offer()
|
||||||
|
user Wezmę colę, ile wynosi całkowity koszt zamówienia? inform(value="cola")&help(value="cena")
|
||||||
|
system 51zł offer()
|
||||||
|
user Trochę drogo, nie ma zniżki dla studentów? reqmore(value="zniżka")
|
||||||
|
system nie ma, przepraszam negate()
|
||||||
|
user Okej, w takim razie dziekuję za pomoc, pójdę do innej restauracji. bye()
|
||||||
|
system Na pewno nie będzie tam tak smacznie jak u nas negate()
|
||||||
|
user Skąd to wiesz jako system? reqmore(value="wiadomość")
|
||||||
|
system Nikt nie jest od nas lepszy inform()
|
||||||
|
user No dobrze przekonałeś mnie, złożę u was zamówienie, czy przyjmujecie płatność kartą? request(value="płatność")
|
||||||
|
system Tak! affirm()
|
||||||
|
user Świetnie, dziękuję za pomoc. thankyou()
|
||||||
|
system Pierogi ruskie i cola, płatność kartą. Czy to wszystko? inform()
|
||||||
|
user Tak to wszystko. ack()
|
||||||
|
system Dziękuję. Twoje zamówienie będzie gotowe za 35min bye()
|
Can't render this file because it contains an unexpected character in line 3 and column 80.
|
14
data/dialog-11-10-01.tsv
Normal file
14
data/dialog-11-10-01.tsv
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
user Hej, czym się zajmujesz? hello()&help()
|
||||||
|
system Czesc, jestem agentem dialogowym przyjmujacym zamowienia w restauracji. Moge doradzic ci w wyborze odpowiedniej pozycji z menu. W czym moge ci pomoc? offer()
|
||||||
|
user Pokaż menu help(value="menu")
|
||||||
|
system "przystawki": "Tatar wołowy", "Carpaccio z buraka", "Sałatka caprese", "zupy": "Krem z dyni", "Rosół z makaronem", "Zupa grzybowa","dania_glowne": "Stek z polędwicy wołowej", "Pieczona kaczka z jabłkami", "Lasagne", "Ryba z grilla", "Risotto z kurczakiem i grzybami", "Pierogi ruskie", "Placki ziemniaczane","desery": "Tiramisu" "Szarlotka", "Lody waniliowe", offer()
|
||||||
|
user Chciałbym zjeść tatara, zupe grzybowa, stek i tiramisu inform(value="Tatar wołowy", value="Zupa grzybowa", value="Stek z polędwicy wołowej", value="Tiramisu")
|
||||||
|
user Czy mogę zjeść tatara bez cebuli? reqmore(value="Tatar wołowy bez cebuli")
|
||||||
|
system Tak, możemy przygotować tatara bez cebuli. affirm()
|
||||||
|
user Pełen profesjonalizm null()
|
||||||
|
user To będzie moje całe zamówienie thankyou()
|
||||||
|
user Pamiętajcie żeby było ciepłe! null()
|
||||||
|
system Ok, twoje zamówienie to: "Tatar wołowy", "Zupa grzybowa", "Stek z polędwicy wołowej" i "Tiramisu". Łączna cena to 109zł.Chcesz zamówić z odbiorem osobistym czy dowozem? inform()
|
||||||
|
user Za drogo! negate()
|
||||||
|
user Jednak nie zjem tatara deny()
|
||||||
|
|
Can't render this file because it contains an unexpected character in line 3 and column 29.
|
267
dialog_model.py
Normal file
267
dialog_model.py
Normal file
@ -0,0 +1,267 @@
|
|||||||
|
import string
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
import jsgf
|
||||||
|
from unidecode import unidecode
|
||||||
|
|
||||||
|
from convlab.dst import dst
|
||||||
|
|
||||||
|
|
||||||
|
def default_state():
|
||||||
|
return dict(
|
||||||
|
user_action=[],
|
||||||
|
system_action=[],
|
||||||
|
belief_state={
|
||||||
|
'address': '',
|
||||||
|
'payment_method': '',
|
||||||
|
'dish': [],
|
||||||
|
'time': ''
|
||||||
|
},
|
||||||
|
booked={},
|
||||||
|
request_state=[],
|
||||||
|
terminated=False,
|
||||||
|
history=[]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Model:
|
||||||
|
def __init__(self):
|
||||||
|
self.state = default_state()
|
||||||
|
self.nlu = NLU()
|
||||||
|
self.dst = DST(self.state)
|
||||||
|
self.dp = DP(self.state)
|
||||||
|
self.nlg = NLG(self.state)
|
||||||
|
|
||||||
|
def __call__(self, prompt) -> Any:
|
||||||
|
print(prompt)
|
||||||
|
msg = prompt.lower()
|
||||||
|
|
||||||
|
r = self.nlu(msg)
|
||||||
|
print(r)
|
||||||
|
r = self.dst(r)
|
||||||
|
print(r)
|
||||||
|
r = self.dp()
|
||||||
|
print(r)
|
||||||
|
# r = self.nlg(r)
|
||||||
|
|
||||||
|
return r
|
||||||
|
|
||||||
|
|
||||||
|
class NLU():
|
||||||
|
def __init__(self):
|
||||||
|
self.book_grammar = jsgf.parse_grammar_file('book.jsgf')
|
||||||
|
|
||||||
|
def get_dialog_act(self, rule):
|
||||||
|
slots = []
|
||||||
|
self.get_slots(rule.expansion, slots)
|
||||||
|
return {'act': rule.name, 'slots': slots}
|
||||||
|
|
||||||
|
def get_slots(self, expansion, slots):
|
||||||
|
if expansion.tag != '':
|
||||||
|
slots.append((expansion.tag, expansion.current_match))
|
||||||
|
return
|
||||||
|
|
||||||
|
for child in expansion.children:
|
||||||
|
self.get_slots(child, slots)
|
||||||
|
|
||||||
|
if not expansion.children and isinstance(expansion, jsgf.NamedRuleRef):
|
||||||
|
self.get_slots(expansion.referenced_rule.expansion, slots)
|
||||||
|
|
||||||
|
def __call__(self, prompt) -> Any:
|
||||||
|
book_grammar = jsgf.parse_grammar_file('book.jsgf')
|
||||||
|
|
||||||
|
prompt = unidecode(prompt)
|
||||||
|
translator = str.maketrans('', '', string.punctuation)
|
||||||
|
prompt = prompt.translate(translator)
|
||||||
|
|
||||||
|
matched = book_grammar.find_matching_rules(prompt)
|
||||||
|
|
||||||
|
if matched:
|
||||||
|
return self.get_dialog_act(matched[0])
|
||||||
|
else:
|
||||||
|
return {'act': 'null', 'slots': []}
|
||||||
|
|
||||||
|
|
||||||
|
class DST(dst.DST):
|
||||||
|
|
||||||
|
def __init__(self, state):
|
||||||
|
dst.DST.__init__(self)
|
||||||
|
self.state = state
|
||||||
|
|
||||||
|
def __call__(self, user_act) -> Any:
|
||||||
|
if len(user_act['slots']) == 0:
|
||||||
|
user_act = [(user_act['act'], None, None)]
|
||||||
|
else:
|
||||||
|
user_act = [(user_act['act'], k, v) for k, v in user_act['slots'] if v is not None]
|
||||||
|
|
||||||
|
self.state['request_state'] = {}
|
||||||
|
for act, slot, value in user_act:
|
||||||
|
self.state['user_action'].append(act)
|
||||||
|
|
||||||
|
if act == "platnosc":
|
||||||
|
self.state['belief_state']['payment_method'] = value
|
||||||
|
self.state['request_state'] = ['payment_method']
|
||||||
|
|
||||||
|
elif act == "offer":
|
||||||
|
self.state['request_state'] = ['menu']
|
||||||
|
|
||||||
|
elif act == 'select':
|
||||||
|
if slot == 'dish':
|
||||||
|
self.state['belief_state']['dish'].append(value)
|
||||||
|
else:
|
||||||
|
self.state['belief_state'][slot] = value
|
||||||
|
self.state['request_state'] = [slot]
|
||||||
|
|
||||||
|
elif act == 'inform':
|
||||||
|
pass
|
||||||
|
|
||||||
|
elif act == 'request':
|
||||||
|
pass
|
||||||
|
elif act == 'restart':
|
||||||
|
self.state["belief_state"] = default_state()["belief_state"]
|
||||||
|
self.state["booked"] = {}
|
||||||
|
self.state["request_state"] = []
|
||||||
|
self.state["terminated"] = False
|
||||||
|
self.state["history"] = []
|
||||||
|
return self.state
|
||||||
|
|
||||||
|
|
||||||
|
class DP():
|
||||||
|
def __init__(self, state):
|
||||||
|
self.state = state
|
||||||
|
|
||||||
|
def __call__(self) -> Any:
|
||||||
|
system_action = None
|
||||||
|
|
||||||
|
if self.state['user_action'][-1] == 'hello':
|
||||||
|
system_action = 'welcomemsg'
|
||||||
|
# przywitaj uzytkownika (i pokaz menu)
|
||||||
|
|
||||||
|
elif self.state['user_action'][-1] == 'select':
|
||||||
|
system_action = 'inform'
|
||||||
|
# poinformuj o wybranych slotach z "request_state"
|
||||||
|
|
||||||
|
elif (self.state['user_action'][-1] == 'help'
|
||||||
|
or self.state['user_action'][-1] == 'offer'
|
||||||
|
or self.state['user_action'][-1] == 'reqmore'
|
||||||
|
or (self.state['user_action'][-1] == 'request' and len(self.state['request_state']) == 0)
|
||||||
|
):
|
||||||
|
system_action = 'offer'
|
||||||
|
# zaoferuj cale menu
|
||||||
|
|
||||||
|
elif self.state['user_action'][-1] == 'ack':
|
||||||
|
address = self.state["belief_state"]["address"]
|
||||||
|
payment_method = self.state["belief_state"]["payment_method"]
|
||||||
|
dish = self.state["belief_state"]["dish"]
|
||||||
|
# W przypadku braku szczegolnej informacji o czasie zamówienia zamawiamy natychmiast
|
||||||
|
|
||||||
|
if address and payment_method and dish:
|
||||||
|
system_action = 'bye'
|
||||||
|
self.state['terminated'] = True
|
||||||
|
# potwierdz i zakoncz, podsumuj zamowienie
|
||||||
|
else:
|
||||||
|
system_action = 'canthelp.missing_slot_value'
|
||||||
|
elif self.state['user_action'][-1] == 'restart':
|
||||||
|
system_action = 'welcomemsg'
|
||||||
|
# zachowaj sie jak na poczatku rozmowy
|
||||||
|
else:
|
||||||
|
system_action = 'inform'
|
||||||
|
# poinformuj o wybranych slotach z "request_state"
|
||||||
|
# lub o wszystkich jezeli nic nie ma w request state
|
||||||
|
|
||||||
|
self.state['system_action'].append(system_action)
|
||||||
|
return system_action
|
||||||
|
|
||||||
|
|
||||||
|
class NLG():
|
||||||
|
def __init__(self, state):
|
||||||
|
self.state = state
|
||||||
|
|
||||||
|
def __call__(self, msg) -> Any:
|
||||||
|
if msg == "imieMSG":
|
||||||
|
return "Mam na imie JARVIS"
|
||||||
|
else:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
model = Model()
|
||||||
|
|
||||||
|
# jezeli sie przywita to przywitaj uzytkownika (i pokaz menu)
|
||||||
|
# response = model("Cześć")
|
||||||
|
# response = model("Witam")
|
||||||
|
# response = model("Witam system")
|
||||||
|
# response = model("Hej, jakim botem jesteś?")
|
||||||
|
# response = model("Hej, czym się zajmujesz?")
|
||||||
|
# response = model("Hej, w czym mi możesz pomóc?")
|
||||||
|
response = model("Siema, w czym możesz mi pomóc?")
|
||||||
|
assert response == "welcomemsg"
|
||||||
|
|
||||||
|
print()
|
||||||
|
|
||||||
|
# jezeli prosi o pomoc lub po prostu o menu to zaoferuj cale menu
|
||||||
|
# response = model("Pokaz menu")
|
||||||
|
# response = model("A co do picia proponujesz?")
|
||||||
|
# response = model("Jakie inne desery oferujesz?")
|
||||||
|
response = model("Interesują mnie dania kuchni włoskiej oraz meksykanskiej.")
|
||||||
|
assert response == "offer"
|
||||||
|
|
||||||
|
print()
|
||||||
|
|
||||||
|
# jezeli wybierze danie to zapisz wybor i poinformuj o nim
|
||||||
|
# response = model("Wezmę rybe")
|
||||||
|
# response = model("Poproszę tatara")
|
||||||
|
response = model("Chciałbym zjesc tatara")
|
||||||
|
assert response == "inform"
|
||||||
|
|
||||||
|
print()
|
||||||
|
|
||||||
|
# jezeli poda adres to zapisze wybor i poinformuj o nim
|
||||||
|
# response = model('Poproszę na poznańską 2')
|
||||||
|
response = model("uniwersytetu poznanskiego 4 61-614 poznan")
|
||||||
|
assert response == "inform"
|
||||||
|
|
||||||
|
# jezeli sprobuje dokonac zamowienia bez podania potrzebnych informacji prosimy o nie
|
||||||
|
#response = model("Dobrze, nie mogę się już doczekać.")
|
||||||
|
response = model("Super, to zatem wszystko!")
|
||||||
|
assert response == "canthelp.missing_slot_value"
|
||||||
|
|
||||||
|
# jezeli wybierze rodzaj platnosci to zapisz wybor i poinformuj o nim
|
||||||
|
# response = model("karta")
|
||||||
|
# response = model("Poproszę blikiem z góry")
|
||||||
|
response = model("Zapłacę kartą przy odbiorze")
|
||||||
|
assert response == "inform"
|
||||||
|
|
||||||
|
print()
|
||||||
|
|
||||||
|
# jezeli potwiedzi zamowienie to zakoncz zamawianie sukcesem i wypisz calosc
|
||||||
|
# response = model("Potwierdzam!")
|
||||||
|
# response = model("Tak!")
|
||||||
|
# response = model("Tak to wszystko!")
|
||||||
|
# response = model("Super, to zatem wszystko!")
|
||||||
|
response = model("Dobrze, nie mogę się już doczekać.")
|
||||||
|
assert response == "bye"
|
||||||
|
|
||||||
|
print("----Konwersacja z restartem-------")
|
||||||
|
|
||||||
|
model = Model()
|
||||||
|
response = model("Siema, w czym możesz mi pomóc?")
|
||||||
|
assert response == "welcomemsg"
|
||||||
|
response = model("Interesują mnie dania kuchni włoskiej oraz meksykanskiej.")
|
||||||
|
assert response == "offer"
|
||||||
|
response = model("Chciałbym zjesc tatara")
|
||||||
|
assert response == "inform"
|
||||||
|
response = model("uniwersytetu poznanskiego 4 61-614 poznan")
|
||||||
|
assert response == "inform"
|
||||||
|
response = model("od nowa")
|
||||||
|
assert response == "welcomemsg"
|
||||||
|
response = model("Interesują mnie dania kuchni włoskiej oraz meksykanskiej.")
|
||||||
|
assert response == "offer"
|
||||||
|
response = model("Chciałbym zjesc tatara")
|
||||||
|
assert response == "inform"
|
||||||
|
response = model("uniwersytetu poznanskiego 4 61-614 poznan")
|
||||||
|
assert response == "inform"
|
||||||
|
response = model("Zapłacę kartą przy odbiorze")
|
||||||
|
assert response == "inform"
|
||||||
|
response = model("Dobrze, nie mogę się już doczekać.")
|
||||||
|
assert response == "bye"
|
363
dialog_with_nlg.py
Normal file
363
dialog_with_nlg.py
Normal file
@ -0,0 +1,363 @@
|
|||||||
|
import string
|
||||||
|
from typing import Any, List, Tuple
|
||||||
|
import os
|
||||||
|
|
||||||
|
import jsgf
|
||||||
|
from unidecode import unidecode
|
||||||
|
import random
|
||||||
|
from convlab.dst import dst
|
||||||
|
|
||||||
|
from transformers import (
|
||||||
|
AutoModelForSeq2SeqLM,
|
||||||
|
AutoTokenizer,
|
||||||
|
pipeline,
|
||||||
|
)
|
||||||
|
|
||||||
|
from transformers.utils import logging
|
||||||
|
|
||||||
|
logging.set_verbosity_error()
|
||||||
|
|
||||||
|
|
||||||
|
def default_state():
|
||||||
|
return dict(
|
||||||
|
user_action=[],
|
||||||
|
system_action=[],
|
||||||
|
belief_state={
|
||||||
|
'address': '',
|
||||||
|
'payment_method': '',
|
||||||
|
'dish': [],
|
||||||
|
'time': ''
|
||||||
|
},
|
||||||
|
booked={},
|
||||||
|
request_state=[],
|
||||||
|
terminated=False,
|
||||||
|
history=[]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Model:
|
||||||
|
def __init__(self):
|
||||||
|
self.state = default_state()
|
||||||
|
self.nlu = NLU()
|
||||||
|
self.dst = DST(self.state)
|
||||||
|
self.dp = DP(self.state)
|
||||||
|
self.nlg = NLG(self.state)
|
||||||
|
|
||||||
|
def __call__(self, prompt, debug=True) -> Any:
|
||||||
|
if debug:
|
||||||
|
print(prompt)
|
||||||
|
msg = prompt.lower()
|
||||||
|
|
||||||
|
r = self.nlu(msg)
|
||||||
|
slots = r['slots']
|
||||||
|
# print(r)
|
||||||
|
r = self.dst(r)
|
||||||
|
# print(r)
|
||||||
|
r = self.dp()
|
||||||
|
# print(r)
|
||||||
|
r = self.nlg(r, slots)
|
||||||
|
if debug:
|
||||||
|
print(r)
|
||||||
|
else:
|
||||||
|
print(f"JARVIS: {r}")
|
||||||
|
|
||||||
|
return r
|
||||||
|
|
||||||
|
|
||||||
|
class NLU():
|
||||||
|
def __init__(self):
|
||||||
|
self.book_grammar = jsgf.parse_grammar_file('book.jsgf')
|
||||||
|
|
||||||
|
def get_dialog_act(self, rule):
|
||||||
|
slots = []
|
||||||
|
self.get_slots(rule.expansion, slots)
|
||||||
|
return {'act': rule.name, 'slots': slots}
|
||||||
|
|
||||||
|
def get_slots(self, expansion, slots):
|
||||||
|
if expansion.tag != '':
|
||||||
|
slots.append((expansion.tag, expansion.current_match))
|
||||||
|
return
|
||||||
|
|
||||||
|
for child in expansion.children:
|
||||||
|
self.get_slots(child, slots)
|
||||||
|
|
||||||
|
if not expansion.children and isinstance(expansion, jsgf.NamedRuleRef):
|
||||||
|
self.get_slots(expansion.referenced_rule.expansion, slots)
|
||||||
|
|
||||||
|
def __call__(self, prompt) -> Any:
|
||||||
|
book_grammar = jsgf.parse_grammar_file('book.jsgf')
|
||||||
|
|
||||||
|
prompt = unidecode(prompt)
|
||||||
|
translator = str.maketrans('', '', string.punctuation)
|
||||||
|
prompt = prompt.translate(translator)
|
||||||
|
|
||||||
|
matched = book_grammar.find_matching_rules(prompt)
|
||||||
|
|
||||||
|
if matched:
|
||||||
|
return self.get_dialog_act(matched[0])
|
||||||
|
else:
|
||||||
|
return {'act': 'null', 'slots': []}
|
||||||
|
|
||||||
|
|
||||||
|
class DST(dst.DST):
|
||||||
|
|
||||||
|
def __init__(self, state):
|
||||||
|
dst.DST.__init__(self)
|
||||||
|
self.state = state
|
||||||
|
|
||||||
|
def __call__(self, user_act) -> Any:
|
||||||
|
if len(user_act['slots']) == 0:
|
||||||
|
user_act = [(user_act['act'], None, None)]
|
||||||
|
else:
|
||||||
|
user_act = [(user_act['act'], k, v) for k, v in user_act['slots'] if v is not None]
|
||||||
|
|
||||||
|
self.state['request_state'] = {}
|
||||||
|
for act, slot, value in user_act:
|
||||||
|
self.state['user_action'].append(act)
|
||||||
|
|
||||||
|
if act == "platnosc":
|
||||||
|
self.state['belief_state']['payment_method'] = value
|
||||||
|
self.state['request_state'] = ['payment_method']
|
||||||
|
|
||||||
|
elif act == "offer":
|
||||||
|
self.state['request_state'] = ['menu']
|
||||||
|
|
||||||
|
elif act == 'select':
|
||||||
|
if slot == 'dish':
|
||||||
|
self.state['belief_state']['dish'].append(value)
|
||||||
|
else:
|
||||||
|
self.state['belief_state'][slot] = value
|
||||||
|
self.state['request_state'] = [slot]
|
||||||
|
|
||||||
|
elif act == 'inform':
|
||||||
|
pass
|
||||||
|
|
||||||
|
elif act == 'request':
|
||||||
|
pass
|
||||||
|
elif act == 'restart':
|
||||||
|
self.state["belief_state"] = default_state()["belief_state"]
|
||||||
|
self.state["booked"] = {}
|
||||||
|
self.state["request_state"] = []
|
||||||
|
self.state["terminated"] = False
|
||||||
|
self.state["history"] = []
|
||||||
|
return self.state
|
||||||
|
|
||||||
|
|
||||||
|
class DP():
|
||||||
|
def __init__(self, state):
|
||||||
|
self.state = state
|
||||||
|
|
||||||
|
def __call__(self) -> Any:
|
||||||
|
system_action = None
|
||||||
|
|
||||||
|
if self.state['user_action'][-1] == 'hello':
|
||||||
|
system_action = 'welcomemsg'
|
||||||
|
# przywitaj uzytkownika (i pokaz menu)
|
||||||
|
|
||||||
|
elif self.state['user_action'][-1] == 'select':
|
||||||
|
system_action = 'inform'
|
||||||
|
# poinformuj o wybranych slotach z "request_state"
|
||||||
|
|
||||||
|
elif (self.state['user_action'][-1] == 'help'
|
||||||
|
or self.state['user_action'][-1] == 'offer'
|
||||||
|
or self.state['user_action'][-1] == 'reqmore'
|
||||||
|
or (self.state['user_action'][-1] == 'request' and len(self.state['request_state']) == 0)
|
||||||
|
):
|
||||||
|
system_action = 'offer'
|
||||||
|
# zaoferuj cale menu
|
||||||
|
|
||||||
|
elif self.state['user_action'][-1] == 'ack':
|
||||||
|
address = self.state["belief_state"]["address"]
|
||||||
|
payment_method = self.state["belief_state"]["payment_method"]
|
||||||
|
dish = self.state["belief_state"]["dish"]
|
||||||
|
# W przypadku braku szczegolnej informacji o czasie zamówienia zamawiamy natychmiast
|
||||||
|
|
||||||
|
if address and payment_method and dish:
|
||||||
|
system_action = 'bye'
|
||||||
|
self.state['terminated'] = True
|
||||||
|
# potwierdz i zakoncz, podsumuj zamowienie
|
||||||
|
else:
|
||||||
|
system_action = 'canthelp.missing_slot_value'
|
||||||
|
elif self.state['user_action'][-1] == 'restart':
|
||||||
|
system_action = 'welcomemsg'
|
||||||
|
# zachowaj sie jak na poczatku rozmowy
|
||||||
|
else:
|
||||||
|
system_action = 'inform'
|
||||||
|
# poinformuj o wybranych slotach z "request_state"
|
||||||
|
# lub o wszystkich jezeli nic nie ma w request state
|
||||||
|
|
||||||
|
self.state['system_action'].append(system_action)
|
||||||
|
return system_action
|
||||||
|
|
||||||
|
|
||||||
|
class NLG():
|
||||||
|
def __init__(self, state):
|
||||||
|
self.model = AutoModelForSeq2SeqLM.from_pretrained("filnow/nlg-umt5-pol")
|
||||||
|
self.tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
|
||||||
|
self.nlg_pipeline = pipeline('summarization', model=self.model, tokenizer=self.tokenizer)
|
||||||
|
|
||||||
|
self.messages = {
|
||||||
|
"welcomemsg": [
|
||||||
|
"Witaj w naszej restauracji! Jak mogę Ci pomóc?",
|
||||||
|
"Witaj! W czym mogę pomóc?",
|
||||||
|
"Hej! Co mogę dla Ciebie zrobić?"
|
||||||
|
],
|
||||||
|
"canthelp": [
|
||||||
|
"Przepraszam, nie mogę pomóc w tej chwili.",
|
||||||
|
"Nie jestem w stanie pomóc.",
|
||||||
|
"Przepraszam, nie rozumiem."
|
||||||
|
],
|
||||||
|
"bye": [
|
||||||
|
"Dziękujemy za zamówienie! Smacznego!",
|
||||||
|
"Smacznego! Do zobaczenia!",
|
||||||
|
"Dziękujemy za skorzystanie z naszych usług!"
|
||||||
|
],
|
||||||
|
"affirm": [
|
||||||
|
"Zamówienie zostało złożone!",
|
||||||
|
"Potwierdzam zamówienie!",
|
||||||
|
"Skladam zamówienie!"
|
||||||
|
],
|
||||||
|
"repeat": [
|
||||||
|
"Możesz powtórzyć?",
|
||||||
|
"Nie zrozumiałem, możesz powtórzyć?",
|
||||||
|
"Nie zrozumiałem, możesz powtórzyć jeszcze raz?"
|
||||||
|
],
|
||||||
|
"reqmore": [
|
||||||
|
"Potrzebujesz więcej informacji?",
|
||||||
|
"Czy mogę pomóc w czymś jeszcze?",
|
||||||
|
"Czy mogę zaoferować coś jeszcze?"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
def __call__(self, act: str, slots: List[Tuple[str, str]]) -> str:
|
||||||
|
if act == 'welcomemsg':
|
||||||
|
return random.choice(self.messages["welcomemsg"])
|
||||||
|
|
||||||
|
elif act in ["inform", "request", "select"]:
|
||||||
|
if slots == []:
|
||||||
|
return "Przepraszam nie rozumiem. Podaj więcej informacji."
|
||||||
|
else:
|
||||||
|
text = [f"{slot[0]}[{slot[1]}]" for slot in slots if slot[1] is not None]
|
||||||
|
return self.nlg_pipeline(f'generate text: {", ".join(text)}')[0]['summary_text']
|
||||||
|
|
||||||
|
elif act == "canthelp.missing_slot_value" or act == "canthelp":
|
||||||
|
return random.choice(self.messages["canthelp"])
|
||||||
|
|
||||||
|
elif act == "bye":
|
||||||
|
return random.choice(self.messages["bye"])
|
||||||
|
|
||||||
|
elif act == 'affirm':
|
||||||
|
return random.choice(self.messages["affirm"])
|
||||||
|
|
||||||
|
elif act == "repeat":
|
||||||
|
return random.choice(self.messages["repeat"])
|
||||||
|
|
||||||
|
elif act == "reqmore":
|
||||||
|
return random.choice(self.messages["reqmore"])
|
||||||
|
|
||||||
|
elif act == "offer":
|
||||||
|
return "Oto nasze menu: tatar, poledwica, pizza, tiramisu, zrazy [wolowe], pyzy, placki, makaron, picia, zupa, ryba, zupe grzybowa, stek \n Pragniemy zaznaczyć, że nie które dania mogą być niedostępne"
|
||||||
|
|
||||||
|
|
||||||
|
def ascii_jarvis():
|
||||||
|
print(''''
|
||||||
|
____. _____ ______________ ____.___ _________
|
||||||
|
| | / _ ______ \ \ / /| |/ _____/
|
||||||
|
| |/ /_\ \| _/\ Y / | |\_____ \
|
||||||
|
/\__| / | \ | \ \ / | |/ |
|
||||||
|
\________\____|__ /____|_ / \___/ |___/_______ /
|
||||||
|
\/ \/ \/ ' ''')
|
||||||
|
|
||||||
|
def clear_console():
|
||||||
|
operating_system = os.name
|
||||||
|
if operating_system == 'nt':
|
||||||
|
os.system('cls')
|
||||||
|
else:
|
||||||
|
os.system('clear')
|
||||||
|
|
||||||
|
def dialogue_test():
|
||||||
|
model = Model()
|
||||||
|
|
||||||
|
# jezeli sie przywita to przywitaj uzytkownika (i pokaz menu)
|
||||||
|
# response = model("Cześć")
|
||||||
|
# response = model("Witam")
|
||||||
|
# response = model("Witam system")
|
||||||
|
# response = model("Hej, jakim botem jesteś?")
|
||||||
|
# response = model("Hej, czym się zajmujesz?")
|
||||||
|
# response = model("Hej, w czym mi możesz pomóc?")
|
||||||
|
print()
|
||||||
|
response = model("Siema, w czym możesz mi pomóc?")
|
||||||
|
print()
|
||||||
|
# jezeli prosi o pomoc lub po prostu o menu to zaoferuj cale menu
|
||||||
|
# response = model("Pokaz menu")
|
||||||
|
# response = model("A co do picia proponujesz?")
|
||||||
|
# response = model("Jakie inne desery oferujesz?")
|
||||||
|
response = model("Interesują mnie dania kuchni włoskiej oraz meksykanskiej.")
|
||||||
|
print()
|
||||||
|
# jezeli wybierze danie to zapisz wybor i poinformuj o nim
|
||||||
|
# response = model("Poproszę tatara")
|
||||||
|
response = model("Chciałbym zjesc tatara")
|
||||||
|
print()
|
||||||
|
# jezeli poda adres to zapisze wybor i poinformuj o nim
|
||||||
|
# response = model('Poproszę na poznańską 2')
|
||||||
|
response = model("uniwersytetu poznanskiego 4 61-614 poznan")
|
||||||
|
print()
|
||||||
|
# jezeli sprobuje dokonac zamowienia bez podania potrzebnych informacji prosimy o nie
|
||||||
|
# response = model("Dobrze, nie mogę się już doczekać.")
|
||||||
|
response = model("Super, to zatem wszystko!")
|
||||||
|
print()
|
||||||
|
# jezeli wybierze rodzaj platnosci to zapisz wybor i poinformuj o nim
|
||||||
|
# response = model("karta")
|
||||||
|
# response = model("Poproszę blikiem z góry")
|
||||||
|
response = model("Zapłacę kartą przy odbiorze")
|
||||||
|
print()
|
||||||
|
# jezeli potwiedzi zamowienie to zakoncz zamawianie sukcesem i wypisz calosc
|
||||||
|
# response = model("Potwierdzam!")
|
||||||
|
# response = model("Tak!")
|
||||||
|
# response = model("Tak to wszystko!")
|
||||||
|
# response = model("Super, to zatem wszystko!")
|
||||||
|
response = model("Dobrze, nie mogę się już doczekać.")
|
||||||
|
print()
|
||||||
|
|
||||||
|
print("----Konwersacja z restartem-------")
|
||||||
|
|
||||||
|
model = Model()
|
||||||
|
response = model("Siema, w czym możesz mi pomóc?")
|
||||||
|
print()
|
||||||
|
response = model("Interesują mnie dania kuchni włoskiej oraz meksykanskiej.")
|
||||||
|
print()
|
||||||
|
response = model("Chciałbym zjesc tatara")
|
||||||
|
print()
|
||||||
|
response = model("uniwersytetu poznanskiego 4 61-614 poznan")
|
||||||
|
print()
|
||||||
|
response = model("od nowa")
|
||||||
|
print()
|
||||||
|
response = model("Interesują mnie dania kuchni włoskiej oraz meksykanskiej.")
|
||||||
|
print()
|
||||||
|
response = model("Chciałbym zjesc tatara")
|
||||||
|
print()
|
||||||
|
response = model("uniwersytetu poznanskiego 4 61-614 poznan")
|
||||||
|
print()
|
||||||
|
response = model("Zapłacę kartą przy odbiorze")
|
||||||
|
print()
|
||||||
|
response = model("Dobrze, nie mogę się już doczekać.")
|
||||||
|
print()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
model = Model()
|
||||||
|
ascii_jarvis()
|
||||||
|
print("Chatbot Jarvis\n--------------")
|
||||||
|
print("Dostępe komendy: \n\n- SYSTEM_FINISH - zakończenie rozmowy\n- Pokaz menu - wyświetlenie menu\n")
|
||||||
|
while True:
|
||||||
|
print("\nUżytkownik: ")
|
||||||
|
user_input = input()
|
||||||
|
while user_input == "SYSTEM_FINISH":
|
||||||
|
clear_console()
|
||||||
|
model = Model()
|
||||||
|
ascii_jarvis()
|
||||||
|
print("Chatbot Jarvis\n--------------")
|
||||||
|
print("Dostępe komendy: \n- SYSTEM_FINISH - zakończenie rozmowy\n- Pokaz menu - wyświetlenie menu\n")
|
||||||
|
print("\nUżytkownik: ")
|
||||||
|
user_input = input()
|
||||||
|
response = model(user_input, debug=False)
|
35
embeddings.py
Normal file
35
embeddings.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import numpy as np
|
||||||
|
import torch
|
||||||
|
from transformers import AutoModel, AutoTokenizer
|
||||||
|
|
||||||
|
tokenizer = AutoTokenizer.from_pretrained("Geotrend/distilbert-base-pl-cased")
|
||||||
|
model = AutoModel.from_pretrained("Geotrend/distilbert-base-pl-cased")
|
||||||
|
|
||||||
|
text = """
|
||||||
|
"nazwa": "Tatar wołowy","""
|
||||||
|
# "skladniki": [
|
||||||
|
# "wołowina",
|
||||||
|
# "cebula",
|
||||||
|
# "ogórki kiszone",
|
||||||
|
# "musztarda",
|
||||||
|
# "jajko",
|
||||||
|
# "pieprz",
|
||||||
|
# "sól"
|
||||||
|
# ],
|
||||||
|
# "alergeny": [
|
||||||
|
# "jajko",
|
||||||
|
# "gorczyca"
|
||||||
|
# ]
|
||||||
|
# """
|
||||||
|
encoded_input = tokenizer(text, return_tensors='pt', padding=True)
|
||||||
|
output = model(**encoded_input)
|
||||||
|
prompt = "tatar"
|
||||||
|
encoded_prompt = tokenizer(prompt, return_tensors='pt', padding=True)
|
||||||
|
output_prompt = model(**encoded_prompt)
|
||||||
|
|
||||||
|
text_embedding = output.last_hidden_state[:, 0, :]
|
||||||
|
prompt_embedding = output_prompt.last_hidden_state[:, 0, :]
|
||||||
|
cosine = torch.nn.functional.cosine_similarity(
|
||||||
|
text_embedding, prompt_embedding, dim=1)
|
||||||
|
|
||||||
|
print(cosine.item())
|
67
evaluate.py
Normal file
67
evaluate.py
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
import os
|
||||||
|
import pandas as pd
|
||||||
|
import jsgf
|
||||||
|
from unidecode import unidecode
|
||||||
|
import string
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
|
||||||
|
def decode_prompt(prompt):
|
||||||
|
prompt_decoded = unidecode(prompt)
|
||||||
|
translator = str.maketrans('', '', string.punctuation)
|
||||||
|
prompt_decoded = prompt_decoded.translate(translator)
|
||||||
|
return prompt_decoded
|
||||||
|
|
||||||
|
grammar = jsgf.parse_grammar_file('book.jsgf')
|
||||||
|
data_files = []
|
||||||
|
|
||||||
|
for filename in os.listdir("data"):
|
||||||
|
f = os.path.join("data", filename)
|
||||||
|
if os.path.isfile(f):
|
||||||
|
data_files.append(pd.read_csv(f, sep='\t', header=None))
|
||||||
|
|
||||||
|
true_positives = 0
|
||||||
|
false_positives = 0
|
||||||
|
false_negatives = 0
|
||||||
|
|
||||||
|
acts_recognized = defaultdict(int)
|
||||||
|
acts_not_recognized = defaultdict(int)
|
||||||
|
false_negatives = 0
|
||||||
|
false_positives = 0
|
||||||
|
|
||||||
|
for df in data_files:
|
||||||
|
if len(df.columns) == 3:
|
||||||
|
df.columns = ["agent", "message", "act"]
|
||||||
|
elif len(df.columns) == 2:
|
||||||
|
df.columns = ["agent", "message"]
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
user_speech_rows = df[df['agent'] == "user"]
|
||||||
|
user_speeches = user_speech_rows["message"]
|
||||||
|
entries_count = len(user_speeches)
|
||||||
|
|
||||||
|
found_rules = user_speeches.apply(lambda x: grammar.find_matching_rules(decode_prompt(x)))
|
||||||
|
|
||||||
|
for line, rules in zip(user_speech_rows.iterrows(), found_rules):
|
||||||
|
act = line[1]['act'].split('(')[0]
|
||||||
|
if len(rules) > 0:
|
||||||
|
recognized_act = rules[0].name
|
||||||
|
if recognized_act in act:
|
||||||
|
true_positives += 1
|
||||||
|
acts_recognized[act] += 1
|
||||||
|
else:
|
||||||
|
false_positives += 1
|
||||||
|
acts_not_recognized[act] += 1
|
||||||
|
else:
|
||||||
|
false_negatives += 1
|
||||||
|
acts_not_recognized[act] += 1
|
||||||
|
|
||||||
|
accuracy = (true_positives + false_positives) / ((true_positives + false_positives) + sum([x for x in acts_not_recognized.values()]))
|
||||||
|
precision = true_positives / (true_positives + false_positives) if (true_positives + false_positives) != 0 else 0
|
||||||
|
recall = true_positives / (true_positives + false_negatives) if (true_positives + false_negatives) != 0 else 0
|
||||||
|
|
||||||
|
print(f"Accuracy: {accuracy}")
|
||||||
|
print(f"Precision: {precision}")
|
||||||
|
print(f"Recall: {recall}")
|
||||||
|
|
62
get_acts.py
Normal file
62
get_acts.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import os
|
||||||
|
import pandas as pd
|
||||||
|
from collections import defaultdict
|
||||||
|
import unicodedata
|
||||||
|
|
||||||
|
|
||||||
|
def get_act_name_and_slots(act="request(cuisine)"):
|
||||||
|
acts = [act]
|
||||||
|
if "&" in act:
|
||||||
|
acts = act.split("&")
|
||||||
|
for act in acts:
|
||||||
|
if "(" not in act:
|
||||||
|
return act, []
|
||||||
|
act_name = act.split("(")[0]
|
||||||
|
try:
|
||||||
|
slots = act.split("(")[1].split(")")[0].split(",")
|
||||||
|
except IndexError:
|
||||||
|
slots = []
|
||||||
|
print(f"Error parsing act: {act}")
|
||||||
|
return act_name, slots
|
||||||
|
|
||||||
|
|
||||||
|
data_files = []
|
||||||
|
|
||||||
|
for filename in os.listdir("data"):
|
||||||
|
f = os.path.join("data", filename)
|
||||||
|
if os.path.isfile(f):
|
||||||
|
data_files.append(pd.read_csv(f, sep='\t', header=None))
|
||||||
|
|
||||||
|
acts = defaultdict(lambda: {"msg": [], "slots": []})
|
||||||
|
|
||||||
|
for df in data_files:
|
||||||
|
if len(df.columns) == 3:
|
||||||
|
df.columns = ["agent", "message", "act"]
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
current_acts = df['act']
|
||||||
|
user_speech_rows = df[df['agent'] == "user"]["message"]
|
||||||
|
for act, speech in zip(current_acts, user_speech_rows):
|
||||||
|
speech = unicodedata.normalize('NFKD', speech).encode(
|
||||||
|
'ASCII', 'ignore').decode('utf-8')
|
||||||
|
act_name, slots = get_act_name_and_slots(act)
|
||||||
|
for i in range(len(slots)):
|
||||||
|
slots[i] = unicodedata.normalize(
|
||||||
|
'NFKD', slots[i]).encode('ASCII', 'ignore').decode('utf-8')
|
||||||
|
acts[act_name]["slots"] += slots
|
||||||
|
acts[act_name]["msg"].append(speech)
|
||||||
|
|
||||||
|
print("Acts:")
|
||||||
|
for act in acts:
|
||||||
|
if act in ["hello", "welcomemsg", "ack", "rezerwuj"]:
|
||||||
|
continue
|
||||||
|
print(f"{act}: {len(acts[act]['msg'])} examples")
|
||||||
|
for sentence in acts[act]["msg"]:
|
||||||
|
print(f"\t{sentence}")
|
||||||
|
|
||||||
|
print("\n\n")
|
||||||
|
print()
|
||||||
|
|
||||||
|
df_act = pd.DataFrame(acts)
|
||||||
|
df_act.to_json("acts.json", orient="index")
|
||||||
|
print("Acts saved to acts.json")
|
238
menu.json
Normal file
238
menu.json
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
{
|
||||||
|
"przystawki": [
|
||||||
|
{
|
||||||
|
"nazwa": "Tatar wołowy",
|
||||||
|
"skladniki": [
|
||||||
|
"wołowina",
|
||||||
|
"cebula",
|
||||||
|
"ogórki kiszone",
|
||||||
|
"musztarda",
|
||||||
|
"jajko",
|
||||||
|
"pieprz",
|
||||||
|
"sól"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"jajko",
|
||||||
|
"gorczyca"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Carpaccio z buraka",
|
||||||
|
"skladniki": [
|
||||||
|
"burak",
|
||||||
|
"oliwa z oliwek",
|
||||||
|
"sól",
|
||||||
|
"pieprz",
|
||||||
|
"rukola",
|
||||||
|
"parmezan"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"mleko"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Sałatka caprese",
|
||||||
|
"skladniki": [
|
||||||
|
"pomidory",
|
||||||
|
"mozzarella",
|
||||||
|
"bazylia",
|
||||||
|
"oliwa z oliwek",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"mleko"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"zupy": [
|
||||||
|
{
|
||||||
|
"nazwa": "Krem z dyni",
|
||||||
|
"skladniki": [
|
||||||
|
"dynia",
|
||||||
|
"cebula",
|
||||||
|
"czosnek",
|
||||||
|
"śmietana",
|
||||||
|
"bulion warzywny",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"mleko"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Rosół z makaronem",
|
||||||
|
"skladniki": [
|
||||||
|
"kurczak",
|
||||||
|
"marchew",
|
||||||
|
"seler",
|
||||||
|
"pietruszka",
|
||||||
|
"cebula",
|
||||||
|
"makaron",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"gluten"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Zupa grzybowa",
|
||||||
|
"skladniki": [
|
||||||
|
"grzyby leśne",
|
||||||
|
"cebula",
|
||||||
|
"śmietana",
|
||||||
|
"bulion warzywny",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"mleko"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dania_glowne": [
|
||||||
|
{
|
||||||
|
"nazwa": "Stek z polędwicy wołowej",
|
||||||
|
"skladniki": [
|
||||||
|
"polędwica wołowa",
|
||||||
|
"masło",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Pieczona kaczka z jabłkami",
|
||||||
|
"skladniki": [
|
||||||
|
"kaczka",
|
||||||
|
"jabłka",
|
||||||
|
"cebula",
|
||||||
|
"miód",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Lasagne",
|
||||||
|
"skladniki": [
|
||||||
|
"mięso mielone",
|
||||||
|
"sos pomidorowy",
|
||||||
|
"ser",
|
||||||
|
"makaron",
|
||||||
|
"cebula",
|
||||||
|
"czosnek",
|
||||||
|
"śmietana"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"gluten",
|
||||||
|
"mleko"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Ryba z grilla",
|
||||||
|
"skladniki": [
|
||||||
|
"filet rybny",
|
||||||
|
"oliwa z oliwek",
|
||||||
|
"cytryna",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"ryba"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Risotto z kurczakiem i grzybami",
|
||||||
|
"skladniki": [
|
||||||
|
"kurczak",
|
||||||
|
"ryż",
|
||||||
|
"grzyby",
|
||||||
|
"cebula",
|
||||||
|
"czosnek",
|
||||||
|
"bulion",
|
||||||
|
"parmezan",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"mleko"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Pierogi ruskie",
|
||||||
|
"skladniki": [
|
||||||
|
"ciasto",
|
||||||
|
"ziemniaki",
|
||||||
|
"cebula",
|
||||||
|
"ser",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"gluten",
|
||||||
|
"mleko"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Placki ziemniaczane",
|
||||||
|
"skladniki": [
|
||||||
|
"ziemniaki",
|
||||||
|
"cebula",
|
||||||
|
"jajko",
|
||||||
|
"mąka",
|
||||||
|
"sól",
|
||||||
|
"pieprz"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"gluten",
|
||||||
|
"jajko"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"desery": [
|
||||||
|
{
|
||||||
|
"nazwa": "Tiramisu",
|
||||||
|
"skladniki": [
|
||||||
|
"mascarpone",
|
||||||
|
"jajka",
|
||||||
|
"cukier",
|
||||||
|
"kawa",
|
||||||
|
"biszkopt",
|
||||||
|
"kakao"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"jajko",
|
||||||
|
"mleko",
|
||||||
|
"gluten"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Szarlotka",
|
||||||
|
"skladniki": [
|
||||||
|
"jabłka",
|
||||||
|
"ciasto kruche",
|
||||||
|
"cukier",
|
||||||
|
"cynamon",
|
||||||
|
"rodzynki"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"gluten"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nazwa": "Lody waniliowe",
|
||||||
|
"skladniki": [
|
||||||
|
"śmietanka",
|
||||||
|
"mleko",
|
||||||
|
"cukier",
|
||||||
|
"wanilia"
|
||||||
|
],
|
||||||
|
"alergeny": [
|
||||||
|
"mleko"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
20628
nlg_data.csv
Normal file
20628
nlg_data.csv
Normal file
File diff suppressed because it is too large
Load Diff
111
nlg_data_generator.py
Normal file
111
nlg_data_generator.py
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import random
|
||||||
|
|
||||||
|
|
||||||
|
addresses = ["ulica Zielona 15", "ulica Czerwona 20", "ulica Niebieska 30", "ulica Biala 5", "ulica Czarna 10", "ulica Fioletowa 25", "ulica Pomaranczowa 35", "ulica Zolta 40", "ulica Różowa 45", "ulica Szara 50", "ulica Brązowa 55", "ulica Srebrna 60", "ulica Złota 65", "ulica Platynowa 70", "ulica Miedziana 75", "ulica Niklowa 80", "ulica Aluminium 85", "ulica Stalowa 90", "ulica Żelazna 95", "ulica Miedziana 100"]
|
||||||
|
payment_methods = ["karta kredytowa", "gotowka", "blik", "przelew", "google pay"]
|
||||||
|
dishes = ["spaghetti", "pierogi", "schabowy", "pizza", "burger", "tatar", "poledwica", "tiramisu", "zrazy", "pyzy", "placki", "makaron", "zupa", "ryba", "cole", "tiramisu", "zupa grzybowa", "stek", "soki", "napoj"]
|
||||||
|
times = ["8:00", "12:00", "18:00", "20:00", "10:00", "dziesiata", "dziewiata", "osma", "siodma", "szosta", "czwarta", "trzecia", "druga", "pierwsza", "poludnie", "polnoc", "wschod", "zachod", "poludniowy wschod", "poludniowy zachod", "polnocny wschod", "polnocny zachod", "rano", "wieczor", "noc", "popoludnie", "przedpoludnie", "po poludniu", "po polnocy", "przed polnoca", "przed poludniem"]
|
||||||
|
portion_sizes = ["mała", "średnia", "duża", "gigantyczna", "mini"]
|
||||||
|
price = ["10", "50", "100", "150", "tanio", "drogo"]
|
||||||
|
ingredient = ["mięso", "mleko", "jajka", "mąka", "cukier", "sól", "pieprz", "oliwa", "masło", "ser", "warzywa", "owoce", "ryż", "makaron", "zupa", "ryba", "sos", "przyprawy", "soki", "napoje", "alkohol", "kawa", "herbata", "deser", "ciasto", "chleb", "pasta", "sos", "danie", "potrawa", "zupa", "sałatka", "kanapka", "tost", "jajecznica", "omlet", "placki", "pierogi", "schabowy", "kotlet", "kotlet schabowy", "kotlet mielony", "kotlet z kurczaka", "kotlet z indyka", "kotlet z ryby", "kotlet z warzyw", "kotlet ziemniaczany", "kotlet z kaszy", "kotlet z makaronu", "kotlet z ziemniaków", "kotlet z ryżu"]
|
||||||
|
allergy = ["gluten", "laktoza", "jajka", "orzechy", "soja", "ryby", "skorupiaki", "mleko", "seler", "gorczyca", "sezam", "siarczyny", "łubin", "migdały", "orzechy laskowe", "orzechy włoskie", "orzechy nerkowca", "orzechy ziemne", "orzechy brazylijskie", "orzechy makadamia", "orzechy pecan", "orzechy pistacjowe", "orzechy kasztanowe", "orzechy pinii", "orzechy arachidowe", "orzechy ziemne", "orzechy brazylijskie", "orzechy makadamia", "orzechy pecan", "orzechy pistacjowe", "orzechy kasztanowe", "orzechy pinii", "orzechy arachidowe", "orzechy ziemne", "orzechy brazylijskie", "orzechy makadamia", "orzechy pecan", "orzechy pistacjowe"]
|
||||||
|
|
||||||
|
def create_ref(slot, value):
|
||||||
|
ref_templates = {
|
||||||
|
"address": [
|
||||||
|
f"Zamówienie zostanie dostarczone na {value}.",
|
||||||
|
f"Niestety nie dostarczamy na {value}.",
|
||||||
|
f"Oczywiście, dostarczymy na {value}.",
|
||||||
|
f"Dostawa możliwa na {value}.",
|
||||||
|
f"Nie dostarczamy na {value}."
|
||||||
|
],
|
||||||
|
"payment_method": [
|
||||||
|
f"Akceptujemy płatność {value}.",
|
||||||
|
f"Nie akceptujemy płatności {value}.",
|
||||||
|
f"Możesz płacić {value}.",
|
||||||
|
f"Płatność {value} jest możliwa.",
|
||||||
|
f"Nie obsługujemy płatności {value}."
|
||||||
|
],
|
||||||
|
"dish": [
|
||||||
|
f"Specjalnością jest {value}.",
|
||||||
|
f"Nie mamy w ofercie {value}.",
|
||||||
|
f"Zapraszamy na {value}.",
|
||||||
|
f"{value} jest dostępne.",
|
||||||
|
f"Nie mamy {value} w menu."
|
||||||
|
],
|
||||||
|
"time": [
|
||||||
|
f"Godzina otwarcia to {value}.",
|
||||||
|
f"Nieczynne o {value}.",
|
||||||
|
f"Zapraszamy o {value}.",
|
||||||
|
f"Otwarte od {value}.",
|
||||||
|
f"Zamknięte o {value}."
|
||||||
|
],
|
||||||
|
"portion_size": [
|
||||||
|
f"Dostępne porcje: {value}.",
|
||||||
|
f"Brak porcji {value}.",
|
||||||
|
f"Dostępne porcje: {value}.",
|
||||||
|
f"Porcja {value} jest dostępna.",
|
||||||
|
f"Nie mamy porcji {value}."
|
||||||
|
],
|
||||||
|
"price": [
|
||||||
|
f"Cena to {value}.",
|
||||||
|
f"Nie mamy ceny {value}.",
|
||||||
|
f"Możesz kupić za {value}.",
|
||||||
|
f"Cena wynosi {value}.",
|
||||||
|
],
|
||||||
|
"ingredient": [
|
||||||
|
f"Składnik to {value}.",
|
||||||
|
f"Nie mamy składnika {value}.",
|
||||||
|
f"Zawiera {value}.",
|
||||||
|
f"Składnik {value} jest dostępny.",
|
||||||
|
],
|
||||||
|
"allergy": [
|
||||||
|
f"Zawiera alergen {value}.",
|
||||||
|
f"Nie zawiera alergenu {value}.",
|
||||||
|
f"Ostrzeżenie: alergen {value}.",
|
||||||
|
f"Produkt wolny od alergenu {value}.",
|
||||||
|
f"Nie mamy informacji o alergenie {value}."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
return ref_templates[slot]
|
||||||
|
|
||||||
|
slots_data = {
|
||||||
|
"address": addresses,
|
||||||
|
"payment_method": payment_methods,
|
||||||
|
"dish": dishes,
|
||||||
|
"time": times,
|
||||||
|
"portion_size": portion_sizes,
|
||||||
|
"price": price,
|
||||||
|
"ingredient": ingredient,
|
||||||
|
"allergy": allergy
|
||||||
|
}
|
||||||
|
|
||||||
|
data = []
|
||||||
|
|
||||||
|
def remove_duplicates(list_of_dicts):
|
||||||
|
list_of_tuples = [tuple(sorted(d.items())) for d in list_of_dicts]
|
||||||
|
unique_tuples = set(list_of_tuples)
|
||||||
|
unique_dicts = [dict(t) for t in unique_tuples]
|
||||||
|
|
||||||
|
return unique_dicts
|
||||||
|
|
||||||
|
def generate_sample(num_slots):
|
||||||
|
selected_slots = random.sample(slots_data.keys(), num_slots)
|
||||||
|
mr_list = []
|
||||||
|
ref_list = []
|
||||||
|
for slot in selected_slots:
|
||||||
|
value = random.choice(slots_data[slot])
|
||||||
|
mr_list.append(f"{slot}[{value}]")
|
||||||
|
ref_list.append(random.choice(create_ref(slot, value)))
|
||||||
|
if len(mr_list) == 1:
|
||||||
|
return {"mr": repr(mr_list[0]), "ref": " ".join(ref_list)}
|
||||||
|
else:
|
||||||
|
return {"mr": ", ".join(mr_list), "ref": " ".join(ref_list)}
|
||||||
|
|
||||||
|
for num_slots in range(0, 6):
|
||||||
|
for _ in range(5000):
|
||||||
|
data.append(generate_sample(num_slots))
|
||||||
|
|
||||||
|
df = pd.DataFrame(remove_duplicates(data))
|
||||||
|
df.to_csv('abc.csv', index=False)
|
1
nlg_train.ipynb
Normal file
1
nlg_train.ipynb
Normal file
File diff suppressed because one or more lines are too long
14
raw_acts.txt.txt
Normal file
14
raw_acts.txt.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
public <select> = potwierdzam | poprosze <liczba> porcje | no dobrze | uniwersytetu poznanskiego 4 61-614 poznan | to bedzie moje cae zamowienie | poprosze <potrawa> | czy moglibyscie przygotowac <liczba> porcji na okreslona godzine na wynos;
|
||||||
|
|
||||||
|
public <request> = interesuja mnie dania kuchni woskiej oraz meksykanskiej | jaka jest gramatura waszego burrito i czy mozna wybrac do niego mieso | przyjmujecie patnosc karta | a od ktorej do ktorej jest otwarta | super w takim razie czy mogbym dokonac rezerwacji na godzine 21 | przy oknie poprosze | jakie alergeny zawiera stek z grillowanymi warzywami i jakie piwa importowane macie dokadnie | czy akceptujecie bitcoina | a w jakiej cenie jest ta pizza | karta | koreanskie bibimbap z woowina brzmi dobrze ile kosztuje | nie nie chce nic zmieniac prosze o przekazanie dania do realizacji | zaplace gotowka przy odbiorze | lasagne brzmi super moge do tego wypic cole i zamowic jakis deser | wszystko jest okej dziekuje | chciabym dostac 2 rozne warianty mozesz mi zaproponowac alternatywe dla drugiej osoby zamiast ryby i rosou | podaj menu bez potraw na zimno | a piwo 0 | a czy mozna blikiem | jakie dania oferujecie | czy oferujecie rozne poziomy wysmazenia wolowiny | ile kosztuje to danie gowne | tak zoz zamowienie na adres xyz | a cos innego nie lubie kurczaka | oki | czy macie moze w ofercie zrazy woowe | jaka macie karte napojow | czy oferujecie dowoz | jaki jest koszt steka z poledwicy woowej caprese i wody gazowanej | poprosze o dostawe na adres rubiez 12j na godzine 16 | dziekuje czy moge zamowic posiki na godzine 15 | a co oferujecie z dan miesnych | czy do tego serwowane sa jeszcze ziemniaki | dziekuje bardzo w takim razie chciabym to zamowic | jaka sa ceny deserow | jak duza jest porcja pierogow ruskich | to poprosze do tego sok owocowy soki z jakich owocow sa dostepne czy sa one swiezo wyciskane | to poprosze dodac to do zamowienia oraz podsumowac cae zamowienie | na wynos | 00120 watykan | a czy macie jakies dania azjatyckie | w takim razie dodaj ja do zamowienia czy mogbys zaproponowac cos na przystawke i na deser | poprosze wode i cole | potwierdzam | nie dziekuje do widzzenia | chciabym zjesc tatara zupe grzybowa stek i tiramisu czy moge zjesc tatara bez cebuli | za drogo jednak nie zjem tatara z dowozem na adres biedronkowa 4 | w takim razie na przystawke bedzie tatar a co do zupy mam pytanie z jakich grzybow ona sie skada | w takim razie cae moje zamowienie to bedzie tatar krem z dyni stek z poledwicy woowej i obedzie sie bez deseru pytanie jeszcze czy mozna pacic karta | w takim razie chetnie zostane i na ten moment bedzie dla mnie wszystko | tak ale jeszcze to nie koniec;
|
||||||
|
|
||||||
|
public <reqmore> = w takim razie niech zostanie poczatkowa opcja mozemy przejsc do kwestii dostawy | platnosc gotowka ulica sezamkowa 123 pacanowo | okej to wziabym to a co do picia proponujesz | okej to wezme do tego cole zero ile wynosi koszt caego zamowienia | chciabym bez saatki jednak a w miejscu tego kiszonke czy maci kiszonki w restauracji | tak | dobrze a czy po takich potrawach nie bedzie mi smierdziao z buzi na randce | czemu nie podaes tego wczesniej piwo to tez napoj | tak | tak | kuflowe mocne | a czy mozecie zapakowac dania na wynoc | dobrze to poprosze jednak 4-pak kuflowego i prosze zapakowac na wynos | to poprosze | dobrze w takim razie zaproponuj cos innego | to bedzie moje cae zamowienie;
|
||||||
|
|
||||||
|
public <reqalts> = chetnie wezme ziemniaki pieczone | to prosze dodac to do moje zamowienia czy macie jakies napoje | patnosc moze byc karta ale w 3 porcjach | super to zatem wszystko | pasuje czy mozesz powiedziec jakie skadniki sa w saatce moge miec uczulenia na niektore skadniki | a mozliwosc jest z szarlotki z lodami | dostawy i patnosci | a na miejscu moge zapacic | wezme cole ile wynosi cakowity koszt zamowienia | okej w takim razie dziekuje za pomoc pojde do innej restauracji;
|
||||||
|
|
||||||
|
public <offer> = jakie dodatki moge wziac do ryby | jakie inne desery oferujesz | ul tulipanow 6 poznan | jaki zestaw zarekomendowabys dla studenta z ograniczonym budzetem | a macie piwo | a co bys zarekomendowa do takiego obiadu | czy patnosc mozna podzielic na 3 osoby | to gotowka | poprosze srednio krwisty | dziekuje za pomoc | dobrze a czy carpaccio posiada jakies alergeny | chciabym sie dowiedziec jaka ryba wiekszosci ryb nie lubie | chciabym saatke ktora nie ma majonezy i jest swieza | to gotowki za ile musze byc w restauracji zeby wszystko byo gotowo | to odbiore | podsumuj to | pomaranczowy | super dziekuje | spozywanie tuszczy i wyeliminowanie weglowodanow a ponadto znaczne ograniczenie posikow zawierajacych cukier a wiec owocow i warzyw | a jest piwo | czy macie w ofercie wodke | a ile wyjdzie za wszystko | dziekuje to wszystko | czy dao by sie ja zamienic na inna skoro nie lubie ososia | okej brzmi dobrze chciabym jeszcze zamowic cos do picia | skad to wiesz jako system | swietnie dziekuje za pomoc | pokaz menu | czy moge zjesc tatara bez cebuli;
|
||||||
|
|
||||||
|
public <negate> = dziekuje to wszystko | jakie aperitify sa u was dostepne | poprosze w takim razie carpaccio z buraka tiramisu i jakies dwa napoje | dobrze nie moge sie juz doczekac | troche drogo nie ma znizki dla studentow;
|
||||||
|
|
||||||
|
public <affirm> = poprosze w takim razie ta pizze razy 2 oraz 15 litra coli | chciabym zamowic na adres xyz | wybornie czy z kuchni woskiej znajdzie sie lasagne oraz czy w winach znajda sie ciekawsze pozycje takie jak amarena | jestem wysoce niepocieszony z powodu braku trunkow siarczystych ale jakos przebrne przez to czy na deser jest mozliwosc tiramisu | dziekuje | na 15 dzisiaj mozna zarezerowac stoli z podanym obiadem | na 15:00 na pojutrze | no dobrze przekonaes mnie zoze u was zamowienie czy przyjmujecie patnosc karta | pamietajcie zeby byo ciepe;
|
||||||
|
|
149
requirements-analysis.md
Normal file
149
requirements-analysis.md
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
Przyjmowania zamówień w restauracji
|
||||||
|
==============
|
||||||
|
|
||||||
|
Zadanie 1: Złożenie zamówienia
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
*system:* Witamy w restauracji "Jarvis". Proszę o złożenie zamówienia.
|
||||||
|
|
||||||
|
*user:* Dzień dobry, jakie są dziś dostępne zupy.
|
||||||
|
|
||||||
|
*system:* "Pomidorowa" i "ogórkowa".
|
||||||
|
|
||||||
|
*user:* Poprosiłbym "Pomidorową". A jakie są dane główne?
|
||||||
|
|
||||||
|
*system:* "Placek po węgiersku", "...", "..."
|
||||||
|
|
||||||
|
*user:* Poprosiłbym "Placek po węgiersku".
|
||||||
|
|
||||||
|
*system:* Ok, coś jeszcze?
|
||||||
|
|
||||||
|
*user:* Nie, dziękuję.
|
||||||
|
|
||||||
|
*system:* Zamówiłeś "Pomidorową" i "Placek po węgiersku". Wszystko się zgadza?
|
||||||
|
|
||||||
|
*user:* Tak.
|
||||||
|
|
||||||
|
*system:* Zamówienie złożone. Danie będzie gotowe za około 15 minut.
|
||||||
|
|
||||||
|
|
||||||
|
Zadanie 2: Zmiana zamówionej potrawy
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
*system:* Zamówiłeś "Pomidorową" i "Placek po węgiersku". Wszystko się zgadza?
|
||||||
|
|
||||||
|
*user:* Nie, jednak wolałbym zamówić zupę "Ogórkową".
|
||||||
|
|
||||||
|
*system:* Jasne, zamówienie zmienione. Zamówiłeś "Ogórkową" i "Placek po węgiersku". Wszystko się zgadza?
|
||||||
|
|
||||||
|
*user:* Tak, dziękuję.
|
||||||
|
|
||||||
|
*system:* Zamówienie złożone. Danie będzie gotowe za około 15 minut.
|
||||||
|
|
||||||
|
|
||||||
|
Zadanie 3: Informacja o składnikach zamówionej potrawy
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
*system:* Zamówiłeś *potrawę*. Czy mogę Ci w czymś jeszcze pomóc?
|
||||||
|
|
||||||
|
*user:* Co jest w tej potrawie?
|
||||||
|
|
||||||
|
*system:* *potrawa* zawiera:
|
||||||
|
- ser
|
||||||
|
- bekon
|
||||||
|
- frytki
|
||||||
|
|
||||||
|
Zadanie 4: Usunięcie składnika potrawy
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
*system:* Czy chciałbyś coś zmienić w swoim daniu?
|
||||||
|
|
||||||
|
*user:* Tak, nie chcę sera.
|
||||||
|
|
||||||
|
*system:* Chcesz usunąć: ser. Dobrze zrozumiałem?
|
||||||
|
|
||||||
|
*user:* Tak
|
||||||
|
|
||||||
|
*system:* Usuwam ser z zamówienia. Czy mogę Ci jeszcze w czymś pomóc?
|
||||||
|
|
||||||
|
*user:* Nie. chcę już zjeść.
|
||||||
|
|
||||||
|
Zadanie 5: Dodanie składnika potrawy
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
*system:* Dzień dobry, w czym mogę pomóc?
|
||||||
|
|
||||||
|
*user:* Dzień dobry, złożyłem zamówienie i chciałbym dodać do jednej z potraw składnik.
|
||||||
|
|
||||||
|
*system:* Rozumiem, czy mogę poprosić o numer zamówienia?
|
||||||
|
|
||||||
|
*user:* 145124148124.
|
||||||
|
|
||||||
|
*system:* Rozumiem. Jest to zamówienie na następujące produkty: piza hawajska i pizza capriciosa. Do której potrawy dodać składnik?
|
||||||
|
|
||||||
|
*user:* Pizza hawajska.
|
||||||
|
|
||||||
|
*system:* Rozumiem. Jaki składnik dodać?
|
||||||
|
|
||||||
|
*user:* Chciałbym dodać krewetki.
|
||||||
|
|
||||||
|
*system:* Rozumiem. Skład zamówienia to teraz pizza hawajska z krewetkami i pizza capriciosa. Czy mogę jeszcze jakoś pomóc?
|
||||||
|
|
||||||
|
*user:* Nie, dziękuję. To wszystko.
|
||||||
|
|
||||||
|
|
||||||
|
Zadanie 6: Podanie listy alergenow
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
*system:* Dzień dobry, w czym mogę pomóc?
|
||||||
|
|
||||||
|
*user:* Dzień dobry, chciałbym zapytać jakie alergeny znajdują się w zupie Tom Kha.
|
||||||
|
|
||||||
|
*system:* Zupa Tom Kha zawiera następujące składniki mogące wywołać alergię: ryby, skorupiaki.
|
||||||
|
|
||||||
|
*user:* Dobrze, dziękuję.
|
||||||
|
|
||||||
|
*system:* Czy mogę jeszcze jakoś pomóc?
|
||||||
|
|
||||||
|
*user:* Nie, dziękuję, to wszystko.
|
||||||
|
|
||||||
|
Zadanie 7: Zmiana składnika potrawy
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
*system:* Czy chciałbyś zmienić składnik potrawy?
|
||||||
|
|
||||||
|
*user:* Tak, poproszę.
|
||||||
|
|
||||||
|
*system:* Dobrze, jaki to składnik miałby być?
|
||||||
|
|
||||||
|
*user:* Chciałbym zmienić kurczaka na tofu, z uwagi, że nie jem mięsa.
|
||||||
|
|
||||||
|
*system:* Czy to wszystko?
|
||||||
|
|
||||||
|
*user:* Tak, to wszystko, dziękuję.
|
||||||
|
|
||||||
|
*system:* Składnik zmieniony, dziękuję.
|
||||||
|
|
||||||
|
Zadanie 8: Zaproponowanie dodatków do zamówienia
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
*system:* Czy chciałbyś jakiś dodatek, na przykład coś do picia?
|
||||||
|
|
||||||
|
*user:* Tak, poproszę.
|
||||||
|
|
||||||
|
*system:* Jaki napój miałby to być?
|
||||||
|
|
||||||
|
*user:* A co proponujesz?
|
||||||
|
|
||||||
|
*system:* Propnuje *napój* za *cena*.
|
||||||
|
|
||||||
|
*user:* Dobrze wezmę to oraz *napój*.
|
||||||
|
|
||||||
|
*system:* Czy to wszystko?
|
||||||
|
|
||||||
|
*user:* Tak, dziękuję.
|
||||||
|
|
||||||
|
*system:* Dodatki przyjęte do zamówienia, dziękuję.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user