Compare commits

..

4 Commits

Author SHA1 Message Date
fa4c0281f0 Dodanie kilku opcji dialogowych do elizy 2024-04-07 10:53:57 +02:00
5e6620f3c5 Update eliza.py
Dodane opcje dialogowe
2024-03-31 11:42:13 +02:00
589bed35d6 Rozszerzenie zbioru danych Eliza 2024-03-29 21:49:58 +01:00
0bae6f8d37 Dodanie chatbota Eliza z podstawowym zbiorem danych
Skrypt jest spolonizowaną wersją https://github.com/nltk/nltk/blob/develop/nltk/chat/eliza.py.
2024-03-23 11:37:11 +01:00
50 changed files with 483 additions and 3298 deletions

4
.gitignore vendored
View File

@ -1,4 +0,0 @@
__pycache__
slot-model*
frame-model*
nlu_cache

View File

@ -13,41 +13,4 @@ Agent powinien wykazywać elastyczność, adaptując się do potrzeb klienta, np
- s495724 - Michał Kasprowicz
- s495726 - Patryk Osiński
- s495727 - Krzysztof Bojakowski
- s495728 - Sergiusz Kański
# Akty
| Typ | Opis |
|----------------------------:|:--------------------------------------------------------|
| affirm | potwierdzenie |
| bye | zakończenie rozmowy |
| canthear | „nic nie słyszę” |
| confirm-domain | prośba o potwierdzenie dziedziny |
| negate | zaprzeczenie |
| repeat | prośba o powtórzenie |
| reqmore | sprawdzenie czy użytkownik chce dodatkowych informacji |
| welcomemsg | przywitanie |
| canthelp | „nie mogę pomóc” |
| canthelp.missing_slot_value | „potrzebuję poznać wartość slotu, żeby pomóc” |
| expl-conf | potwierdzenie (wprost), że slot ma daną wartość |
| impl-conf | potwierdzenie (nie wprost), że slot ma daną wartość |
| inform | poinformowanie użytkownika, o przyjętej wartości slotu |
| offer | rekomendacja (restauracji) |
| request | pytanie użytkownika o wartość slotu |
| select | prośba o dokonanie wyboru spośród przedstawionych opcji |
# Obsługa projektu
- Python 3.10.12
- Instalacja dependencies `pip3 install -r requirements.txt`
- Centralna część systemu - uruchamiamy `python3 src/main.py` - wymagane są wyuczone modele (patrz niżej)
- NLU:
- uczenie modeli od zera `python3 nlu_train.py`
- Ewaluacja `python3 evaluate.py`
# Gotowe modele NLU
- [frame-model-prod](https://1drv.ms/f/s!Ar75ftQiNIxxhcgPS1EOLu0zC_WWzg?e=tJRqbB)
- [slot-model-prod](https://1drv.ms/f/s!Ar75ftQiNIxxhcgb2X6pFioRxXHVew?e=ZC6LFI)
Nazwa folderów jest istotna - muszą byc odpowiednio `frame-model-prod` i `slot-model-prod` oraz znajdować się w głównym katalogu repozytorium.
- s495728 - Sergiusz Kański

View File

@ -1,92 +0,0 @@
{
"size": ["M", "L", "XL"],
"dough": [
"thick"
],
"drink": {
"woda": {
"price": 5
},
"pepsi": {
"price": 7
},
"cola": {
"price": 8
}
},
"food": [
"pizza"
],
"meat": [
"kurczak",
"szynka",
"tuna"
],
"sauce": [
"garlic",
"1000w"
],
"ingredients": {
"kurczak": {},
"tuna": {},
"ananas": {},
"cebula": {},
"ser": {},
"pomidor": {},
"szynka": {},
"papryka": {}
},
"menu": [
"capri",
"margarita",
"hawajska",
"barcelona",
"tuna"
],
"pizza": {
"capri": {
"ingredient": [
"tomato",
"ham",
"mushrooms",
"cheese"
],
"price": 25
},
"margarita": {
"ingredient": [
"tomato",
"cheese"
],
"price": 20
},
"hawajska": {
"ingredient": [
"tomato",
"pineapple",
"chicken",
"cheese"
],
"price": 30
},
"barcelona": {
"ingredient": [
"tomato",
"onion",
"ham",
"pepper",
"cheese"
],
"price": 40
},
"tuna": {
"ingredient": [
"tomato",
"tuna",
"onion",
"cheese"
],
"price": 40
}
}
}

View File

@ -1,15 +0,0 @@
print("Script to automatically append data to data/dialog.conllu")
print("Start typing now. Press Ctrl+C to stop.")
while True:
with open("data/train_dialog.conllu", "a") as f:
text = input("Text: ")
act = input("Intent: ")
slots = text.split(" ")
f.write(
f"\n# text: {text}\n# intent: {act}\n# slots:\n"
)
for i, slot in enumerate(slots):
label = input(f"{i}/{slot} label: ")
f.write(f"{i+1}\t{slot}\t{act}\t{label}\n")
print("---")

View File

@ -1,16 +0,0 @@
kto treść akt
system Dzień dobry, witamy w systemie zamówień na pizzę. Polecam pizzę diavola z dodatkową rukolą. welcomemsg()&offer(pizza=diavola,ingredient=rucola)
user ile kosztuje dostawa? request(delivery-price)
system Przy zakupie czterech dużych pizz otrzyma Pan dostawę gratis offer(quantity=4,delivery-price=0)
user a jakie są dostępne pizze? request(menu)
system Mamy wiele rodzajów, czy ma Pan ochotę na coś konkretnego? reqmore()
system plecam pizzę ananasową. sos pomidorowy, mozarella, ananas i cebula offer(food=pizza,ingredient=pineapple,sauce=tomato,ingredient=mozarella,ingredient=onion)
user świetnie, w takim razie poproszę dwie duże pizze diavola oraz margaritę inform(quantity=2,pizza=diavola,pizza=margarita)
system oczywiście, czy chciałby Pan coś do picia? polecam sok z buraka affirm()&offer(drink=beetroot_juice)
user tak, poproszę jeden affirm()&inform(quantity=1)
system Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? request(payment-method,collection-method)
user zapłacę kartą przy dostawie inform(payment-method=card,collection-method=delivery)
system Poproszę podać adres oraz numer karty. Zamówienie będzie gotowe w przeciągu 25 minut request(address)&request(card-number)&inform(time=25)
user Grzegorz Brzęczyszczykiewicz, ze Szczebrzeszyna, powiat Łękołody inform(name=Grzegorz Brzęczyszczykiewicz,address=Szczebrzeszyna, powiat Łękołody)
system Numer Pańskieg zamówienia: 86753, czy jest jeszcze coś w czym mogę Panu pomóc? inform(order_number=86753)&reqmore()
user dziękuję bardzo bye()
1 kto treść akt
2 system Dzień dobry, witamy w systemie zamówień na pizzę. Polecam pizzę diavola z dodatkową rukolą. welcomemsg()&offer(pizza=diavola,ingredient=rucola)
3 user ile kosztuje dostawa? request(delivery-price)
4 system Przy zakupie czterech dużych pizz otrzyma Pan dostawę gratis offer(quantity=4,delivery-price=0)
5 user a jakie są dostępne pizze? request(menu)
6 system Mamy wiele rodzajów, czy ma Pan ochotę na coś konkretnego? reqmore()
7 system plecam pizzę ananasową. sos pomidorowy, mozarella, ananas i cebula offer(food=pizza,ingredient=pineapple,sauce=tomato,ingredient=mozarella,ingredient=onion)
8 user świetnie, w takim razie poproszę dwie duże pizze diavola oraz margaritę inform(quantity=2,pizza=diavola,pizza=margarita)
9 system oczywiście, czy chciałby Pan coś do picia? polecam sok z buraka affirm()&offer(drink=beetroot_juice)
10 user tak, poproszę jeden affirm()&inform(quantity=1)
11 system Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? request(payment-method,collection-method)
12 user zapłacę kartą przy dostawie inform(payment-method=card,collection-method=delivery)
13 system Poproszę podać adres oraz numer karty. Zamówienie będzie gotowe w przeciągu 25 minut request(address)&request(card-number)&inform(time=25)
14 user Grzegorz Brzęczyszczykiewicz, ze Szczebrzeszyna, powiat Łękołody inform(name=Grzegorz Brzęczyszczykiewicz,address=Szczebrzeszyna, powiat Łękołody)
15 system Numer Pańskieg zamówienia: 86753, czy jest jeszcze coś w czym mogę Panu pomóc? inform(order_number=86753)&reqmore()
16 user dziękuję bardzo bye()

View File

@ -1,25 +1,24 @@
kto treść akt
user Chciałbym zamówić pizze request(pizza)
system Dzień dobry, dziękujemy za kontakt. Ma Pan ochotę na jakąś konkretną pizzę? welcomemsg()&reqmore()
user wegetariańską inform(ingredient!=meat)
system oczywiście, jaki rozmiar? request(size)
user a jakie są dostępne? request(size)
system mała (20 cm), średnia (30 cm) i duża (40 cm). select(size)
user dużą poproszę, z czym jest pizza wegetariańska? inform(size=l)&request(pizza,type)
system ser, mozarella, sos pomidorowy, cebula oraz karczochy inform(ingredient=cheese,ingredient=mozarella,sauce=tomato,ingredient=onion,ingredient=artichokes)
system czy chciałby Pan coś do picia? request(drink)
user a ananas? request(pineapple)
system ananasy oczywiście też są, może Pan zamówić wraz z polewą bananową z pędami bambusa affirm()&offer(ingredient=banana_topping,ingredient=bamboo_shoots)
user do standardowych składników poproszę tylko ananasa, mam uczulenie na banany inform(ingredient=pineapple)
system oczywiście, czy chciałby Pan coś do picia? affirm()&request(drink)
user czy posiadają państwo soki wegańskie? request(drink,vegan)
system tylko wodę mineralną oraz wegańskie piwo bezalkoholowe typu porter offer(drink=mineral_water,drink=alcoholfree_porter_beer)
user a ile to piwo ma %? request(beer,percentage)
system 0% alkoholu, 0% cukru, 0% niewegańskich składników inform(alcohol-content=0,sugar-content=0,non-vegan-ingredient=0)
user wydaje się dobre, poproszę affirm()
system podsuomwując: jedna pizza wegańska z ananasem, bez bananów oraz wegańskie piwo bezalkohlowe. Płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? inform(order-summary)&request(payment-method)&request(collection-method)
user Apple pay inform(payment-method=card)
user Na wynos inform(collection-method=pickup)
system Numer Pańskieg zamówienia: 86750, czy jest jeszcze coś w czym mogę Panu pomóc? inform(order=86750)&reqmore()
user to wszystko, dziekuje bye()
system Dziękujemy za skrzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszło bye()
user 2024-03-15 7:52 PM Chciałbym zamówić pizze
system 2024-03-15 7:54 PM Dzień dobry, dziękujemy za kontakt. Ma Pan ochotę na jakąś konkretną pizzę?
user 2024-03-15 7:54 PM wegetariańską
system 2024-03-15 7:54 PM oczywiście, jaki rozmiar?
user 2024-03-15 7:54 PM a jakie są dostępne?
system 2024-03-15 7:55 PM mała (20 cm), średnia (30 cm) i duża (40 cm).
user 2024-03-15 7:55 PM dużą poproszę, z czym jest pizza wegetariańska?
system 2024-03-15 7:56 PM ser, mozarella, sos pomidorowy, cebula oraz karczochy
system 2024-03-15 7:57 PM czy chciałby Pan coś do picia?
user 2024-03-15 7:57 PM a ananas?
system 2024-03-15 7:57 PM ananasy oczywiście też są, może Pan zamówić wraz z polewą bananową z pędami bambusa
user 2024-03-15 7:58 PM do standardowych składników poproszę tylko ananasa, mam uczulenie na banany
system 2024-03-15 7:59 PM oczywiście, czy chciałby Pan coś do picia?
user 2024-03-15 8:00 PM czy posiadają państwo soki wegańskie?
system 2024-03-15 8:01 PM tylko wodę mineralną oraz wegańskie piwo bezalkoholowe typu porter
user 2024-03-15 8:01 PM a ile to piwo ma %?
system 2024-03-15 8:02 PM 0% alkoholu, 0% cukru, 0% niewegańskich składników
user 2024-03-15 8:02 PM wydaje się dobre, poproszę
system 2024-03-15 8:04 PM podsuomwując: jedna pizza wegańska z ananasem, bez bananów oraz wegańskie piwo bezalkohlowe. Płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
user 2024-03-15 8:04 PM Apple pay
user 2024-03-15 8:04 PM Na wynos
system 2024-03-15 8:05 PM Numer Pańskieg zamówienia: 86750, czy jest jeszcze coś w czym mogę Panu pomóc?
user 2024-03-15 8:06 PM to wszystko, dziekuje
system 2024-03-15 8:06 PM Dziękujemy za skrzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszło

1 kto user treść 2024-03-15 7:52 PM akt Chciałbym zamówić pizze
2 user system Chciałbym zamówić pizze 2024-03-15 7:54 PM request(pizza) Dzień dobry, dziękujemy za kontakt. Ma Pan ochotę na jakąś konkretną pizzę?
3 system user Dzień dobry, dziękujemy za kontakt. Ma Pan ochotę na jakąś konkretną pizzę? 2024-03-15 7:54 PM welcomemsg()&reqmore() wegetariańską
4 user system wegetariańską 2024-03-15 7:54 PM inform(ingredient!=meat) oczywiście, jaki rozmiar?
5 system user oczywiście, jaki rozmiar? 2024-03-15 7:54 PM request(size) a jakie są dostępne?
6 user system a jakie są dostępne? 2024-03-15 7:55 PM request(size) mała (20 cm), średnia (30 cm) i duża (40 cm).
7 system user mała (20 cm), średnia (30 cm) i duża (40 cm). 2024-03-15 7:55 PM select(size) dużą poproszę, z czym jest pizza wegetariańska?
8 user system dużą poproszę, z czym jest pizza wegetariańska? 2024-03-15 7:56 PM inform(size=l)&request(pizza,type) ser, mozarella, sos pomidorowy, cebula oraz karczochy
9 system system ser, mozarella, sos pomidorowy, cebula oraz karczochy 2024-03-15 7:57 PM inform(ingredient=cheese,ingredient=mozarella,sauce=tomato,ingredient=onion,ingredient=artichokes) czy chciałby Pan coś do picia?
10 system user czy chciałby Pan coś do picia? 2024-03-15 7:57 PM request(drink) a ananas?
11 user system a ananas? 2024-03-15 7:57 PM request(pineapple) ananasy oczywiście też są, może Pan zamówić wraz z polewą bananową z pędami bambusa
12 system user ananasy oczywiście też są, może Pan zamówić wraz z polewą bananową z pędami bambusa 2024-03-15 7:58 PM affirm()&offer(ingredient=banana_topping,ingredient=bamboo_shoots) do standardowych składników poproszę tylko ananasa, mam uczulenie na banany
13 user system do standardowych składników poproszę tylko ananasa, mam uczulenie na banany 2024-03-15 7:59 PM inform(ingredient=pineapple) oczywiście, czy chciałby Pan coś do picia?
14 system user oczywiście, czy chciałby Pan coś do picia? 2024-03-15 8:00 PM affirm()&request(drink) czy posiadają państwo soki wegańskie?
15 user system czy posiadają państwo soki wegańskie? 2024-03-15 8:01 PM request(drink,vegan) tylko wodę mineralną oraz wegańskie piwo bezalkoholowe typu porter
16 system user tylko wodę mineralną oraz wegańskie piwo bezalkoholowe typu porter 2024-03-15 8:01 PM offer(drink=mineral_water,drink=alcoholfree_porter_beer) a ile to piwo ma %?
17 user system a ile to piwo ma %? 2024-03-15 8:02 PM request(beer,percentage) 0% alkoholu, 0% cukru, 0% niewegańskich składników
18 system user 0% alkoholu, 0% cukru, 0% niewegańskich składników 2024-03-15 8:02 PM inform(alcohol-content=0,sugar-content=0,non-vegan-ingredient=0) wydaje się dobre, poproszę
19 user system wydaje się dobre, poproszę 2024-03-15 8:04 PM affirm() podsuomwując: jedna pizza wegańska z ananasem, bez bananów oraz wegańskie piwo bezalkohlowe. Płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
20 system user podsuomwując: jedna pizza wegańska z ananasem, bez bananów oraz wegańskie piwo bezalkohlowe. Płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? 2024-03-15 8:04 PM inform(order-summary)&request(payment-method)&request(collection-method) Apple pay
21 user user Apple pay 2024-03-15 8:04 PM inform(payment-method=card) Na wynos
22 user system Na wynos 2024-03-15 8:05 PM inform(collection-method=pickup) Numer Pańskieg zamówienia: 86750, czy jest jeszcze coś w czym mogę Panu pomóc?
23 system user Numer Pańskieg zamówienia: 86750, czy jest jeszcze coś w czym mogę Panu pomóc? 2024-03-15 8:06 PM inform(order=86750)&reqmore() to wszystko, dziekuje
24 user system to wszystko, dziekuje 2024-03-15 8:06 PM bye() Dziękujemy za skrzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszło
system Dziękujemy za skrzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszło bye()

View File

@ -1,17 +1,16 @@
kto treść akt
user Dzień dobry, chciałbym złożyć zamówienie welcomemsg()
system Dzień dobry, dziękujemy za kontakt. Czy ma Pan wybraną pizzę? welcomemsg()&reqmore(pizza)
user A jakie są do wyboru? request(menu)
system W naszym menu znajduje się wiele rodzajów pizz. Na co ma Pan ochotę? reqmore()
user Na kurczaka inform(ingredient=chicken)
system Polecam Pizzę di pollo offer(pizza=di_pollo)
user Jakie są inne składniki jej? request(ingredient)
system sos pomidorwy, mozarella, cebula i kawałki kurczaka inform(sauce=tomato,ingredient=mozarella,ingredient=onion,ingredient=chicken)
user Okej, ile kosztuje i jaki rozmiar jest dostępny? request(price,size)
system Nasze pizze oferujemy w rozmiarach maly, średni i duży. Cena zależy od tego czy chce Pan jakieś dodatki, czy wersję klasyczną. select(menu)&reqmore(additional-ingredient)
user Poproszę wersję klasyczną średnią. Ile będzie ona kosztować? inform(size=m)&request(price)
system 36,99 plus płata klimatyczna. Weterani oraz hnorowi dawcy krwi mają u nas zniżkę 10% inform(price=36.99)&offer(discount=0.1,eligible=veterans,eligible=blood_donors)
user Okej, to poproszę tą pizzę affirm()
system Płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? request(payment-method)&request(collection-method)
user Na wynos, płatność gotówką inform(payment-method=cash)&inform(collection-method=pickup)
system Numer Pańskiego zamówienia to 86748, proszę zgłosić się do okienka odbioru. inform(order-number=86748)&inform(address=local)
user 2024-03-15 7:18 PM Dzień dobry, chciałbym złożyć zamówienie
system 2024-03-15 7:18 PM Dzień dobry, dziękujemy za kontakt. Czy ma Pan wybraną pizzę?
user 2024-03-15 7:19 PM A jakie są do wyboru?
system 2024-03-15 7:19 PM W naszym menu znajduje się wiele rodzajów pizz. Na co ma Pan ochotę?
user 2024-03-15 7:19 PM Na kurczaka
system 2024-03-15 7:20 PM Polecam Pizzę di pollo
user 2024-03-15 7:20 PM Jakie są inne składniki jej?
system 2024-03-15 7:20 PM sos pomidorwy, mozarella, cebula i kawałki kurczaka
user 2024-03-15 7:20 PM Okej, ile kosztuje i jaki rozmiar jest dostępny?
system 2024-03-15 7:22 PM Nasze pizze oferujemy w rozmiarach maly, średni i duży. Cena zależy od tego czy chce Pan jakieś dodatki, czy wersję klasyczną.
user 2024-03-15 7:22 PM Poproszę wersję klasyczną średnią. Ile będzie ona kosztować?
system 2024-03-15 7:23 PM 36,99 plus płata klimatyczna. Weterani oraz hnorowi dawcy krwi mają u nas zniżkę 10%
user 2024-03-15 7:23 PM Okej, to poproszę tą pizzę
system 2024-03-15 7:24 PM Płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
user 2024-03-15 7:25 PM Na wynos, płatność gotówką
system 2024-03-15 7:25 PM Numer Pańskiego zamówienia to 86748, proszę zgłosić się do okienka odbioru.

1 kto user treść 2024-03-15 7:18 PM akt Dzień dobry, chciałbym złożyć zamówienie
2 user system Dzień dobry, chciałbym złożyć zamówienie 2024-03-15 7:18 PM welcomemsg() Dzień dobry, dziękujemy za kontakt. Czy ma Pan wybraną pizzę?
3 system user Dzień dobry, dziękujemy za kontakt. Czy ma Pan wybraną pizzę? 2024-03-15 7:19 PM welcomemsg()&reqmore(pizza) A jakie są do wyboru?
4 user system A jakie są do wyboru? 2024-03-15 7:19 PM request(menu) W naszym menu znajduje się wiele rodzajów pizz. Na co ma Pan ochotę?
5 system user W naszym menu znajduje się wiele rodzajów pizz. Na co ma Pan ochotę? 2024-03-15 7:19 PM reqmore() Na kurczaka
6 user system Na kurczaka 2024-03-15 7:20 PM inform(ingredient=chicken) Polecam Pizzę di pollo
7 system user Polecam Pizzę di pollo 2024-03-15 7:20 PM offer(pizza=di_pollo) Jakie są inne składniki jej?
8 user system Jakie są inne składniki jej? 2024-03-15 7:20 PM request(ingredient) sos pomidorwy, mozarella, cebula i kawałki kurczaka
9 system user sos pomidorwy, mozarella, cebula i kawałki kurczaka 2024-03-15 7:20 PM inform(sauce=tomato,ingredient=mozarella,ingredient=onion,ingredient=chicken) Okej, ile kosztuje i jaki rozmiar jest dostępny?
10 user system Okej, ile kosztuje i jaki rozmiar jest dostępny? 2024-03-15 7:22 PM request(price,size) Nasze pizze oferujemy w rozmiarach maly, średni i duży. Cena zależy od tego czy chce Pan jakieś dodatki, czy wersję klasyczną.
11 system user Nasze pizze oferujemy w rozmiarach maly, średni i duży. Cena zależy od tego czy chce Pan jakieś dodatki, czy wersję klasyczną. 2024-03-15 7:22 PM select(menu)&reqmore(additional-ingredient) Poproszę wersję klasyczną średnią. Ile będzie ona kosztować?
12 user system Poproszę wersję klasyczną średnią. Ile będzie ona kosztować? 2024-03-15 7:23 PM inform(size=m)&request(price) 36,99 plus płata klimatyczna. Weterani oraz hnorowi dawcy krwi mają u nas zniżkę 10%
13 system user 36,99 plus płata klimatyczna. Weterani oraz hnorowi dawcy krwi mają u nas zniżkę 10% 2024-03-15 7:23 PM inform(price=36.99)&offer(discount=0.1,eligible=veterans,eligible=blood_donors) Okej, to poproszę tą pizzę
14 user system Okej, to poproszę tą pizzę 2024-03-15 7:24 PM affirm() Płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
15 system user Płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? 2024-03-15 7:25 PM request(payment-method)&request(collection-method) Na wynos, płatność gotówką
16 user system Na wynos, płatność gotówką 2024-03-15 7:25 PM inform(payment-method=cash)&inform(collection-method=pickup) Numer Pańskiego zamówienia to 86748, proszę zgłosić się do okienka odbioru.
system Numer Pańskiego zamówienia to 86748, proszę zgłosić się do okienka odbioru. inform(order-number=86748)&inform(address=local)

View File

@ -1,20 +1,21 @@
kto treść akt
user Dzień dobry welcomemsg()
system Dzień dobry, dziękujemy za kontakt. W czym mogę pmóc? welcomemsg()
user chciałbym zamówić pizzę wegetariańską w średnim rozmiarze inform(pizza=vegan,size=m)
system Oczywiście, czy chciałby Pan jakieś dodatki? affirm()&reqmore(additional-ingredient)
user a co znajduje się domyślnie na takiej pizzy? request(ingredient)
system ser, mozarella, sos pomidorowy, cebula oraz karczochy offer(ingredient=cheese,ingredient=mozarella,sauce=tomato,ingredient=onion,ingredient=artichokes)
user dobrze, w takim razie odpowiada affirm()
user a rozmiar średni o ile jest mniejszy od dużego? request(size)
system rozmiar średni: 30 cm inform(size=m,value=30)
system rozmiar duży: 40 cm inform(size=l,value=40)
user w takim razie rozmiar duży jednak inform(size=l)
system Czy chciałby Pan coś do picia? Polecam dużą colę lub sprite reqmore(drink)&offer(drink=cola,size=l)&offer(drink=sprite)
user dużą colę poproszę, jednakże bez cukru inform(drink=cola,sugar=no)
system Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? affirm()&request(payment-method)&request(collection-method)
user Płatność będzie kartą. Zamówienie na wynos, ale odbiorę osobiście, poproszę jedynie podać przybliżony czas przygotowywania dania inform(payment-method=card)&inform(collection-method=pickup)&request(time)
system Pizza powinna być gotowa w ciągu 30 minut. Numer Pańskieg zamówienia: 86749 inform(time=0.5)&inform(order-number=86749)
system Czy jest jeszcze coś w czym mogę Panu pomóc? reqmore()
user nie, dziękuję, to wszystko negate()&bye()
system Dziękujemy za skrzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszłość bye()
user 2024-03-15 7:22 PM Dzień dobry
system 2024-03-15 7:22 PM Dzień dobry, dziękujemy za kontakt. W czym mogę pmóc?
user 2024-03-15 7:25 PM chciałbym zamówić pizzę wegetariańską w średnim rozmiarze
system 2024-03-15 7:27 PM Oczywiście, czy chciałby Pan jakieś dodatki?
user 2024-03-15 7:28 PM a co znajduje się domyślnie na takiej pizzy?
system 2024-03-15 7:32 PM ser, mozarella, sos pomidorowy, cebula oraz karczochy
user 2024-03-15 7:33 PM dobrze
user 2024-03-15 7:33 PM w takim razie odpowiada
user 2024-03-15 7:34 PM a rozmiar średni o ile jest mniejszy od dużego?
system 2024-03-15 7:34 PM w jakim rozmiarze chciałby Pan tę pizzę?
system 2024-03-15 7:34 PM rozmiar średni: 30 cm
system 2024-03-15 7:34 PM rozmiar duży: 40 cm
user 2024-03-15 7:37 PM w takim razie rozmiar duży jednak
system 2024-03-15 7:38 PM Czy chciałby Pan coś do picia? Polecam dużą colę lub sprite
user 2024-03-15 7:38 PM dużą colę poproszę, jednakże bez cukru
system 2024-03-15 7:39 PM Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
user 2024-03-15 7:41 PM Płatność będzie kartą. Zamówienie na wynos, ale odbiorę osobiście, poproszę jedynie podać przybliżony czas przygotowywania dania
system 2024-03-15 7:42 PM Pizza powinna być gotowa w ciągu 30 minut. Numer Pańskieg zamówienia: 86749
system 2024-03-15 7:42 PM Czy jest jeszcze coś w czym mogę Panu pomóc?
user 2024-03-15 7:43 PM nie, dziękuję, to wszystko
system 2024-03-15 7:43 PM Dziękujemy za skrzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszłość

1 kto user treść 2024-03-15 7:22 PM akt Dzień dobry
2 user system Dzień dobry 2024-03-15 7:22 PM welcomemsg() Dzień dobry, dziękujemy za kontakt. W czym mogę pmóc?
3 system user Dzień dobry, dziękujemy za kontakt. W czym mogę pmóc? 2024-03-15 7:25 PM welcomemsg() chciałbym zamówić pizzę wegetariańską w średnim rozmiarze
4 user system chciałbym zamówić pizzę wegetariańską w średnim rozmiarze 2024-03-15 7:27 PM inform(pizza=vegan,size=m) Oczywiście, czy chciałby Pan jakieś dodatki?
5 system user Oczywiście, czy chciałby Pan jakieś dodatki? 2024-03-15 7:28 PM affirm()&reqmore(additional-ingredient) a co znajduje się domyślnie na takiej pizzy?
6 user system a co znajduje się domyślnie na takiej pizzy? 2024-03-15 7:32 PM request(ingredient) ser, mozarella, sos pomidorowy, cebula oraz karczochy
7 system user ser, mozarella, sos pomidorowy, cebula oraz karczochy 2024-03-15 7:33 PM offer(ingredient=cheese,ingredient=mozarella,sauce=tomato,ingredient=onion,ingredient=artichokes) dobrze
8 user user dobrze, w takim razie odpowiada 2024-03-15 7:33 PM affirm() w takim razie odpowiada
9 user user a rozmiar średni o ile jest mniejszy od dużego? 2024-03-15 7:34 PM request(size) a rozmiar średni o ile jest mniejszy od dużego?
10 system system rozmiar średni: 30 cm 2024-03-15 7:34 PM inform(size=m,value=30) w jakim rozmiarze chciałby Pan tę pizzę?
11 system system rozmiar duży: 40 cm 2024-03-15 7:34 PM inform(size=l,value=40) rozmiar średni: 30 cm
12 user system w takim razie rozmiar duży jednak 2024-03-15 7:34 PM inform(size=l) rozmiar duży: 40 cm
13 system user Czy chciałby Pan coś do picia? Polecam dużą colę lub sprite 2024-03-15 7:37 PM reqmore(drink)&offer(drink=cola,size=l)&offer(drink=sprite) w takim razie rozmiar duży jednak
14 user system dużą colę poproszę, jednakże bez cukru 2024-03-15 7:38 PM inform(drink=cola,sugar=no) Czy chciałby Pan coś do picia? Polecam dużą colę lub sprite
15 system user Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? 2024-03-15 7:38 PM affirm()&request(payment-method)&request(collection-method) dużą colę poproszę, jednakże bez cukru
16 user system Płatność będzie kartą. Zamówienie na wynos, ale odbiorę osobiście, poproszę jedynie podać przybliżony czas przygotowywania dania 2024-03-15 7:39 PM inform(payment-method=card)&inform(collection-method=pickup)&request(time) Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
17 system user Pizza powinna być gotowa w ciągu 30 minut. Numer Pańskieg zamówienia: 86749 2024-03-15 7:41 PM inform(time=0.5)&inform(order-number=86749) Płatność będzie kartą. Zamówienie na wynos, ale odbiorę osobiście, poproszę jedynie podać przybliżony czas przygotowywania dania
18 system system Czy jest jeszcze coś w czym mogę Panu pomóc? 2024-03-15 7:42 PM reqmore() Pizza powinna być gotowa w ciągu 30 minut. Numer Pańskieg zamówienia: 86749
19 user system nie, dziękuję, to wszystko 2024-03-15 7:42 PM negate()&bye() Czy jest jeszcze coś w czym mogę Panu pomóc?
20 system user Dziękujemy za skrzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszłość 2024-03-15 7:43 PM bye() nie, dziękuję, to wszystko
21 system 2024-03-15 7:43 PM Dziękujemy za skrzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszłość

View File

@ -1,23 +1,22 @@
kto treść akt
user Cześć, jakim systemem jesteś? welcomemsg()
system Dzień dobry, witamy w systemie zamówień na pizzę. Polecam pizzę diavola z dodatkową rukolą. welcomemsg()&offer(pizza=diavola,additional-ingredient=argula)
user Czy są dostępne jakieś promocje? request(promo)
system oczywiście, przy zakupie czterech dużych pizz otrzyma Pan jedną małą gratis offer(quantity=4,additional-size=s,price=0)
user czy muszą być to takie same pizze czy mogą być dowolne? request(promo,pizza-type)
system oczywiście mogą być dowolne inform(pizza-type=various)
user w takim razie jakie są dostępne pizze? request(menu)
system Mamy wiele rodzajów, czy ma Pan ochotę na coś konkretnego? reqmore()
user chciałbym coś z ananasem inform(ingredient=pineapple)
system plecam pizzę ananasową. sos pomidorowy, mozarella, ananas i cebula offer(pizza=pineapple,ingredient=tomato_souce,ingredient=mozarella,ingredient=pineapple,ingredient=onion)
user świetnie, w takim razie poproszę dwie duże pizzę ananasową, jedną dużą diavola oraz jako tą w gratisie margarite inform(quantity=2,pizza=pineapple,size=l)&inform(quantity=1,pizza=diavola,size=l)&request(pizza=margarita,size=s)
system oczywiście, czy chciałby Pan coś do picia? affirm()&reqmore(drink)
system polecam sok ananasowy offer(drink=pineapple_juice)
user w takim razie poproszę jeden inform(quantity=1)
system Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? request(payment-method)&request(collection-method)
user zapłacę kartą, dostawa inform(payment-method=card)&inform(collection-method=pickup)
system Poproszę podać adres oraz numer karty. Zamówienie będzie gotowe w przeciągu 30 minut request(card-number)&inform(time=0.5)
user adres Lipinki Łużyckie, Łączna 43. Karta XXXXXXX inform(address=Lipinki Łużyckie, Łączna 43)&inform(card-number=XXXXXXX)
system Numer Pańskieg zamówienia: 86751, czy jest jeszcze coś w czym mogę Panu pomóc? inform(order-number)&reqmore()
user tak, wiem że po fakcie, ale chciałbym zapytać ile mnie wyniosło zamówienie request(price)
system zamówienie wynosi 180 zł plus opłata klimatyczna. inform(price=180)
user dziękuję bardzo bye()
user 2024-03-15 7:47 PM Cześć, jakim systemem jesteś?
system 2024-03-15 7:48 PM Dzień dobry, witamy w systemie zamówień na pizzę. Polecam pizzę diavola z dodatkową rukolą.
user 2024-03-15 7:49 PM Czy są dostępne jakieś promocje?
system 2024-03-15 7:50 PM oczywiście, przy zakupie czterech dużych pizz otrzyma Pan jedną małą gratis
user 2024-03-15 7:50 PM czy muszą być to takie same pizze czy mogą być dowolne?
system 2024-03-15 7:51 PM oczywiście mogą być dowolne
user 2024-03-15 7:52 PM w takim razie jakie są dostępne pizze?
system 2024-03-15 7:53 PM Mamy wiele rodzajów, czy ma Pan ochotę na coś konkretnego?
user 2024-03-15 7:55 PM chciałbym coś z ananasem
system 2024-03-15 7:56 PM plecam pizzę ananasową. sos pomidorowy, mozarella, ananas i cebula
user 2024-03-15 7:59 PM świetnie, w takim razie poproszę dwie duże pizzę ananasową, jedną dużą diavola oraz jako tą w gratisie margarite
system 2024-03-15 7:59 PM oczywiście, czy chciałby Pan coś do picia?
system 2024-03-15 8:00 PM polecam sok ananasowy
user 2024-03-15 8:00 PM w takim razie poproszę jeden
system 2024-03-15 8:01 PM Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
user 2024-03-15 8:01 PM zapłacę kartą, dostawa
system 2024-03-15 8:02 PM Poproszę podać adres oraz numer karty. Zamówienie będzie gotowe w przeciągu 30 minut
user 2024-03-15 8:05 PM adres Lipinki Łużyckie, Łączna 43. Karta XXXXXXX
system 2024-03-15 8:05 PM Numer Pańskieg zamówienia: 86751, czy jest jeszcze coś w czym mogę Panu pomóc?
user 2024-03-15 8:08 PM tak, wiem że po fakcie, ale chciałbym zapytać ile mnie wyniosło zamówienie
system 2024-03-15 8:09 PM zamówienie wynosi 180 zł plus opłata klimatyczna.
user 2024-03-15 8:10 PM dziękuję bardzo

1 kto user treść 2024-03-15 7:47 PM akt Cześć, jakim systemem jesteś?
2 user system Cześć, jakim systemem jesteś? 2024-03-15 7:48 PM welcomemsg() Dzień dobry, witamy w systemie zamówień na pizzę. Polecam pizzę diavola z dodatkową rukolą.
3 system user Dzień dobry, witamy w systemie zamówień na pizzę. Polecam pizzę diavola z dodatkową rukolą. 2024-03-15 7:49 PM welcomemsg()&offer(pizza=diavola,additional-ingredient=argula) Czy są dostępne jakieś promocje?
4 user system Czy są dostępne jakieś promocje? 2024-03-15 7:50 PM request(promo) oczywiście, przy zakupie czterech dużych pizz otrzyma Pan jedną małą gratis
5 system user oczywiście, przy zakupie czterech dużych pizz otrzyma Pan jedną małą gratis 2024-03-15 7:50 PM offer(quantity=4,additional-size=s,price=0) czy muszą być to takie same pizze czy mogą być dowolne?
6 user system czy muszą być to takie same pizze czy mogą być dowolne? 2024-03-15 7:51 PM request(promo,pizza-type) oczywiście mogą być dowolne
7 system user oczywiście mogą być dowolne 2024-03-15 7:52 PM inform(pizza-type=various) w takim razie jakie są dostępne pizze?
8 user system w takim razie jakie są dostępne pizze? 2024-03-15 7:53 PM request(menu) Mamy wiele rodzajów, czy ma Pan ochotę na coś konkretnego?
9 system user Mamy wiele rodzajów, czy ma Pan ochotę na coś konkretnego? 2024-03-15 7:55 PM reqmore() chciałbym coś z ananasem
10 user system chciałbym coś z ananasem 2024-03-15 7:56 PM inform(ingredient=pineapple) plecam pizzę ananasową. sos pomidorowy, mozarella, ananas i cebula
11 system user plecam pizzę ananasową. sos pomidorowy, mozarella, ananas i cebula 2024-03-15 7:59 PM offer(pizza=pineapple,ingredient=tomato_souce,ingredient=mozarella,ingredient=pineapple,ingredient=onion) świetnie, w takim razie poproszę dwie duże pizzę ananasową, jedną dużą diavola oraz jako tą w gratisie margarite
12 user system świetnie, w takim razie poproszę dwie duże pizzę ananasową, jedną dużą diavola oraz jako tą w gratisie margarite 2024-03-15 7:59 PM inform(quantity=2,pizza=pineapple,size=l)&inform(quantity=1,pizza=diavola,size=l)&request(pizza=margarita,size=s) oczywiście, czy chciałby Pan coś do picia?
13 system system oczywiście, czy chciałby Pan coś do picia? 2024-03-15 8:00 PM affirm()&reqmore(drink) polecam sok ananasowy
14 system user polecam sok ananasowy 2024-03-15 8:00 PM offer(drink=pineapple_juice) w takim razie poproszę jeden
15 user system w takim razie poproszę jeden 2024-03-15 8:01 PM inform(quantity=1) Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
16 system user Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos? 2024-03-15 8:01 PM request(payment-method)&request(collection-method) zapłacę kartą, dostawa
17 user system zapłacę kartą, dostawa 2024-03-15 8:02 PM inform(payment-method=card)&inform(collection-method=pickup) Poproszę podać adres oraz numer karty. Zamówienie będzie gotowe w przeciągu 30 minut
18 system user Poproszę podać adres oraz numer karty. Zamówienie będzie gotowe w przeciągu 30 minut 2024-03-15 8:05 PM request(card-number)&inform(time=0.5) adres Lipinki Łużyckie, Łączna 43. Karta XXXXXXX
19 user system adres Lipinki Łużyckie, Łączna 43. Karta XXXXXXX 2024-03-15 8:05 PM inform(address=Lipinki Łużyckie, Łączna 43)&inform(card-number=XXXXXXX) Numer Pańskieg zamówienia: 86751, czy jest jeszcze coś w czym mogę Panu pomóc?
20 system user Numer Pańskieg zamówienia: 86751, czy jest jeszcze coś w czym mogę Panu pomóc? 2024-03-15 8:08 PM inform(order-number)&reqmore() tak, wiem że po fakcie, ale chciałbym zapytać ile mnie wyniosło zamówienie
21 user system tak, wiem że po fakcie, ale chciałbym zapytać ile mnie wyniosło zamówienie 2024-03-15 8:09 PM request(price) zamówienie wynosi 180 zł plus opłata klimatyczna.
22 system user zamówienie wynosi 180 zł plus opłata klimatyczna. 2024-03-15 8:10 PM inform(price=180) dziękuję bardzo
user dziękuję bardzo bye()

View File

@ -1,10 +0,0 @@
kto treść akt
user Dzień dobry co mogę tu zamówić welcomemsg()&request(menu)
system Dzień dobry,\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm) welcomemsg()
user chciałabym pizzę capri w rozmiarze M inform(pizza=capri,size=m)
system Czy życzy sobie Pani coś jeszcze? reqalts()
user nie negate()
system Rozumiem.\nCałość zamówienia to:\npizza capri M - 40ł\nPotwierdza Pan zamówienie? request(confirm)
user tak gdzie mogę odebrać? affirm()&request(address)
system Można odebrać na ulicy Poznańskiej 7.\nZamówienie będzie gotowe za 30min.\nŻyczę smacznego inform(address=Poznańskiej 7,time=30)&bye()
user dziękuję bye()
1 kto treść akt
2 user Dzień dobry co mogę tu zamówić welcomemsg()&request(menu)
3 system Dzień dobry,\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm) welcomemsg()
4 user chciałabym pizzę capri w rozmiarze M inform(pizza=capri,size=m)
5 system Czy życzy sobie Pani coś jeszcze? reqalts()
6 user nie negate()
7 system Rozumiem.\nCałość zamówienia to:\npizza capri M - 40ł\nPotwierdza Pan zamówienie? request(confirm)
8 user tak gdzie mogę odebrać? affirm()&request(address)
9 system Można odebrać na ulicy Poznańskiej 7.\nZamówienie będzie gotowe za 30min.\nŻyczę smacznego inform(address=Poznańskiej 7,time=30)&bye()
10 user dziękuję bye()

View File

@ -1,9 +0,0 @@
kto treść akt
user Dzień dobry, chciałbym zamówić pizzę. request(menu)
system Dzień dobry,\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm) inform(menu)
user jaka to jest pizza barcelona? request(barcelona)
system Pizza barcelona posiada: pomidory, cebulę i szynkę. inform(pizza=barcelona)
user to poproszę inform(pizza=barcelona)
system Rozumiem.\nCałość zamówienia to:\npizza barcelona L (szynka parmeńska) - 45ł\nPotwierdza Pan zamówienie? inform(pizza=barcelona,size=l,price=45)
user tak, odbiorę na miejscu inform(collection-method=pickup)
system Zamówienie będzie gotowe za 30min.\nŻyczę smacznego bye()
1 kto treść akt
2 user Dzień dobry, chciałbym zamówić pizzę. request(menu)
3 system Dzień dobry,\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm) inform(menu)
4 user jaka to jest pizza barcelona? request(barcelona)
5 system Pizza barcelona posiada: pomidory, cebulę i szynkę. inform(pizza=barcelona)
6 user to poproszę inform(pizza=barcelona)
7 system Rozumiem.\nCałość zamówienia to:\npizza barcelona L (szynka parmeńska) - 45ł\nPotwierdza Pan zamówienie? inform(pizza=barcelona,size=l,price=45)
8 user tak, odbiorę na miejscu inform(collection-method=pickup)
9 system Zamówienie będzie gotowe za 30min.\nŻyczę smacznego bye()

View File

@ -1,14 +1,16 @@
kto treść akt
user Dzień dobry. welcomemsg()
system Dzień dobry. Oferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm). welcomemsg()
user Z czym jest pizza capri? request(pizza,capri)
system W pizza capri zawiera się: ser mozzarella, pieczoną szynkę, grzyby, pomidory i karczochy.\nMam dodać do zamówienia? inform(ingredient=ser,ingredient=ham)
user Tak, tylko karczochy na poproszę do osobnego opakowania.\nTo poproszę capri XL (karczochy osobno), oraz hawajską L. inform(pizza=capri,size=xl,comment=karczochy osobno)&inform(pizza=hawajska,size=l)
system Życzy Pan sobie jakieś dodatki? Oferujemy napój gazowany pepsi/cola. offer(drink=cola)
user Poproszę pepsi, najlepiej bez cukru, ale może być z cukrem od biedy. inform(drink=cola,sugar=no)
system Rozumiem.\nCałość zamówienia to:\npizza capri XL (karczochy osobno) - 60zł\npizza hawajska L - 20zł\npepsi 200ml - 5zł\nRazem będzie 85zł.\nPotwierdza Pan zamówienie? inform(order)
user Tak. affirm()
system Poproszę adres dostawy. request(delivery)
user Uniwersytetu Poznańskiego 4 inform(address=Uniwersytetu Poznańskiego 4)
system Zamówienie otrzyma Pan za 30min.\nŻyczę smacznego. bye()
user Pozdrawiam. bye()
kto treść
user Dzień dobry.
system Dzień dobry. W czym mogę pomóc?
user Jakie usługi są oferowane?
system Oferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm)
user Z czym jest pizza capri?
system W pizza capri zawiera się: ser mozzarella, pieczoną szynkę, grzyby, pomidory i karczochy.\nMam dodać do zamówienia?
user Tak, tylko karczochy na poproszę do osobnego opakowania.\nTo poproszę capri XL (karczochy osobno), oraz hawajską L.
system Życzy Pan sobie jakieś dodatki? Oferujemy napój gazowany pepsi/cola
user Poproszę pepsi, najlepiej bez cukru, ale może być z cukrem od biedy.
system Rozumiem.\nCałość zamówienia to:\npizza capri XL (karczochy osobno) - 60zł\npizza hawajska L - 20zł\npepsi 200ml - 5zł\nRazem będzie 85zł.\nPotwierdza Pan zamówienie?
user Tak.
system Poproszę adres dostawy.
user Uniwersytetu Poznańskiego 4
system Zamówienie otrzyma Pan za 30min.\nŻyczę smacznego
user Pozdrawiam.

1 kto treść akt
2 user Dzień dobry. welcomemsg()
3 system Dzień dobry. Oferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm). Dzień dobry. W czym mogę pomóc? welcomemsg()
4 user Z czym jest pizza capri? Jakie usługi są oferowane? request(pizza,capri)
5 system W pizza capri zawiera się: ser mozzarella, pieczoną szynkę, grzyby, pomidory i karczochy.\nMam dodać do zamówienia? Oferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm) inform(ingredient=ser,ingredient=ham)
6 user Tak, tylko karczochy na poproszę do osobnego opakowania.\nTo poproszę capri XL (karczochy osobno), oraz hawajską L. Z czym jest pizza capri? inform(pizza=capri,size=xl,comment=karczochy osobno)&inform(pizza=hawajska,size=l)
7 system Życzy Pan sobie jakieś dodatki? Oferujemy napój gazowany pepsi/cola. W pizza capri zawiera się: ser mozzarella, pieczoną szynkę, grzyby, pomidory i karczochy.\nMam dodać do zamówienia? offer(drink=cola)
8 user Poproszę pepsi, najlepiej bez cukru, ale może być z cukrem od biedy. Tak, tylko karczochy na poproszę do osobnego opakowania.\nTo poproszę capri XL (karczochy osobno), oraz hawajską L. inform(drink=cola,sugar=no)
9 system Rozumiem.\nCałość zamówienia to:\npizza capri XL (karczochy osobno) - 60zł\npizza hawajska L - 20zł\npepsi 200ml - 5zł\nRazem będzie 85zł.\nPotwierdza Pan zamówienie? Życzy Pan sobie jakieś dodatki? Oferujemy napój gazowany pepsi/cola inform(order)
10 user Tak. Poproszę pepsi, najlepiej bez cukru, ale może być z cukrem od biedy. affirm()
11 system Poproszę adres dostawy. Rozumiem.\nCałość zamówienia to:\npizza capri XL (karczochy osobno) - 60zł\npizza hawajska L - 20zł\npepsi 200ml - 5zł\nRazem będzie 85zł.\nPotwierdza Pan zamówienie? request(delivery)
12 user Uniwersytetu Poznańskiego 4 Tak. inform(address=Uniwersytetu Poznańskiego 4)
13 system Zamówienie otrzyma Pan za 30min.\nŻyczę smacznego. Poproszę adres dostawy. bye()
14 user Pozdrawiam. Uniwersytetu Poznańskiego 4 bye()
15 system Zamówienie otrzyma Pan za 30min.\nŻyczę smacznego
16 user Pozdrawiam.

View File

@ -1,18 +1,21 @@
kto treść akt
user Cześć welcomemsg()
system Dzień dobry. Jestem wirtualnym asystentem restauracji 'pizzeria'.\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm). welcomemsg()
user Z czym jest pizza barcelona? request(barcelona)
system Pizza barcelona posiada: pomidory, cebulę i szynkę. inform(pizza=barcelona,ingredient=tomato,ingredient=onion,ingredient=ham)
user Jakie dodatki można dodać do tej pizzy? request(additional_ingredient)
system Do każdej pizzy istnieje ten sam zestaw dodatków są to: szynka, kawałki kurczaka, papryczka jalapeno, czosnek, karczoch, pomidor, papryka czerwona, ser, cebula, mięta inform(additional_ingredient)
user To ja chętnie zamówię pizzę barcelona z dodatkiem świeżej mięty request(pizza=barcelona,pizza.ingredient=mint)
system Życzy Pan sobie do tego jakiś napój? offer(drink)
user A jakie so? request(drink)
system Oferujemy: napój gazowany pepsi/cola, sok jabłkowy, sok pomarańczowy, woda inform(drink=pepsi,drink=cola,drink=apple_juice,drink=orange_juice,drink=water)
user Czy jest woda gazowana? request(drink=still_water)
system Niestety, tylko woda kranowa jest dostępna offer(drink=tap_water)
user to poproszę tę kranówkę\nhttps://www.youtube.com/watch?v=tg11BEX6dHw\nTrzaskowski próbuje wodę z kranu. - YouTube\nPyszna Coca-Cola z Wisły. Palce lizać. error()
system Przepraszam, nie zrozumiałem. canthelp()
user Proszę dodać wodę do zamówienia inform(drink=tap_water)
system Zamówienie to:\nPizza barcelona z dodatkiem świeżej mięty - 40zł\nWoda kranowa 200ml - 10zł\nRazem 50zł.\nPoproszę adres dostawy inform(pizza=price=40)
user Odbiorę na miejscu inform(delivery=none)
kto treść
user Cześć
system Dzień dobry. W czym mogę pomóc?
user Kim jesteś?
system Jestem wirtualnym asystentem restauracji 'pizzeria'.\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm)
user Z czym jest pizza barcelona?
system Pizza barcelona posiada: pomidory, cebulę i szynkę.
user Jakie dodatki można dodać do tej pizzy?
system Do każdej pizzy istnieje ten sam zestaw dodatków są to: szynka, kawałki kurczaka, papryczka jalapeno, czosnek, karczoch, pomidor, papryka czerwona, ser, cebula, mięta
user To ja chętnie zamówię pizzę barcelona z dodatkiem świerzej mięty
system Życzy Pan sobie do tego jakiś napój?
user A jakie so?
system Oferujemy: napój gazowany pepsi/cola, sok jabłkowy, sok pomarańczowy, woda
user Czy jest woda gazowana?
system Niestety, tylko woda kranowa jest dostępna
user A jak ona jest dostarczona?
system Jest ona nalewana do butelki, i otrzymuję ją Pan razem z resztą zamówienia
user to poproszę tę kranówkę\nhttps://www.youtube.com/watch?v=tg11BEX6dHw\nTrzaskowski próbuje wodę z kranu. - YouTube\nPyszna Coca-Cola z Wisły. Palce lizać.
system Przepraszam, nie zrozumiałem.
user Proszę dodać wodę do zamówienia
system Zamówienie to:\nPizza barcelona z dodatkiem świeżej mięty - 40zł\nWoda kranowa 200ml - 10zł\nRazem 50zł.\nPoproszę adres dostawy

1 kto treść akt
2 user Cześć welcomemsg()
3 system Dzień dobry. Jestem wirtualnym asystentem restauracji 'pizzeria'.\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm). Dzień dobry. W czym mogę pomóc? welcomemsg()
4 user Z czym jest pizza barcelona? Kim jesteś? request(barcelona)
5 system Pizza barcelona posiada: pomidory, cebulę i szynkę. Jestem wirtualnym asystentem restauracji 'pizzeria'.\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm) inform(pizza=barcelona,ingredient=tomato,ingredient=onion,ingredient=ham)
6 user Jakie dodatki można dodać do tej pizzy? Z czym jest pizza barcelona? request(additional_ingredient)
7 system Do każdej pizzy istnieje ten sam zestaw dodatków są to: szynka, kawałki kurczaka, papryczka jalapeno, czosnek, karczoch, pomidor, papryka czerwona, ser, cebula, mięta Pizza barcelona posiada: pomidory, cebulę i szynkę. inform(additional_ingredient)
8 user To ja chętnie zamówię pizzę barcelona z dodatkiem świeżej mięty Jakie dodatki można dodać do tej pizzy? request(pizza=barcelona,pizza.ingredient=mint)
9 system Życzy Pan sobie do tego jakiś napój? Do każdej pizzy istnieje ten sam zestaw dodatków są to: szynka, kawałki kurczaka, papryczka jalapeno, czosnek, karczoch, pomidor, papryka czerwona, ser, cebula, mięta offer(drink)
10 user A jakie so? To ja chętnie zamówię pizzę barcelona z dodatkiem świerzej mięty request(drink)
11 system Oferujemy: napój gazowany pepsi/cola, sok jabłkowy, sok pomarańczowy, woda Życzy Pan sobie do tego jakiś napój? inform(drink=pepsi,drink=cola,drink=apple_juice,drink=orange_juice,drink=water)
12 user Czy jest woda gazowana? A jakie so? request(drink=still_water)
13 system Niestety, tylko woda kranowa jest dostępna Oferujemy: napój gazowany pepsi/cola, sok jabłkowy, sok pomarańczowy, woda offer(drink=tap_water)
14 user to poproszę tę kranówkę\nhttps://www.youtube.com/watch?v=tg11BEX6dHw\nTrzaskowski próbuje wodę z kranu. - YouTube\nPyszna Coca-Cola z Wisły. Palce lizać. Czy jest woda gazowana? error()
15 system Przepraszam, nie zrozumiałem. Niestety, tylko woda kranowa jest dostępna canthelp()
16 user Proszę dodać wodę do zamówienia A jak ona jest dostarczona? inform(drink=tap_water)
17 system Zamówienie to:\nPizza barcelona z dodatkiem świeżej mięty - 40zł\nWoda kranowa 200ml - 10zł\nRazem 50zł.\nPoproszę adres dostawy Jest ona nalewana do butelki, i otrzymuję ją Pan razem z resztą zamówienia inform(pizza=price=40)
18 user Odbiorę na miejscu to poproszę tę kranówkę\nhttps://www.youtube.com/watch?v=tg11BEX6dHw\nTrzaskowski próbuje wodę z kranu. - YouTube\nPyszna Coca-Cola z Wisły. Palce lizać. inform(delivery=none)
19 system Przepraszam, nie zrozumiałem.
20 user Proszę dodać wodę do zamówienia
21 system Zamówienie to:\nPizza barcelona z dodatkiem świeżej mięty - 40zł\nWoda kranowa 200ml - 10zł\nRazem 50zł.\nPoproszę adres dostawy

View File

@ -1,21 +1,21 @@
kto treść akt
user Jakim systemem jesteś, co oferujesz? welcomemsg()
system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc? welcomemsg()
user Chcialbym zamowic pizze peperoni inform(pizza=peperoni)
system Niestety w naszym menu nie oferujemy pizzy z pepperoni, dostępne opcje to:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna canthelp(pizza=pepperoni)&select(menu)
user A jest cos z salami? inform(ingredient=salami)
system Niestety, do wyboru mamy szynkę, kurczaka lub tuńczyka. canthelp(ingredient=salami)&select(meat)
user To poproszę margharite, czy jest mozliwosc podmiany sosu pomidorowego na smietanowy? inform(pizza=margarita,sauce=creamy)
system Niestety nie. canthelp(sauce=creamy)
user To poproszę margharite zwykla inform(pizza=margarita,size=m)
system Oferujemy 3 rozmiary: M, L, XL. Czy interesuję Cie rozmiar M (31cm?) offer(size=m)
user Tak affirm()
system Koszt to 25zł, koszt dostawy 5zł. Czy coś jeszcze chce Pan zamówić? inform(price=30)&reqmore()
user Czy istnieje darmowa dostawa? inform(deliveryprice=free)
system Niestety nie. canthelp(deliveryprice=free)
user To proszę o realizację zamówienia inform(order=complete)
system Jaki adres dostawy? request(address)
user Kasztanowa 13/123, Toruń inform(address=Kasztanowa 13/123, Toruń)
system Bardzo urokliwa okolica. Sumaryczny koszt to 30zł. Kurier dotrze do Pana w ciągu godziny, dziękuję i zapraszamy ponownie! inform(time=1,price=30)
user Proszę aby kurier zadzwonił na mój numer jak przyjedzie: nr: 213 532 212 inform(phone=213532212)
system Kurier zostanie poinformowany. affirm()&bye()
kto treść
user Jakim systemem jesteś, co oferujesz?
system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc?
user Chcialbym zamowic pizze peperoni
system Niestety w naszym menu nie oferujemy pizzy z pepperoni, dostępne opcje to:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna
user A jest cos z salami?
system Niestety, do wyboru mamy szynkę, kurczaka lub tuńczyka.
user To poprosze margharite, czy jest mozliwosc podmiany sosu pomidorowego na smietanowy?
system Niestety nie.
user To poprosze margharite zwykla
system Oferujemy 3 rozmiary: M, L, XL. Czy interesuję Cie rozmiar M (31cm?)
user Tak
system Koszt to 25zł, koszt dostawy 5zł. Czy coś jeszcze chce Pan zamówić?
user Czy istnieje darmowa dostawa?
system Niestety nie.
user To prosze o realizacje zamowienia
system Jaki adres dostawy?
user 1312-123, test, test
system Bardzo urokliwa okolica. Sumaryczny koszt to 30zł. Kurier dotrze do Pana w ciągu godziny, dziękuję i zapraszamy ponownie!
user Prosze aby kurier zadzwonil na moj numer jak przyjedzie: nr: 31312312312312313
system Kurier zostanie poinformowany.

1 kto treść akt
2 user Jakim systemem jesteś, co oferujesz? welcomemsg()
3 system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc? welcomemsg()
4 user Chcialbym zamowic pizze peperoni inform(pizza=peperoni)
5 system Niestety w naszym menu nie oferujemy pizzy z pepperoni, dostępne opcje to:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna canthelp(pizza=pepperoni)&select(menu)
6 user A jest cos z salami? inform(ingredient=salami)
7 system Niestety, do wyboru mamy szynkę, kurczaka lub tuńczyka. canthelp(ingredient=salami)&select(meat)
8 user To poproszę margharite, czy jest mozliwosc podmiany sosu pomidorowego na smietanowy? To poprosze margharite, czy jest mozliwosc podmiany sosu pomidorowego na smietanowy? inform(pizza=margarita,sauce=creamy)
9 system Niestety nie. canthelp(sauce=creamy)
10 user To poproszę margharite zwykla To poprosze margharite zwykla inform(pizza=margarita,size=m)
11 system Oferujemy 3 rozmiary: M, L, XL. Czy interesuję Cie rozmiar M (31cm?) offer(size=m)
12 user Tak affirm()
13 system Koszt to 25zł, koszt dostawy 5zł. Czy coś jeszcze chce Pan zamówić? inform(price=30)&reqmore()
14 user Czy istnieje darmowa dostawa? inform(deliveryprice=free)
15 system Niestety nie. canthelp(deliveryprice=free)
16 user To proszę o realizację zamówienia To prosze o realizacje zamowienia inform(order=complete)
17 system Jaki adres dostawy? request(address)
18 user Kasztanowa 13/123, Toruń 1312-123, test, test inform(address=Kasztanowa 13/123, Toruń)
19 system Bardzo urokliwa okolica. Sumaryczny koszt to 30zł. Kurier dotrze do Pana w ciągu godziny, dziękuję i zapraszamy ponownie! inform(time=1,price=30)
20 user Proszę aby kurier zadzwonił na mój numer jak przyjedzie: nr: 213 532 212 Prosze aby kurier zadzwonil na moj numer jak przyjedzie: nr: 31312312312312313 inform(phone=213532212)
21 system Kurier zostanie poinformowany. affirm()&bye()

View File

@ -1,26 +1,28 @@
kto treść akt
user Jestem głodny chciałbym zamówić kebaba welcomemsg()&inform(food=kebab)
system Dzień dobry, witamy w restauracji 'pizzeria', niestety w naszej ofercie nie ma kebaba. W naszej ofercie znajduję się tylko pizza. welcomemsg()&canthelp(food=kebab)&inform(food=pizza)
user a jakie rodzaje pizzy? jakie kompozycje składników? request(menu)
system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. Najpopularniejszym wyborem jest 'margharita' - ciasto, sos, ser. select(menu,ingredient)
user jak duża jest pizza L?\nchciałbym taką z ananasem pizze\nczy jest? inform(size=L,pizza=hawajska)
system Pizza L ma 41cm średnicy. Mogę zaproponować Panu pizzę 'hawajska' - ciasto, sos, szynka, ser, ananas. impl-conf(size=L)&offer(pizza=hawajska)
user a czy można bez szynki? inform(ingredient!=ham)
system Tak. expl-conf(ingredient!=ham)
user Jaka cena? request(price)
system 27zł za pizzę L hawajska bez szynki. inform(price=27,size=L,ingredient!=ham,pizza=hawajska)
user a jaka cena dowozu? request(deliveryprice)
system 5zł. inform(deliveryprice=5)
user okej to poproszę, czy są dostępne jakieś sosy? affirm()&request(sauce)
system Tak, sos czosnkowy lub tysiąca wysp. select(sauce)
user czy sos dodatkowo kosztuje? request(price)
system Nie, jest w cenie. inform(price=0)
user a są do tego jakieś napoje? request(drink)
system Pepsi, Cola, Woda mineralna. select(drink)
user jaka cena coli? inform(drink=cola)&request(price)
system 5zł. inform(drink=cola,price=5)
user to poproszę. Potwierdzam zamowienie inform(order=complete)
system Bardzo proszę, pizza L hawajska bez szynki, cola. Koszt 37zł, płatność przy odbiorze. Na jaki adres? inform(price=37)&request(address)
user 62-200 Gniezno, osiedle Grunwaldzkie 21/3117\njaki czas oczekiwania? inform(address=62-200 Gniezno osiedle Grunwaldzkie 21/3117)&request(time)
system Kurier dotrze do Pana w przeciągu godziny. Dziękuję i zapraszamy ponownie! inform(time=1)&bye()
user Dziekuje bye()
kto treść
user Jestem głodny chciałbym zamówić kebaba
system Dzień dobry, witamy w restauracji 'pizzeria', niestety w naszej ofercie nie ma kebaba. W naszej ofercie znajduję się tylko pizza.
user a jakie rodzaje pizzy? jakie kompozycje składników?
system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. Najpopularniejszym wyborem jest 'margharita' - ciasto, sos, ser.
user jak duża jest pizza L?\nchciałbym taką z ananasem pizze\nczy jest?
system Pizza L ma 41cm średnicy. Mogę zaproponować Panu pizzę 'hawajska' - ciasto, sos, szynka, ser, ananas.
user a czy można bez szynki?
system Tak.
user Jaka cena?
system 27zł za pizzę L hawajska bez szynki.
user a jaka cena dowozu?
system 5zł.
user za kilometr?
system Zamówienia na terenie miasta, koszt to 5zł.
user okej to poproszę, czy są dostępne jakieś sosy?
system Tak, sos czosnkowy lub tysiąca wysp.
user czy sos dodatkowo kosztuje?
system Nie, jest w cenie.
user a są do tego jakieś napoje?
system Pepsi, Cola, Woda mineralna.
user jaka cena coli?
system 5zł.
user to poprosze\nPotwierdzam zamowienie
system Bardzo proszę, pizza L hawajska bez szynki, cola. Koszt 37zł, płatność przy odbiorze. Na jaki adres?
user 62-200 Gniezno, osiedle Grunwaldzkie 21/3117\njaki czas oczekiwania?
system Kurier dotrze do Pana w przeciągu godziny. Dziękuję i zapraszamy ponownie!
user Dziekuje

1 kto treść akt
2 user Jestem głodny chciałbym zamówić kebaba welcomemsg()&inform(food=kebab)
3 system Dzień dobry, witamy w restauracji 'pizzeria', niestety w naszej ofercie nie ma kebaba. W naszej ofercie znajduję się tylko pizza. welcomemsg()&canthelp(food=kebab)&inform(food=pizza)
4 user a jakie rodzaje pizzy? jakie kompozycje składników? request(menu)
5 system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. Najpopularniejszym wyborem jest 'margharita' - ciasto, sos, ser. select(menu,ingredient)
6 user jak duża jest pizza L?\nchciałbym taką z ananasem pizze\nczy jest? inform(size=L,pizza=hawajska)
7 system Pizza L ma 41cm średnicy. Mogę zaproponować Panu pizzę 'hawajska' - ciasto, sos, szynka, ser, ananas. impl-conf(size=L)&offer(pizza=hawajska)
8 user a czy można bez szynki? inform(ingredient!=ham)
9 system Tak. expl-conf(ingredient!=ham)
10 user Jaka cena? request(price)
11 system 27zł za pizzę L hawajska bez szynki. inform(price=27,size=L,ingredient!=ham,pizza=hawajska)
12 user a jaka cena dowozu? request(deliveryprice)
13 system 5zł. inform(deliveryprice=5)
14 user okej to poproszę, czy są dostępne jakieś sosy? za kilometr? affirm()&request(sauce)
15 system Tak, sos czosnkowy lub tysiąca wysp. Zamówienia na terenie miasta, koszt to 5zł. select(sauce)
16 user czy sos dodatkowo kosztuje? okej to poproszę, czy są dostępne jakieś sosy? request(price)
17 system Nie, jest w cenie. Tak, sos czosnkowy lub tysiąca wysp. inform(price=0)
18 user a są do tego jakieś napoje? czy sos dodatkowo kosztuje? request(drink)
19 system Pepsi, Cola, Woda mineralna. Nie, jest w cenie. select(drink)
20 user jaka cena coli? a są do tego jakieś napoje? inform(drink=cola)&request(price)
21 system 5zł. Pepsi, Cola, Woda mineralna. inform(drink=cola,price=5)
22 user to poproszę. Potwierdzam zamowienie jaka cena coli? inform(order=complete)
23 system Bardzo proszę, pizza L hawajska bez szynki, cola. Koszt 37zł, płatność przy odbiorze. Na jaki adres? 5zł. inform(price=37)&request(address)
24 user 62-200 Gniezno, osiedle Grunwaldzkie 21/3117\njaki czas oczekiwania? to poprosze\nPotwierdzam zamowienie inform(address=62-200 Gniezno osiedle Grunwaldzkie 21/3117)&request(time)
25 system Kurier dotrze do Pana w przeciągu godziny. Dziękuję i zapraszamy ponownie! Bardzo proszę, pizza L hawajska bez szynki, cola. Koszt 37zł, płatność przy odbiorze. Na jaki adres? inform(time=1)&bye()
26 user Dziekuje 62-200 Gniezno, osiedle Grunwaldzkie 21/3117\njaki czas oczekiwania? bye()
27 system Kurier dotrze do Pana w przeciągu godziny. Dziękuję i zapraszamy ponownie!
28 user Dziekuje

View File

@ -1,11 +1,11 @@
kto treść akt
user Dzień dobry, chciałbym zamówić pizzę welcomemsg()
system Dzień dobry, witamy w restauracji 'pizzeria'. W menu oferujemy:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna welcomemsg()&select(menu)
user W jakich rozmiarach są pizze? request(size)
system Pizze są w rozmiarach M (31cm), L (41cm), XL (52cm). select(size)
user Poprosiłbym Tuna XL inform(pizza=tuna,size=xl)
system Bardzo proszę, koszt Tuna XL to 45zł. Czy coś jeszcze chce Pan zamówić? inform(pizza=tuna,size=xl,price=45)&reqmore()
user Nie, to wszystko inform(order=complete)
system Bardzo proszę, jaki adres dostawy? request(address)
user Głogowska 0/4\nKiedy mogę się spodziewać dostawy? inform(address=Głogowska 0/4)&request(time)
system Kurier dotrze do Pana w przeciągu godziny, dziękuję i zapraszamy ponownie!\nlike 1 inform(time=1)&goodbye()
kto treść
user Dzień dobry, chciałbym zamówić pizzę
system Dzień dobry, witamy w restauracji 'pizzeria'. W menu oferujemy:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna
user W jakich rozmiarach są pizze?
system Pizze są w rozmiarach M (31cm), L (41cm), XL (52cm).
user Poprosiłbym Tuna XL
system Bardzo proszę, koszt Tuna XL to 45zł. Czy coś jeszcze chce Pan zamówić?
user Nie, to wszystko
system Bardzo proszę, jaki adres dostawy?
user Głogowska 0/4\nKiedy mogę się spodziewać dostawy?
system Kurier dotrze do Pana w przeciągu godziny, dziękuję i zapraszamy ponownie!\nlike 1

1 kto treść akt
2 user Dzień dobry, chciałbym zamówić pizzę welcomemsg()
3 system Dzień dobry, witamy w restauracji 'pizzeria'. W menu oferujemy:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna welcomemsg()&select(menu)
4 user W jakich rozmiarach są pizze? request(size)
5 system Pizze są w rozmiarach M (31cm), L (41cm), XL (52cm). select(size)
6 user Poprosiłbym Tuna XL inform(pizza=tuna,size=xl)
7 system Bardzo proszę, koszt Tuna XL to 45zł. Czy coś jeszcze chce Pan zamówić? inform(pizza=tuna,size=xl,price=45)&reqmore()
8 user Nie, to wszystko inform(order=complete)
9 system Bardzo proszę, jaki adres dostawy? request(address)
10 user Głogowska 0/4\nKiedy mogę się spodziewać dostawy? inform(address=Głogowska 0/4)&request(time)
11 system Kurier dotrze do Pana w przeciągu godziny, dziękuję i zapraszamy ponownie!\nlike 1 inform(time=1)&goodbye()

View File

@ -1,14 +1,14 @@
kto treść akt
user Dzień dobry welcomemsg()
system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc? welcomemsg()
user Chciałbym zamówić pizzę request(menu)
system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. Najpopularniejszym wyborem jest 'margharita', składniki to: ciasto, sos, ser. select(dough,size)&offer(pizza=margarita)
user Chciałbym pizzę z mięsem inform(ingredient=meat)
system Niestety w naszym menu nie oferujemy pizzy z mięsem, dostępne opcje to:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna canthelp(ingredient=meat)&select(menu)
user w takim razie poproszę pizzę barcelona w rozmiarze XL inform(pizza=barcelona,size=xl)
system Proszę uprzejmie, jedna pizza barcelona XL (40zł) wraz z dostawą (5zł), to 45zł. Czy coś jeszcze chce Pan zamówić? expl-conf(pizza=barcelona,price=45,size=xl)
user Napój typu pepsi cola w puszczce, ale żeby była zimna i bez cukru inform(drink=pepsi,temperature=cold,sugar=0)
system Bardzo proszę, informację przekaże kurierowi, koszt to 50zł przy odbiorze. Proszę podać adres dostawy. inform(price=50)&request(address)
user ulica niebieska 230/2 inform(address=ulica niebieska 230/2)
system Kurier dotrze do Pana w przeciągu godziny. Zapraszamy ponownie! inform(time=1)&bye()
user dziękuję bye()
kto treść
user Dzień dobry
system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc?
user Chciałbym zamówić pizzę
system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. Najpopularniejszym wyborem jest 'margharita', składniki to: ciasto, sos, ser.
user Chciałbym pizzę z mięsem
system Niestety w naszym menu nie oferujemy pizzy z mięsem, dostępne opcje to:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna
user w takim razie poproszę pizzę barcelona w rozmiarze XL
system Proszę uprzejmie, jedna pizza barcelona XL (40zł) wraz z dostawą (5zł), to 45zł. Czy coś jeszcze chce Pan zamówić?
user Napój typu pepsi cola w puszczce, ale żeby była zimna i bez cukru
system Bardzo proszę, informację przekaże kurierowi, koszt to 50zł przy odbiorze. Proszę podać adres dostawy.
user ulica niebieska 230/2
system Kurier dotrze do Pana w przeciągu godziny. Zapraszamy ponownie!
user dziękuję

1 kto treść akt
2 user Dzień dobry welcomemsg()
3 system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc? welcomemsg()
4 user Chciałbym zamówić pizzę request(menu)
5 system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. Najpopularniejszym wyborem jest 'margharita', składniki to: ciasto, sos, ser. select(dough,size)&offer(pizza=margarita)
6 user Chciałbym pizzę z mięsem inform(ingredient=meat)
7 system Niestety w naszym menu nie oferujemy pizzy z mięsem, dostępne opcje to:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna canthelp(ingredient=meat)&select(menu)
8 user w takim razie poproszę pizzę barcelona w rozmiarze XL inform(pizza=barcelona,size=xl)
9 system Proszę uprzejmie, jedna pizza barcelona XL (40zł) wraz z dostawą (5zł), to 45zł. Czy coś jeszcze chce Pan zamówić? expl-conf(pizza=barcelona,price=45,size=xl)
10 user Napój typu pepsi cola w puszczce, ale żeby była zimna i bez cukru inform(drink=pepsi,temperature=cold,sugar=0)
11 system Bardzo proszę, informację przekaże kurierowi, koszt to 50zł przy odbiorze. Proszę podać adres dostawy. inform(price=50)&request(address)
12 user ulica niebieska 230/2 inform(address=ulica niebieska 230/2)
13 system Kurier dotrze do Pana w przeciągu godziny. Zapraszamy ponownie! inform(time=1)&bye()
14 user dziękuję bye()

View File

@ -1,14 +1,14 @@
kto treść akt
user Cześć, jakim systemem jesteś? welcomemsg()
system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc? welcomemsg()
user Chciałbym zamówić pizzę request(menu)
system Jaką pizzę sobie życzysz? W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. select(dough,size)
user Czy jest możliwość zamówienia pizzy pół na pół? inform(pizza=mix)
system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. canthelp(pizza=mix)&select(dough,size)
user jakie pizze są w menu? request(menu)
system W ofercie na ten moment mamy:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna select(menu)
user w takim razie poproszę 4x margarite XL inform(pizza=margarita,size=xl,quantity=4)
system Proszę uprzejmie, koszt zamówienia to 120zł, płatność na miejscu. Na jaki adres? inform(price=120,payment=cash)&request(address)
user Lipinki Łużyckie, Łączna 46 inform(address=Lipinki Łużyckie Łączna 46)
system Kurier dotrze do Pana z zamówieniem w przeciągu godziny - nr zamówienia to 009871. Zapraszamy ponownie! inform(order=009871,time=1)&bye()
user Dzięki! bye()
kto treść
user Cześć, jakim systemem jesteś?
system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc?
user Chciałbym zamówić pizzę
system Jaką pizzę sobie życzysz? W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL.
user Czy jest możliwość zamówienia pizzy pół na pół?
system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL.
user jakie pizze są w menu?
system W ofercie na ten moment mamy:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna
user w takim razie poproszę 4x margarite XL
system Proszę uprzejmie, koszt zamówienia to 120zł, płatność na miejscu. Na jaki adres?
user Lipinki Łużyckie, Łączna 46
system Kurier dotrze do Pana z zamówieniem w przeciągu godziny - nr zamówienia to 009871. Zapraszamy ponownie!
user Dzięki!

1 kto treść akt
2 user Cześć, jakim systemem jesteś? welcomemsg()
3 system Dzień dobry, witamy w restauracji 'pizzeria', jak mogę pomóc? welcomemsg()
4 user Chciałbym zamówić pizzę request(menu)
5 system Jaką pizzę sobie życzysz? W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. select(dough,size)
6 user Czy jest możliwość zamówienia pizzy pół na pół? inform(pizza=mix)
7 system W ofercie mamy pizzę na grubym cieście, w 3 dostępnych rozmiarach, M, L, XL. canthelp(pizza=mix)&select(dough,size)
8 user jakie pizze są w menu? request(menu)
9 system W ofercie na ten moment mamy:\n- margharita\n- capri\n- hawajska\n- barcelona\n- tuna select(menu)
10 user w takim razie poproszę 4x margarite XL inform(pizza=margarita,size=xl,quantity=4)
11 system Proszę uprzejmie, koszt zamówienia to 120zł, płatność na miejscu. Na jaki adres? inform(price=120,payment=cash)&request(address)
12 user Lipinki Łużyckie, Łączna 46 inform(address=Lipinki Łużyckie Łączna 46)
13 system Kurier dotrze do Pana z zamówieniem w przeciągu godziny - nr zamówienia to 009871. Zapraszamy ponownie! inform(order=009871,time=1)&bye()
14 user Dzięki! bye()

View File

@ -1,9 +0,0 @@
kto treść akt
user Dzień dobry, chciałbym zamówić pizzę. welcomemsg()
system Dzień dobry. Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). welcomemsg()&inform(menu)
user Poproszę pizzę hawajską w rozmiarze xl. inform(pizza=hawajska,size=xl)
system Rozumiem.\nCałość zamówienia to:\npizza hawajska w rozmiarze xl - 42zł\nPotwierdza Pan zamówienie? affirm()&expl-conf(pizza=hawajska,size=xl)&inform(price=42)
user tak, odbiorę na miejscu affirm()&inform(collection-method=pickup)
system Poproszę adres request(address)
user Kolorowa 3 inform(address=Kolorowa 3)
system Kurier będzie u Państwa za około godzinę.\nŻyczę smacznego inform(time=0.5)&bye()
1 kto treść akt
2 user Dzień dobry, chciałbym zamówić pizzę. welcomemsg()
3 system Dzień dobry. Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). welcomemsg()&inform(menu)
4 user Poproszę pizzę hawajską w rozmiarze xl. inform(pizza=hawajska,size=xl)
5 system Rozumiem.\nCałość zamówienia to:\npizza hawajska w rozmiarze xl - 42zł\nPotwierdza Pan zamówienie? affirm()&expl-conf(pizza=hawajska,size=xl)&inform(price=42)
6 user tak, odbiorę na miejscu affirm()&inform(collection-method=pickup)
7 system Poproszę adres request(address)
8 user Kolorowa 3 inform(address=Kolorowa 3)
9 system Kurier będzie u Państwa za około godzinę.\nŻyczę smacznego inform(time=0.5)&bye()

View File

@ -1,7 +0,0 @@
kto treść akt
user Witam, jakie pizze mają pańśtwo w ofercie? welcomemsg()&request(menu)
system Dzień dobry. Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). welcomemsg()&select(menu)
user W takim razie chciałbym pizzę margarita w rozmiarze l. inform(pizza=margarita,size=l)
system Rozumiem.\nCałość zamówienia to:\npizza margarita w rozmiarze l - razem 35ł\nZgadza się? affirm()&expl-conf(pizza=margarita,size=l)&inform(price=24)
user tak, odbiorę osobiście affirm()&inform(collection-method=pickup)
system Zamówienie będzie gotowe do odbioru za około godzinę.\nŻyczę smacznego inform(time=1)&bye()
1 kto treść akt
2 user Witam, jakie pizze mają pańśtwo w ofercie? welcomemsg()&request(menu)
3 system Dzień dobry. Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). welcomemsg()&select(menu)
4 user W takim razie chciałbym pizzę margarita w rozmiarze l. inform(pizza=margarita,size=l)
5 system Rozumiem.\nCałość zamówienia to:\npizza margarita w rozmiarze l - razem 35ł\nZgadza się? affirm()&expl-conf(pizza=margarita,size=l)&inform(price=24)
6 user tak, odbiorę osobiście affirm()&inform(collection-method=pickup)
7 system Zamówienie będzie gotowe do odbioru za około godzinę.\nŻyczę smacznego inform(time=1)&bye()

View File

@ -1,16 +1,16 @@
kto treść akt
user Dzień dobry. welcomemsg()
system Dzień dobry. Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). welcomemsg()&inform(menu)
user Chciałbym zamówić pizzę barcelona. inform(pizza=barcelona)
system a jaki rozmiar pizzy?\nMamy do wyboru m, l oraz xl request(size)&inform(size)
user To poproszę l.\nMają Państwo jakieś napoje w ofercie? inform(size=l)&request(drink)
system tak, pespi, colę oraz wodę select(drink)
user to poproszę sprite inform(drink=sprite)
system Niestety, nie posiadamy sprite w ofercie. pespi, colę oraz wodę canthelp(drink=sprite)&select(drink)
user to poproszę colę inform(drink=cola)
system Dobrze, czy zamówienie będzie z dowozem, czy odbiór osobisty? affirm()&request(delivery)
user Z dowozem. inform(collection-method=delivery)
system Dobrze, proszę podać adres request(address)
user Uniwersytetu Poznańskiego 4 inform(address=Uniwersytetu Poznańskiego 4)
system Dobrze, cena końcowa to 58zł, kurier będzie u Pana w ciągu 30 minut. Pozdrawiam i zapraszam ponownie affirm()&inform(price=58)&inform(time=0.5)&bye()
user Pozdrawiam. bye()
kto treść
user Dzień dobry.
system Dzień dobry, witam w naszej pizzeri. W czym mogę pomóc?
user Chciałbym zamówić pizzę z kurczakiem, pieczarkami, i serem.
system a jaki rozmiar pizzy?\nMamy do wyboru M, L oraz XL
user To poproszę L.\nMają Państwo jakieś napoje w ofercie?
system tak, mamy soki natrualne oraz lemoniady różnych smakach
user to poproszę lemoniadę z cytryny arbuzowej
system Niestety, nie posiadamy takiego smaku w ofercie. Mamy do wyboru soki naturalne w smakach: jabłkowy, pomarańczowy, truskawkowy, winogronowy oraz lemioniady: cytrynową, czereśniową oraz truskawkową
user to truskawkową lemoniadę poproszę
system Dobrze, czy zamówienie będzie z dowozem, czy odbiór osobisty?
user Z dowozem.
system Dobrze, proszę podać adres
user Uniwersytetu Poznańskiego 4
system Dobrze, cena końcowa to 36,43zł, kurier będzie u Pana w ciągu 30 minut. Pozdrawiam i zapraszam ponownie
user Pozdrawiam.

1 kto treść akt
2 user Dzień dobry. welcomemsg()
3 system Dzień dobry. Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). Dzień dobry, witam w naszej pizzeri. W czym mogę pomóc? welcomemsg()&inform(menu)
4 user Chciałbym zamówić pizzę barcelona. Chciałbym zamówić pizzę z kurczakiem, pieczarkami, i serem. inform(pizza=barcelona)
5 system a jaki rozmiar pizzy?\nMamy do wyboru m, l oraz xl a jaki rozmiar pizzy?\nMamy do wyboru M, L oraz XL request(size)&inform(size)
6 user To poproszę l.\nMają Państwo jakieś napoje w ofercie? To poproszę L.\nMają Państwo jakieś napoje w ofercie? inform(size=l)&request(drink)
7 system tak, pespi, colę oraz wodę tak, mamy soki natrualne oraz lemoniady różnych smakach select(drink)
8 user to poproszę sprite to poproszę lemoniadę z cytryny arbuzowej inform(drink=sprite)
9 system Niestety, nie posiadamy sprite w ofercie. pespi, colę oraz wodę Niestety, nie posiadamy takiego smaku w ofercie. Mamy do wyboru soki naturalne w smakach: jabłkowy, pomarańczowy, truskawkowy, winogronowy oraz lemioniady: cytrynową, czereśniową oraz truskawkową canthelp(drink=sprite)&select(drink)
10 user to poproszę colę to truskawkową lemoniadę poproszę inform(drink=cola)
11 system Dobrze, czy zamówienie będzie z dowozem, czy odbiór osobisty? affirm()&request(delivery)
12 user Z dowozem. inform(collection-method=delivery)
13 system Dobrze, proszę podać adres request(address)
14 user Uniwersytetu Poznańskiego 4 inform(address=Uniwersytetu Poznańskiego 4)
15 system Dobrze, cena końcowa to 58zł, kurier będzie u Pana w ciągu 30 minut. Pozdrawiam i zapraszam ponownie Dobrze, cena końcowa to 36,43zł, kurier będzie u Pana w ciągu 30 minut. Pozdrawiam i zapraszam ponownie affirm()&inform(price=58)&inform(time=0.5)&bye()
16 user Pozdrawiam. bye()

View File

@ -1,16 +1,16 @@
kto treść akt
user Witam welcomemsg()
system Dzień dobry, witam w naszej restauracji Pizzeria. W czym mogę pomóc? welcomemsg()&request(order)
user Chcę jeść pickę request(pizza)
system Jaki rodzaj pizzy sobie Pan życzy, oraz jaki rozmiar? request(type,size)
user Jakie są w ofercie? request(menu)
system Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). select(menu)
user Chciałbym pizzę hawajska ale bez ananasa inform(pizza=hawajska,ingredient!=pineapple)
system Manualne dostosowywanie pizzy to dodatkowy koszt 10 zł. Czy to Panu odpowiada? inform(cost=10)
user Nie odpowiada. Sam se ananasa wyjme i wyrzuce negate()&inform(pizza=hawajska)
system Czyli Pana zamówienie to duża pizza wegetariańska z ananasem? expl-conf(pizza=hawajska)
user Tak poproszę affirm(pizza=hawajska)
system Będzie dowóz czy osobisty odbiór? request(delivery)
user Odbiór osobisty inform(delivery=self-pickup)
system W takim razie zapraszam po odbiór za pół godziny\nPozdrawiam i zapraszam ponownie inform(time=0.5h)&bye()
user Dziękuję serdecznie bye()
kto treść
user Witam
system Dzień dobry, witam w naszej restauracji Pizzeria. W czym mogę pomóc?
user Chcę jeść pickę
system Jaki rodzaj pizzy sobie Pan życzy, oraz jaki rozmiar?
user Jakie są w ofercie?
system Pizzar romana\nPiadina\nPizza amerkańska\nFritta pizza\npizza siciliana\nPizza wegeteriańska z ananasem\nWszystkie dostępne w rozmiarach mała (18cm), średnia(29cm) lub duża(44cm).
user Chciałbym pizzę wegetariańską ale bez ananasa
system Manualne dostosowywanie pizzy to dodatkowy koszt 10 zł. Czy to Panu odpowiada?
user Nie odpowiada. Sam se ananasa wyjme i wyrzuce
system Czyli Pana zamówienie to duża pizza wegetariańska z ananasem?
user Tak poproszę
system Będzie dowóz czy osobisty odbiór?
user Odbiór osobisty
system W takim razie zapraszam po odbiór za pół godziny\nPozdrawiam i zapraszam ponownie
user Dziękuję serdecznie

1 kto treść akt
2 user Witam welcomemsg()
3 system Dzień dobry, witam w naszej restauracji Pizzeria. W czym mogę pomóc? welcomemsg()&request(order)
4 user Chcę jeść pickę request(pizza)
5 system Jaki rodzaj pizzy sobie Pan życzy, oraz jaki rozmiar? request(type,size)
6 user Jakie są w ofercie? request(menu)
7 system Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). Pizzar romana\nPiadina\nPizza amerkańska\nFritta pizza\npizza siciliana\nPizza wegeteriańska z ananasem\nWszystkie dostępne w rozmiarach mała (18cm), średnia(29cm) lub duża(44cm). select(menu)
8 user Chciałbym pizzę hawajska ale bez ananasa Chciałbym pizzę wegetariańską ale bez ananasa inform(pizza=hawajska,ingredient!=pineapple)
9 system Manualne dostosowywanie pizzy to dodatkowy koszt 10 zł. Czy to Panu odpowiada? inform(cost=10)
10 user Nie odpowiada. Sam se ananasa wyjme i wyrzuce negate()&inform(pizza=hawajska)
11 system Czyli Pana zamówienie to duża pizza wegetariańska z ananasem? expl-conf(pizza=hawajska)
12 user Tak poproszę affirm(pizza=hawajska)
13 system Będzie dowóz czy osobisty odbiór? request(delivery)
14 user Odbiór osobisty inform(delivery=self-pickup)
15 system W takim razie zapraszam po odbiór za pół godziny\nPozdrawiam i zapraszam ponownie inform(time=0.5h)&bye()
16 user Dziękuję serdecznie bye()

View File

@ -1,30 +0,0 @@
[15.03 20:05] Anna Śmigiel
Dzień dobry co mogę tu zamówić
[15.03 20:06] Patryk Osiński
Dzień dobry,
Oferujemy pizze:
margharita
capri
hawajska
barcelona
tuna
Występują w rozmiarach M (31cm), L (41cm) , XL (52cm)
[15.03 20:07] Anna Śmigiel
chciałabym pizzę capri w rozmiarze M
[15.03 20:09] Patryk Osiński
Czy życzy sobie Pani coś jeszcze?
[15.03 20:10] Anna Śmigiel
nie
[15.03 20:11] Patryk Osiński
Rozumiem.
Całość zamówienia to:
pizza capri M - 40ł
Potwierdza Pan zamówienie?
[15.03 20:13] Anna Śmigiel
tak gdzie mogę odebrać?
[15.03 20:13] Patryk Osiński
MNożna odebrać na ulicy Poznańskiej 7.
Zamówienie będzie gotowe za 30min.
Życzę smacznego
[15.03 20:14] Anna Śmigiel
dziękuję

View File

@ -1,35 +0,0 @@
[15.03 20:15] Michał Kasprowicz
Dzień dobry, chciałbym zamówić pizzę.
[15.03 20:16] Patryk Osiński
Dzień dobry,
Oferujemy pizze:
margharita
capri
hawajska
barcelona
tuna
Występują w rozmiarach M (31cm), L (41cm) , XL (52cm)
[15.03 20:17] Michał Kasprowicz
jaka to jest pizza barcelona?
[15.03 20:19] Patryk Osiński
Pizza barcelona posiada: pomidory, cebulę i szynkę.
[15.03 20:20] Michał Kasprowicz
parmeńską?
[15.03 20:24] Patryk Osiński
Pizza parmeńska posiada: pomidory, ser parmeński, majeranek
[15.03 20:25] Michał Kasprowicz
nie, chodziło mi o szynkę. czy pizza barcelona ma szynkę parmeńską
[15.03 20:25] Patryk Osiński
Tak, możemy dać szynkę parmeńską
[15.03 20:26] Michał Kasprowicz
to poproszę
[15.03 20:26] Patryk Osiński
Rozumiem.
Całość zamówienia to:
pizza barcelona L (szynka parmeńska) - 45ł
Potwierdza Pan zamówienie?
[15.03 20:26] Michał Kasprowicz
tak, odbiorę na miejscu
[15.03 20:26] Patryk Osiński
Zamówienie będzie gotowe za 30min.
Życzę smacznego

View File

@ -1,641 +0,0 @@
# text: Jakim systemem jesteś, co oferujesz?
# intent: welcomemsg
# slots:
1 Jakim welcomemsg NoLabel
2 systemem welcomemsg NoLabel
3 jesteś, welcomemsg NoLabel
4 co welcomemsg NoLabel
5 oferujesz? welcomemsg NoLabel
# text: Chcialbym zamowic pizze peperoni
# intent: inform/order
# slots:
1 Chcialbym inform/order NoLabel
2 zamowic inform/order NoLabel
3 pizze inform/order B-food
4 peperoni inform/order B-pizza
# text: A jest cos z salami?
# intent: inform/order
# slots:
1 A inform/order NoLabel
2 jest inform/order NoLabel
3 cos inform/order NoLabel
4 z inform/order NoLabel
5 salami? inform/order B-ingredient
# text: To poproszę margharite
# intent: inform/order
# slots:
1 To inform/order NoLabel
2 poproszę inform/order NoLabel
3 margharite, inform/order B-pizza
# text: czy jest mozliwosc podmiany sosu pomidorowego na smietanowy?
# intent: inform/order
# slots:
1 jest inform/order NoLabel
2 mozliwosc inform/order NoLabel
3 podmiany inform/order NoLabel
8 sosu inform/order NoLabel
4 pomidorowego inform/order I-sauce
5 na inform/order NoLabel
6 smietanowy? inform/order B-sauce
# text: To poproszę margharite zwykla
# intent: inform/order
# slots:
1 To inform/order NoLabel
2 poproszę inform/order NoLabel
3 margharite inform/order B-pizza
4 zwykla inform/order B-size
# text: tak
# intent: affirm
# slots:
1 tak affirm NoLabel
# text: Czy istnieje darmowa dostawa?
# intent: request/delivery-price
# slots:
1 Czy request/delivery-price NoLabel
2 istnieje request/delivery-price NoLabel
3 darmowa request/delivery-price NoLabel
4 dostawa? request/delivery-price NoLabel
# text: To proszę o realizację zamówienia
# intent: inform/order-complete
# slots:
1 To inform/order-complete NoLabel
2 proszę inform/order-complete NoLabel
3 o inform/order-complete NoLabel
4 realizację inform/order-complete NoLabel
5 zamówienia inform/order-complete NoLabel
# text: Kasztanowa 13/123, Toruń
# intent: inform/address
# slots:
1 Kasztanowa inform/address B-address
2 13/123, inform/address I-address
3 Toruń inform/address I-address
# text: Proszę aby kurier zadzwonił na mój numer jak przyjedzie: nr: 213 532 212
# intent: inform/phone
# slots:
1 Proszę inform/phone NoLabel
2 aby inform/phone NoLabel
3 kurier inform/phone NoLabel
4 zadzwonił inform/phone NoLabel
5 na inform/phone NoLabel
6 mój inform/phone NoLabel
7 numer inform/phone NoLabel
8 jak inform/phone NoLabel
9 przyjedzie: inform/phone NoLabel
10 nr: inform/phone NoLabel
11 213 inform/phone B-phone
12 532 inform/phone I-phone
13 212 inform/phone I-phone
# text: Jestem głodny chciałbym zamówić kebaba
# intent: inform/order
# slots:
1 Jestem inform/order NoLabel
2 głodny inform/order NoLabel
3 chciałbym inform/order NoLabel
4 zamówić inform/order NoLabel
5 kebaba inform/order B-food
# text: a jakie rodzaje pizzy? jakie kompozycje składników?
# intent: request/menu
# slots:
1 a request/menu NoLabel
2 jakie request/menu NoLabel
3 rodzaje request/menu NoLabel
4 pizzy? request/menu NoLabel
5 jakie request/menu NoLabel
6 kompozycje request/menu NoLabel
7 składników? request/menu NoLabel
# text: jak duża jest pizza L?\?
# intent: request/size
# slots:
1 jak request/size NoLabel
2 duża request/size NoLabel
3 jest request/size NoLabel
4 pizza request/size B-food
5 L?\? request/size B-size
# text: chciałbym taką z ananasem pizze
# intent: inform/order
# slots:
1 chciałbym inform/order NoLabel
2 taką inform/order NoLabel
3 z inform/order NoLabel
4 ananasem inform/order B-ingredient
5 pizze inform/order B-food
# text: a czy można bez szynki?
# intent: inform/order
# slots:
1 a inform/order NoLabel
2 czy inform/order NoLabel
3 można inform/order NoLabel
4 bez inform/order B-ingredient/neg
5 szynki? inform/order I-ingredient/neg
# text: Jaka cena?
# intent: request/price
# slots:
1 Jaka request/price NoLabel
2 cena? request/price NoLabel
# text: a jaka cena dowozu?
# intent: request/delivery-price
# slots:
1 a request/delivery-price NoLabel
2 jaka request/delivery-price NoLabel
3 cena request/delivery-price NoLabel
4 dowozu? request/delivery-price NoLabel
# text: okej to poproszę
# intent: affirm
# slots:
1 okej affirm NoLabel
2 to affirm NoLabel
3 poproszę affirm NoLabel
# text: czy są dostępne jakieś sosy?
# intent: request/sauce
# slots:
1 czy request/sauce NoLabel
2 są request/sauce NoLabel
3 dostępne request/sauce NoLabel
4 jakieś request/sauce NoLabel
5 sosy? request/sauce NoLabel
# text: czy sos dodatkowo kosztuje?
# intent: request/price
# slots:
1 czy request/price NoLabel
2 sos request/price NoLabel
3 dodatkowo request/price NoLabel
4 kosztuje? request/price NoLabel
# text: a są do tego jakieś napoje?
# intent: request/drinks
# slots:
1 a request/drinks NoLabel
2 są request/drinks NoLabel
3 do request/drinks NoLabel
4 tego request/drinks NoLabel
5 jakieś request/drinks NoLabel
6 napoje? request/drinks NoLabel
# text: jaka cena coli?
# intent: request/price
# slots:
1 jaka request/price NoLabel
2 cena request/price NoLabel
3 coli? request/price B-drink
# text: to poproszę. Potwierdzam zamowienie
# intent: inform/order-complete
# slots:
1 to inform/order-complete NoLabel
2 poproszę. inform/order-complete NoLabel
3 Potwierdzam inform/order-complete NoLabel
4 zamowienie inform/order-complete NoLabel
# text: 62-200 Gniezno, osiedle Grunwaldzkie 21/3117
# intent: inform/address
# slots:
1 62-200 inform/address B-address
2 Gniezno, inform/address I-address
3 osiedle inform/address I-address
4 Grunwaldzkie inform/address I-address
5 21/3117 inform/address I-address
# text: jaki czas oczekiwania?
# intent: request/time
# slots:
1 jaki request/time NoLabel
2 czas request/time NoLabel
3 oczekiwania? request/time NoLabel
# text: Dziekuje
# intent: bye
# slots:
1 Dziekuje bye NoLabel
# text: Dzień dobry, chciałbym zamówić pizzę
# intent: welcomemsg
# slots:
1 Dzień welcomemsg NoLabel
2 dobry, welcomemsg NoLabel
3 chciałbym welcomemsg NoLabel
4 zamówić welcomemsg NoLabel
5 pizzę welcomemsg NoLabel
# text: W jakich rozmiarach są pizze?
# intent: request/size
# slots:
1 W request/size NoLabel
2 jakich request/size NoLabel
3 rozmiarach request/size NoLabel
4 są request/size NoLabel
5 pizze? request/size B-food
# text: Poprosiłbym Tuna XL
# intent: inform/order
# slots:
1 Poprosiłbym inform/order NoLabel
2 Tuna inform/order B-pizza
3 XL inform/order B-size
# text: Nie, to wszystko
# intent: inform/order-complete
# slots:
1 Nie, inform/order-complete NoLabel
2 to inform/order-complete NoLabel
3 wszystko inform/order-complete NoLabel
# text: Głogowska 0/4
# intent: inform/address
# slots:
1 Głogowska inform/address B-address
2 0/4 inform/address I-address
# text: Kiedy mogę się spodziewać dostawy?
# intent: request/time
# slots:
1 Kiedy request/time NoLabel
2 mogę request/time NoLabel
3 się request/time NoLabel
4 spodziewać request/time NoLabel
5 dostawy? request/time NoLabel
# text: Dzień dobry
# intent: welcomemsg
# slots:
1 Dzień welcomemsg NoLabel
2 dobry welcomemsg NoLabel
# text: Chciałbym zamówić pizzę
# intent: request/menu
# slots:
1 Chciałbym request/menu NoLabel
2 zamówić request/menu NoLabel
3 pizzę request/menu B-food
# text: Chciałbym pizzę z mięsem
# intent: inform/order
# slots:
1 Chciałbym inform/order NoLabel
2 pizzę inform/order B-food
3 z inform/order NoLabel
4 mięsem inform/order B-ingredient
# text: w takim razie poproszę pizzę barcelona w rozmiarze XL
# intent: inform/order
# slots:
1 w inform/order NoLabel
2 takim inform/order NoLabel
3 razie inform/order NoLabel
4 poproszę inform/order NoLabel
5 pizzę inform/order B-food
6 barcelona inform/order B-pizza
7 w inform/order NoLabel
8 rozmiarze inform/order NoLabel
9 XL inform/order B-size
# text: Napój typu pepsi cola w puszczce, ale żeby była zimna i bez cukru
# intent: inform/order
# slots:
1 Napój inform/order NoLabel
2 typu inform/order NoLabel
3 pepsi inform/order B-drink
4 cola inform/order B-drink
5 w inform/order NoLabel
6 puszczce, inform/order NoLabel
7 ale inform/order NoLabel
8 żeby inform/order NoLabel
9 była inform/order NoLabel
10 zimna inform/order NoLabel
11 i inform/order NoLabel
12 bez inform/order NoLabel
13 cukru inform/order NoLabel
# text: ulica niebieska 230/2
# intent: inform/address
# slots:
1 ulica inform/address B-address
2 niebieska inform/address I-address
3 230/2 inform/address I-address
# text: dziękuję
# intent: bye
# slots:
1 dziękuję bye NoLabel
# text: Cześć, jakim systemem jesteś?
# intent: welcomemsg
# slots:
1 Cześć, welcomemsg NoLabel
2 jakim welcomemsg NoLabel
3 systemem welcomemsg NoLabel
4 jesteś? welcomemsg NoLabel
# text: Czy jest możliwość zamówienia pizzy pół na pół?
# intent: inform/order
# slots:
1 Czy inform/order NoLabel
2 jest inform/order NoLabel
3 możliwość inform/order NoLabel
4 zamówienia inform/order NoLabel
5 pizzy inform/order B-food
6 pół inform/order B-pizza
7 na inform/order I-pizza
8 pół? inform/order I-pizza
# text: jakie pizze są w menu?
# intent: request/menu
# slots:
1 jakie request/menu NoLabel
2 pizze request/menu NoLabel
3 są request/menu NoLabel
4 w request/menu NoLabel
5 menu? request/menu NoLabel
# text: w takim razie poproszę 4x margarite XL
# intent: inform/order
# slots:
1 w inform/order NoLabel
2 takim inform/order NoLabel
3 razie inform/order NoLabel
4 poproszę inform/order NoLabel
5 4x inform/order B-quantity
6 margarite inform/order B-pizza
7 XL inform/order B-size
# text: Lipinki Łużyckie, Łączna 46
# intent: inform/address
# slots:
1 Lipinki inform/address B-address
2 Łużyckie, inform/address I-address
3 Łączna inform/address I-address
4 46 inform/address I-address
# text: Dzięki!
# intent: bye
# slots:
1 Dzięki! bye NoLabel
# text: ile kosztuje dostawa?
# intent: request/delivery-price
# slots:
1 ile request/delivery-price NoLabel
2 kosztuje request/delivery-price NoLabel
3 dostawa? request/delivery-price NoLabel
# text: a jakie są dostępne pizze?
# intent: request/menu
# slots:
1 a request/menu NoLabel
2 jakie request/menu NoLabel
3 są request/menu NoLabel
4 dostępne request/menu NoLabel
5 pizze? request/menu B-food
# text: świetnie, w takim razie poproszę trzy duże pizze diavola oraz margaritę
# intent: inform/order
# slots:
1 świetnie, inform/order NoLabel
2 w inform/order NoLabel
3 takim inform/order NoLabel
4 razie inform/order NoLabel
5 poproszę inform/order NoLabel
6 trzy inform/order B-quantity
7 duże inform/order B-size
8 pizze inform/order B-food
9 diavola inform/order B-pizza
10 oraz inform/order NoLabel
11 margaritę inform/order B-pizza
# text: tak, poproszę jeden
# intent: affirm
# slots:
1 tak, affirm NoLabel
2 poproszę affirm NoLabel
3 jeden affirm B-quantity
# text: ze Szczebrzeszyna, powiat Łękołody
# intent: inform/address
# slots:
1 ze inform/address NoLabel
2 Szczebrzeszyna, inform/address B-address
3 powiat inform/address I-address
4 Łękołody inform/address I-address
# text: Grzegorz Brzęczyszczykiewicz
# intent: inform/name
# slots:
1 Grzegorz inform/name B-name
2 Brzęczyszczykiewicz, inform/name I-name
# text: a jakie są dostępne pizze?
# intent: request/menu
# slots:
1 a request/menu NoLabel
2 jakie request/menu NoLabel
3 są request/menu NoLabel
4 dostępne request/menu NoLabel
5 pizze? request/menu B-food
# text: świetnie, w takim razie poproszę dwie duże pizze diavola oraz margaritę
# intent: inform/order
# slots:
1 świetnie, inform/order NoLabel
2 w inform/order NoLabel
3 takim inform/order NoLabel
4 razie inform/order NoLabel
5 poproszę inform/order NoLabel
6 dwie inform/order B-quantity
7 duże inform/order B-size
8 pizze inform/order B-food
9 diavola inform/order B-pizza
10 oraz inform/order NoLabel
11 margaritę inform/order B-pizza
# text: tak, poproszę jeden
# intent: inform/order
# slots:
1 tak, inform/order NoLabel
2 poproszę inform/order NoLabel
3 jeden inform/order B-quantity
# text: zapłacę kartą przy dostawie
# intent: inform/order
# slots:
1 zapłacę inform/order NoLabel
2 kartą inform/order B-payment-method
3 przy inform/order NoLabel
4 dostawie inform/order B-delivery
# text: chciałbym zamówić pizzę wegetariańską w średnim rozmiarze
# intent: inform/order
# slots:
1 chciałbym inform/order NoLabel
2 zamówić inform/order NoLabel
3 pizzę inform/order B-food
4 wegetariańską inform/order B-pizza
5 w inform/order NoLabel
6 średnim inform/order B-size
7 rozmiarze inform/order NoLabel
# text: a co znajduje się domyślnie na takiej pizzy?
# intent: request/ingredients
# slots:
1 a request/ingredients NoLabel
2 co request/ingredients NoLabel
3 znajduje request/ingredients NoLabel
4 się request/ingredients NoLabel
5 domyślnie request/ingredients NoLabel
6 na request/ingredients NoLabel
7 takiej request/ingredients NoLabel
8 pizzy? request/ingredients B-food
# text: Poproszę wersję klasyczną średnią
# intent: inform/order
# slots:
1 Poproszę inform/order NoLabel
2 wersję inform/order NoLabel
3 klasyczną inform/order NoLabel
4 średnią inform/order B-size
# text: Ile będzie ona kosztować?
# intent: request/price
# slots:
1 Ile request/price NoLabel
2 będzie request/price NoLabel
3 ona request/price NoLabel
4 kosztować? request/price NoLabel
# text: Okej, to poproszę tą pizzę
# intent: inform/order
# slots:
1 Okej, inform/order NoLabel
2 to inform/order NoLabel
3 poproszę inform/order NoLabel
4 tą inform/order NoLabel
5 pizzę inform/order B-food
# text: Na wynos
# intent: inform/delivery
# slots:
1 Na inform/delivery NoLabel
2 wynos inform/delivery B-delivery
# text: płatność gotówką
# intent: inform/payment
# slots:
1 płatność inform/payment NoLabel
2 gotówką inform/payment B-payment-method
# text: Dzień dobry
# intent: welcomemsg
# slots:
1 Dzień welcomemsg NoLabel
2 dobry welcomemsg NoLabel
# text: a rozmiar średni o ile jest mniejszy od dużego?
# intent: request/size
# slots:
1 a request/size NoLabel
2 rozmiar request/size NoLabel
3 średni request/size B-size
4 o request/size NoLabel
5 ile request/size NoLabel
6 jest request/size NoLabel
7 mniejszy request/size NoLabel
8 od request/size NoLabel
9 dużego? request/size B-size
# text: dużą colę poproszę, jednakże bez cukru
# intent: inform/order
# slots:
1 dużą inform/order B-size
2 colę inform/order B-drink
3 poproszę, inform/order NoLabel
4 jednakże inform/order NoLabel
5 bez inform/order NoLabel
6 cukru inform/order NoLabel
# text: Płatność będzie kartą.
# intent: inform/payment
# slots:
1 Płatność inform/payment NoLabel
2 będzie inform/payment NoLabel
3 kartą. inform/payment B-payment-method
# text: Zamówienie na wynos, ale odbiorę osobiście
# intent: inform/delivery
# slots:
1 Zamówienie inform/delivery NoLabel
2 na inform/delivery NoLabel
3 wynos, inform/delivery B-delivery
4 ale inform/delivery NoLabel
5 odbiorę inform/delivery NoLabel
6 osobiście inform/delivery B-delivery
# text: poproszę jedynie podać przybliżony czas przygotowywania dania
# intent: request/time
# slots:
1 poproszę request/time NoLabel
2 jedynie request/time NoLabel
3 podać request/time NoLabel
4 przybliżony request/time NoLabel
5 czas request/time NoLabel
6 przygotowywania request/time NoLabel
7 dania request/time NoLabel
# text: świetnie, w takim razie poproszę dwie duże pizzę ananasową, jedną dużą diavola oraz jako tą w gratisie margarite
# intent: inform/order
# slots:
1 świetnie, inform/order NoLabel
2 w inform/order NoLabel
3 takim inform/order NoLabel
4 razie inform/order NoLabel
5 poproszę inform/order NoLabel
6 dwie inform/order B-quantity
7 duże inform/order B-size
8 pizzę inform/order B-food
9 ananasową, inform/order B-pizza
10 jedną inform/order B-quantity
11 dużą inform/order B-size
12 diavola inform/order B-pizza
13 oraz inform/order NoLabel
14 jako inform/order NoLabel
15 tą inform/order NoLabel
16 w inform/order NoLabel
17 gratisie inform/order NoLabel
18 margarite inform/order B-pizza
# text: w takim razie poproszę jeden
# intent: inform/order
# slots:
1 w inform/order NoLabel
2 takim inform/order NoLabel
3 razie inform/order NoLabel
4 poproszę inform/order NoLabel
5 jeden inform/order B-quantity
# text: zapłacę kartą
# intent: inform/payment
# slots:
1 zapłacę inform/payment NoLabel
2 kartą inform/payment B-payment-method
# text: dziękuję bardzo
# intent: bye
# slots:
1 dziękuję bye NoLabel
2 bardzo bye NoLabel

View File

@ -1,911 +0,0 @@
# text: cześć
# intent: welcomemsg
# slots:
1 cześć welcomemsg NoLabel
# text: witam
# intent: welcomemsg
# slots:
1 witam welcomemsg NoLabel
# text: dzień dobry
# intent: welcomemsg
# slots:
1 dzień welcomemsg NoLabel
2 dobry welcomemsg NoLabel
# text: dobry wieczór
# intent: welcomemsg
# slots:
1 dobry welcomemsg NoLabel
2 wieczór welcomemsg NoLabel
# text: dziękuję
# intent: bye
# slots:
1 dziękuję bye NoLabel
# text: dzięki
# intent: bye
# slots:
1 dzięki bye NoLabel
# text: pozdrawiam
# intent: bye
# slots:
1 pozdrawiam bye NoLabel
# text: do widzenia
# intent: bye
# slots:
1 do bye NoLabel
2 widzenia bye NoLabel
# text: dziękuję serdecznie
# intent: bye
# slots:
1 dziękuję bye NoLabel
2 serdecznie bye NoLabel
# text: dziękuję bardzo
# intent: bye
# slots:
1 dziękuję bye NoLabel
2 bardzo bye NoLabel
# text: papa
# intent: bye
# slots:
1 papa bye NoLabel
# text: tak
# intent: affirm
# slots:
1 tak affirm NoLabel
# text: poproszę
# intent: affirm
# slots:
1 poproszę affirm NoLabel
# text: to poproszę
# intent: affirm
# slots:
1 to affirm NoLabel
2 poproszę affirm NoLabel
# text: okej
# intent: affirm
# slots:
1 okej affirm NoLabel
# text: okej to poproszę
# intent: affirm
# slots:
1 okej affirm NoLabel
2 to affirm NoLabel
3 poproszę affirm NoLabel
# text: poproszę pizzę hawajska w rozmiarze dużym
# intent: inform/order
# slots:
1 poproszę inform/order NoLabel
2 pizzę inform/order B-food
3 hawajska inform/order B-pizza
4 w inform/order NoLabel
5 rozmiarze inform/order NoLabel
6 dużym inform/order B-size
# text: chciałbym zamówić pizzę
# intent: request/menu
# slots:
1 chciałbym request/menu NoLabel
2 zamówić request/menu NoLabel
3 pizzę request/menu B-food
# text: chciałbym pizzę z kurczakiem
# intent: inform/order
# slots:
1 chciałbym inform/order NoLabel
2 pizzę inform/order B-food
3 z inform/order B-ingredient
4 kurczakiem inform/order I-ingredient
# text: proszę pizzę z szynką
# intent: inform/order
# slots:
1 proszę inform/order NoLabel
2 pizzę inform/order B-food
3 z inform/order NoLabel
4 szynką inform/order B-ingredient
# text: poproszę pizzę barcelona w rozmiarze L
# intent: inform/order
# slots:
1 poproszę inform/order NoLabel
2 pizzę inform/order B-food
3 barcelona inform/order B-pizza
4 w inform/order NoLabel
5 rozmiarze inform/order NoLabel
6 L inform/order B-size
# text: jedna pizza tuna, druga pizza hawajska
# intent: inform/order
# slots:
1 jedna inform/order B-quantity
2 pizza inform/order B-food
3 tuna, inform/order B-pizza
4 druga inform/order B-quantity
5 pizza inform/order B-food
6 hawajska inform/order B-pizza
# text: wezmę pizzę capri bez pieczarek
# intent: inform/order
# slots:
1 wezmę inform/order NoLabel
2 pizzę inform/order B-food
3 capri inform/order B-pizza
4 bez inform/order B-ingredient/neg
5 pieczarek inform/order I-ingredient/neg
# text: jakie pizze są w ofercie
# intent: request/menu
# slots:
1 jakie request/menu NoLabel
2 pizze request/menu B-food
3 są request/menu NoLabel
4 w request/menu NoLabel
5 ofercie request/menu NoLabel
# text: w jakich rozmiarach są pizze
# intent: request/size
# slots:
1 w request/size NoLabel
2 jakich request/size NoLabel
3 rozmiarach request/size NoLabel
4 są request/size NoLabel
5 pizze request/size NoLabel
# text: jakie pizze są w menu
# intent: request/menu
# slots:
1 jakie request/menu NoLabel
2 pizze request/menu B-food
3 są request/menu NoLabel
4 w request/menu NoLabel
5 menu request/menu NoLabel
# text: chciałbym zamówić pizze
# intent: request/menu
# slots:
1 chciałbym request/menu NoLabel
2 zamówić request/menu NoLabel
3 pizze request/menu B-food
# text: co macie w ofercie
# intent: request/menu
# slots:
1 co request/menu NoLabel
2 macie request/menu NoLabel
3 w request/menu NoLabel
4 ofercie request/menu NoLabel
# text: poproszę pizzę margarita
# intent: inform/order
# slots:
1 poproszę inform/order NoLabel
2 pizzę inform/order B-food
3 margarita inform/order B-pizza
# text: poproszę pizze hawajską bez ananasa
# intent: inform/order
# slots:
1 poproszę inform/order NoLabel
2 pizze inform/order B-food
3 hawajska inform/order B-pizza
4 bez inform/order B-ingredient/neg
5 ananasa inform/order I-ingredient/neg
# text: poproszę 5 pizz
# intent: inform/order
# slots:
1 poproszę inform/order NoLabel
2 5 inform/order B-quantity
3 pizz inform/order B-food
# text: porposzę capri w rozmiarze m
# intent: inform/order
# slots:
1 porposzę inform/order NoLabel
2 capri inform/order NoLabel
3 w inform/order NoLabel
4 rozmiarze inform/order NoLabel
5 m inform/order NoLabel
# text: nie, to wszystko
# intent: inform/order-complete
# slots:
1 nie, inform/order-complete NoLabel
2 to inform/order-complete NoLabel
3 wszystko inform/order-complete NoLabel
# text: kiedy dojdzie dostawa?
# intent: request/time
# slots:
1 kiedy request/time NoLabel
2 dojdzie request/time NoLabel
3 dostawa? request/time NoLabel
# text: kiedy mogę się spodziewać dostawy?
# intent: request/time
# slots:
1 kiedy request/time NoLabel
2 mogę request/time NoLabel
3 się request/time NoLabel
4 spodziewać request/time NoLabel
5 dostawy? request/time NoLabel
# text: kiedy dojedzie kurier?
# intent: request/time
# slots:
1 kiedy request/time NoLabel
2 dojedzie request/time NoLabel
3 kurier? request/time NoLabel
# text: to wszystko
# intent: inform/order-complete
# slots:
1 to inform/order-complete NoLabel
2 wszystko inform/order-complete NoLabel
# text: adres dostawy to Koszalińska 10/15
# intent: inform/address
# slots:
1 adres inform/address NoLabel
2 dostawy inform/address NoLabel
3 to inform/address NoLabel
4 Koszalińska inform/address B-address
5 10/15 inform/address I-address
# text: proszę dzwonić na numer 320 561 123
# intent: inform/phone
# slots:
1 proszę inform/phone NoLabel
2 dzwonić inform/phone NoLabel
3 na inform/phone NoLabel
4 numer inform/phone NoLabel B-phone
5 320 inform/phone NoLabel I-phone
6 561 inform/phone NoLabel I-phone
7 123 inform/phone NoLabel I-phone
# text: adres Kołątaja 15
# intent: inform/address
# slots:
1 adres inform/address NoLabel
2 Kołątaja inform/address B-address
3 15 inform/address I-address
# text: Poznań, ul. Piastów 90/13
# intent: inform/address
# slots:
1 Poznań, inform/address B-address
2 ul. inform/address I-address
3 Piastów inform/address I-address
4 90/13 inform/address I-address
# text: ul. Piotra Skargi 13
# intent: inform/address
# slots:
1 ul. inform/address B-address
2 Piotra inform/address I-address
3 Skargi inform/address I-address
4 13 inform/address I-address
# text: aleje jerozolimskie 10
# intent: inform
# slots:
1 aleje inform/address B-address
2 jerozolimskie inform/address I-address
3 10 inform/address I-address
# text: nie
# intent: negate
# slots:
1 nie negate NoLabel
# text: zaprzeczam
# intent: negate
# slots:
1 zaprzeczam negate NoLabel
# text: nie dziękuję
# intent: negate
# slots:
1 nie negate NoLabel
2 dziękuję negate NoLabel
# text: co jest w ofercie
# intent: request/menu
# slots:
1 co request/menu NoLabel
2 jest request/menu NoLabel
3 w request/menu NoLabel
4 ofercie request/menu NoLabel
# text: chciałbym trzy pizze, hawajskie duże
# intent: inform/order
# slots:
1 chciałbym inform/order NoLabel
2 trzy inform/order B-quantity
3 pizze, inform/order B-food
4 hawajskie inform/order B-pizza
5 duże inform/order B-size
# text: chciałbym barcelona xl
# intent: inform/order
# slots:
1 chciałbym inform/order NoLabel
2 barcelona inform/order B-pizza
3 xl inform/order B-size
# text: kruszyn krajeński, Polna 34
# intent: inform/address
# slots:
1 kruszyn inform/address B-address
2 krajeński, inform/address B-address
3 Polna inform/address B-address
4 34 inform/address B-address
# text: odbiorę na miejscu
# intent: inform/delivery
# slots:
1 odbiorę inform/delivery NoLabel
2 na inform/delivery NoLabel
3 miejscu inform/delivery B-delivery
# text: poproszę z dowozem
# intent: inform/delivery
# slots:
1 poproszę inform/delivery NoLabel
2 z inform/delivery NoLabel
3 dowozem inform/delivery B-delivery
# text: ile całość będzie kosztować
# intent: request/price
# slots:
1 ile request/price NoLabel
2 całość request/price NoLabel
3 będzie request/price NoLabel
4 kosztować request/price NoLabel
# text: jaki koszt
# intent: request/price
# slots:
1 jaki request/price NoLabel
2 koszt request/price NoLabel
# text: ile zapłacę
# intent: request/price
# slots:
1 ile request/price NoLabel
2 zapłacę request/price NoLabel
# text: prosiłbym o dowóz na 17:30
# intent: inform/time
# slots:
1 prosiłbym inform/time NoLabel
2 o inform/time NoLabel
3 dowóz inform/time NoLabel
4 na inform/time NoLabel
5 17:30 inform/time B-time
# text: czy można dowieźć na 20?
# intent: inform/time
# slots:
1 czy inform/time NoLabel
2 można inform/time NoLabel
3 dowieźć inform/time NoLabel
4 na inform/time NoLabel
5 20? inform/time B-time
# text: czy mozżna bez cebuli
# intent: inform/order
# slots:
1 czy inform/order NoLabel
2 mozżna inform/order NoLabel
3 bez inform/order B-ingredient/neg
4 cebuli inform/order I-ingredient/neg
# text: bez pieczarek
# intent: inform/order
# slots:
1 bez inform/order B-ingredient/neg
2 pieczarek inform/order I-ingredient/neg
# text: jaka cena?
# intent: request/price
# slots:
1 jaka request/price NoLabel
2 cena? request/price NoLabel
# text: cena
# intent: request/price
# slots:
1 cena request/price NoLabel
# text: jaki koszt
# intent: request/price
# slots:
1 jaki request/price NoLabel
2 koszt request/price NoLabel
# text: cena dowozu
# intent: request/delivery-price
# slots:
1 cena request/delivery-price NoLabel
2 dowozu request/delivery-price NoLabel
# text: sos czosnkowy
# intent: inform/order
# slots:
1 sos inform/order B-sauce
2 czosnkowy inform/order I-sauce
# text: poproszę o realizację zamówienia
# intent: inform/order-complete
# slots:
1 poproszę inform/order-complete NoLabel
2 o inform/order-complete NoLabel
3 realizację inform/order-complete NoLabel
4 zamówienia inform/order-complete NoLabel
# text: zamawiam
# intent: inform/order-complete
# slots:
1 zamawiam inform/order-complete NoLabel
# text: i to wszystko
# intent: inform/order-complete
# slots:
1 i inform/order-complete NoLabel
2 to inform/order-complete NoLabel
3 wszystko inform/order-complete NoLabel
# text: jaki rozmiar
# intent: request/size
# slots:
1 jaki request/size NoLabel
2 rozmiar request/size NoLabel
# text: złożyć zamówienie
# intent: request/menu
# slots:
1 złożyć request/menu NoLabel
2 zamówienie request/menu NoLabel
# text: poproszę 4 pizze, tuna, hawajska, capri, barcelona, wszystkie w rozmiarze xl
# intent: inform/order
# slots:
1 poproszę inform/order NoLabel
2 4 inform/order B-quantity
3 pizze, inform/order B-food
4 tuna, inform/order B-pizza
5 hawajska, inform/order B-pizza
6 capri, inform/order B-pizza
7 barcelona, inform/order B-pizza
8 wszystkie inform/order NoLabel
9 w inform/order NoLabel
10 rozmiarze inform/order NoLabel
11 xl inform/order B-size
# text: mój numer to 123 324 534
# intent: inform/phone
# slots:
1 mój inform/phone NoLabel
2 numer inform/phone NoLabel
3 to inform/phone NoLabel
4 123 inform/phone B-phone
5 324 inform/phone I-phone
6 534 inform/phone I-phone
# text: 653 321 787
# intent: inform/phone
# slots:
1 653 inform/phone B-phone
2 321 inform/phone I-phone
3 787 inform/phone I-phone
# text: wezmę pizzę z szynką, tuńczykiem i cebulą, w rozmiarze L
# intent: inform/order
# slots:
1 wezmę inform/order NoLabel
2 pizzę inform/order B-food
3 z inform/order NoLabel
4 szynką, inform/order B-ingredient
5 tuńczykiem inform/order B-ingredient
6 i inform/order NoLabel
7 cebulą, inform/order B-ingredient
8 w inform/order NoLabel
9 rozmiarze inform/order NoLabel
10 L inform/order B-size
# text: szynka
# intent: inform/order
# slots:
1 szynka inform/order B-ingredient
# text: pieczarki
# intent: inform/order
# slots:
1 pieczarki inform/order B-ingredient
# text: cebula
# intent: inform/order
# slots:
1 cebula inform/order B-ingredient
# text: papryka
# intent: inform/order
# slots:
1 papryka inform/order B-ingredient
# text: pomidor
# intent: inform/order
# slots:
1 pomidor inform/order B-ingredient
# text: ser
# intent: inform/order
# slots:
1 ser inform/order B-ingredient
# text: ananas kurczak tunczyk cebula
# intent: inform/order
# slots:
1 ananas inform/order B-ingredient
2 kurczak inform/order B-ingredient
3 tunczyk inform/order B-ingredient
4 cebula inform/order B-ingredient
# text: barcelona hawajska tuna capri margarita
# intent: inform/order
# slots:
1 barcelona inform/order B-pizza
2 hawajska inform/order B-pizza
3 tuna inform/order B-pizza
4 capri inform/order B-pizza
5 margarita inform/order B-pizza
# text: poproszę hawajską i tuna XL
# intent: inform/order
# slots:
1 poproszę inform/order NoLabel
2 hawajską inform/order B-pizza
3 i inform/order NoLabel
4 tuna inform/order B-pizza
5 XL inform/order B-size
# text: wezmę 3x pizze tuna, średnią, dużą i bardzo dużą
# intent: inform/order
# slots:
1 wezmę inform/order NoLabel
2 3x inform/order B-quantity
3 pizze inform/order B-food
4 tuna, inform/order B-pizza
5 średnią, inform/order B-size
6 dużą inform/order B-size
7 i inform/order NoLabel
8 bardzo inform/order B-size
9 dużą inform/order I-size
# text: rozmiar m
# intent: inform/order
# slots:
1 rozmiar inform/order B-size
2 m inform/order I-size
# text: rozmar l
# intent: inform/order
# slots:
1 rozmar inform/order B-size
2 l inform/order I-size
# text: rozmiar xl
# intent: inform/order
# slots:
1 rozmiar inform/order B-size
2 xl inform/order I-size
# text: na godzine 9
# intent: inform/time
# slots:
1 na inform/time NoLabel
2 godzine inform/time B-time
3 9 inform/time I-time
# text: godz 16
# intent: inform/time
# slots:
1 godz inform/time B-time
2 16 inform/time I-time
# text: na 19 poproszę
# intent: inform/time
# slots:
1 na inform/time NoLabel
2 19 inform/time B-time
3 poproszę inform/time NoLabel
# text: godzine dziesiątą
# intent: inform/time
# slots:
1 godzine inform/time B-time
2 dziesiątą inform/time I-time
# text: na szóstą
# intent: inform/time
# slots:
1 na inform/time NoLabel
2 szóstą inform/time B-time
# text: tak zgadza się
# intent: affirm
# slots:
1 tak affirm NoLabel
2 zgadza affirm NoLabel
3 się affirm NoLabel
# text: potwierdzam
# intent: affirm
# slots:
1 potwierdzam affirm NoLabel
# text: nie zgadza się
# intent: negate
# slots:
1 nie negate NoLabel
2 zgadza negate NoLabel
3 się negate NoLabel
# text: numer to 333444555
# intent: inform/phone
# slots:
1 numer inform/phone NoLabel
2 to inform/phone NoLabel
3 333444555 inform/phone B-phone
# text: numer to 335 23 25 29
# intent: inform/phone
# slots:
1 numer inform/phone NoLabel
2 to inform/phone NoLabel
3 335 inform/phone B-phone
4 23 inform/phone I-phone
5 25 inform/phone I-phone
6 29 inform/phone I-phone
# text: dziękuję to wszystko
# intent: inform/order-complete
# slots:
1 dziękuję inform/order-complete NoLabel
2 to inform/order-complete NoLabel
3 wszystko inform/order-complete NoLabel
# text: potwierdzam zamówienie
# intent: inform/order-complete
# slots:
1 potwierdzam inform/order-complete NoLabel
2 zamówienie inform/order-complete NoLabel
# text: bez kurczaka
# intent: inform/order
# slots:
1 bez inform/order B-ingredient/neg
2 kurczaka inform/order I-ingredient/neg
# text: bez cebuli
# intent: inform/order
# slots:
1 bez inform/order B-ingredient/neg
2 cebuli inform/order I-ingredient/neg
# text: bez szynki i pieczarek
# intent: inform/order
# slots:
1 bez inform/order B-ingredient/neg
2 szynki inform/order I-ingredient/neg
3 i inform/order NoLabel
4 pieczarek inform/order B-ingredient/neg
# text: proszę pizzę z ananasem, kurczakiem i serem
# intent: inform/order
# slots:
1 proszę inform/order NoLabel
2 pizzę inform/order B-food
3 z inform/order NoLabel
4 ananasem, inform/order B-ingredient
5 kurczakiem inform/order B-ingredient
6 i inform/order NoLabel
7 serem inform/order B-ingredient
# text: ile płacę
# intent: request/price
# slots:
1 ile request/price NoLabel
2 płacę request/price NoLabel
# text: ile zapłacę
# intent: request/price
# slots:
1 ile request/price NoLabel
2 zapłacę request/price NoLabel
# text: sos tysiąca wysp
# intent: inform/order
# slots:
1 sos inform/order B-sauce
2 tysiąca inform/order I-sauce
3 wysp inform/order I-sauce
# text: sos koperkowy
# intent: inform/order
# slots:
1 sos inform/order B-sauce
2 koperkowy inform/order I-sauce
# text: tak dziękuję
# intent: affirm
# slots:
1 tak affirm NoLabel
2 dziękuję affirm NoLabel
# text: nnie, dziękuję
# intent: negate
# slots:
1 nnie, negate NoLabel
2 dziękuję negate NoLabel
# text: nie dzięki
# intent: negate
# slots:
1 nie negate NoLabel
2 dzięki negate NoLabel
# text: będzie płatność kartą
# intent: inform/payment
# slots:
1 będzie inform/payment NoLabel
2 płatność inform/payment NoLabel
3 kartą inform/payment B-payment-method
# text: odbiorę osobiście
# intent: inform/delivery
# slots:
1 odbiorę inform/delivery NoLabel
2 osobiście inform/delivery B-delivery
# text: zapłacę karta
# intent: inform/payment
# slots:
1 zapłacę inform/payment NoLabel
2 karta inform/payment B-payment-method
# text: gotówką
# intent: inform/payment
# slots:
1 gotówką inform/payment B-payment-method
# text: poproszę z dowozem
# intent: inform/payment
# slots:
1 poproszę inform/payment NoLabel
# text: a jakie składniki ma barcelona
# intent: request/ingredients
# slots:
1 a request/ingredients NoLabel
2 jakie request/ingredients NoLabel
3 składniki request/ingredients NoLabel
4 ma request/ingredients NoLabel
5 domyślnie request/ingredients NoLabel
6 barcelona request/ingredients B-pizza
# text: co to jest pizza tuna
# intent: request/ingredients
# slots:
1 co request/ingredients NoLabel
2 to request/ingredients NoLabel
3 jest request/ingredients NoLabel
4 pizza request/ingredients B-food
5 tuna request/ingredients B-pizza
# text: jakie składniki
# intent: request/ingredients
# slots:
1 jakie request/ingredients NoLabel
2 składniki request/ingredients NoLabel
# text: co jest na pizzy
# intent: request/ingredients
# slots:
1 co request/ingredients NoLabel
2 jest request/ingredients NoLabel
3 na request/ingredients NoLabel
4 pizzy request/ingredients NoLabel
# text: jakie są napoje
# intent: request/drinks
# slots:
1 jakie request/drinks NoLabel
2 są request/drinks NoLabel
3 napoje request/drinks NoLabel
# text: co macie za napoje w ofercie
# intent: request/drinks
# slots:
1 co request/drinks NoLabel
2 macie request/drinks NoLabel
3 za request/drinks NoLabel
4 napoje request/drinks NoLabel
5 w request/drinks NoLabel
6 ofercie request/drinks NoLabel
# text: co macie do picia
# intent: request/drinks
# slots:
1 co request/drinks NoLabel
2 macie request/drinks NoLabel
3 do request/drinks NoLabel
4 picia request/drinks NoLabel
# text: czy są dostępne jakieś sosy?
# intent: request/sauce
# slots:
1 czy request/sauce NoLabel
2 są request/sauce NoLabel
3 dostępne request/sauce NoLabel
4 jakieś request/sauce NoLabel
5 sosy? request/sauce NoLabel
# text: Grzegorz Pieczarski
# intent: inform/name
# slots:
1 Grzegorz inform/name B-name
2 Pieczarski inform/name I-name
# text: Sergiusz Kaczmarek
# intent: inform/name
# slots:
1 Sergiusz inform/name B-name
2 Kaczmarek inform/name I-name
# text: jaki koszt dowozu
# intent: request/delivery-price
# slots:
1 jaki request/delivery-price NoLabel
2 koszt request/delivery-price NoLabel
3 dowozu request/delivery-price NoLabel
# text: jakie sosy w menu?
# intent: request/sauce
# slots:
1 jakie request/sauce NoLabel
2 sosy request/sauce NoLabel
3 w request/sauce NoLabel
4 menu? request/sauce NoLabel
# text: Napój pepsi i cola
# intent: inform/order
# slots:
1 Napój inform/order NoLabel
2 pepsi inform/order B-drink
3 i inform/order NoLabel
4 cola inform/order B-drink
# text: woda i sok
# intent: inform/order
# slots:
1 woda inform/order B-drink
2 i inform/order NoLabel
3 sok inform/order B-drink

206
eliza.py Normal file
View File

@ -0,0 +1,206 @@
from nltk.chat.util import Chat, reflections
pairs = (
(
r"Dzień dobry(.*)",
("Dla kogo dobry dla tego dobry.", "Dzień dobry."),
),
(
r"Cześć(.*)",
(
"Hej, jak się masz?",
"Jak się dzisiaj czujesz?",
),
),
(
r"Hej(.*)",
(
"Cześć, co tam u Ciebie?",
"Witam.",
),
),
(
r"Elo(.*)",
(
"Siema!",
"3 2 0.",
),
),
(
r"Czy sądzisz, że dobrym pomysłem jest (.*)?",
(
"Myślę, że znam za mało sczegółów, aby odpowiedzieć jednoznacznie.",
"Nie znam się na tych tematach.",
),
),
(
r"Jakie masz zdanie o (.*)?",
(
"Myślę, że nie mam zdania na ten temat.",
),
),
(
r"Jak się dzisiaj czujesz?",
(
"U mnie wszystko dobrze, a u Ciebie co słychać?",
"Jakoś leci, a Ty?",
),
),
(
r"Co u Ciebie słychać?",
(
"U mnie wszystko dobrze, a u Ciebie co słychać?",
"Nic ciekaego a u Ciebie?",
),
),
(
r"Myślisz, że lepszym wyborem jest (.*)?",
(
"To zależy od tego, czego napradę chcesz.",
"Zastanów się na co masz ochotę.",
),
),
(
r"Jak (.*)",
(
"To zależy od Ciebie.",
"To nie takie proste, co o tym myślisz?",
),
),
(
r"Jakie są rozmiary (.*)\?",
(
"Oferujemy duże, małe i średnie?",
"Wszystko zależy od wariantu %1?",
"A jest Pan bardzo głodny?",
),
),
(
r"Czy oferujecie jakieś dodatki\?",
(
"Oczywiście, na co ma Pan ochotę?",
"Oferujemy darmowe dodatki, oraz dodatki dodatkowo płatne.",
"Do naszych autorskich pizz nie ma możliwości dodania ekstra produktów",
),
),
(
r"Proszę o dodatkowy (.*)\?",
(
"W tym wariancie %1 są płatne podwójnie",
"Czy jest Pan pewien, że %1 będzie pasować do ananasa?",
"Oczywiście, mamy świeżutkie %1!",
),
),
(
r"Ile kosztuje (.*)\?",
(
"%1 są dziś w promocji",
"A jaki rozmiar %1 Pana interesuje?",
"Niestety, w chwili obecnej %1 nie jest dostępne.",
),
),
(
r"Ile czasu (.*)\?",
(
"Błyskawicznie!",
"A czy bardzo się Pan spieszy?",
"Niestety, w chwili obecnej %1 nie jest dostępne.",
),
),
(
r"Dlaczego (.*)",
(
"Zastanów się nad tym.",
"Ty mi powiedz dlaczego %1",
"Czemu mnie o to pytasz?",
),
),
(
r"Co (.*)",
(
"Skąd to pytanie?",
"Co o tym myślisz?",
"Odpowiedz sobie sam.",
),
),
(
r"Czemu (.*)",
("Tak to już jest.", "Takie życie.", "Bywa."),
),
(
r"Czy (.*)",
(
"Tak",
"Nie",
"Nie wiem czy %1",
),
),
(
r"(.*)\?",
(
"Czemu o to pytasz?",
"Może odpowiedź jest bliżej niż myślisz.",
"Wytłumacz mi to?",
),
),
(
r"(.*)\!",
(
"Czemu krzyczysz?",
"Zachowuj się!",
"Czemu się złościsz?",
),
),
(
r"Potrzebuję (.*)",
(
"Dlaczego potrzebujesz %1?",
"Jesteś pewien, że potrzebujesz %1?",
),
),
(
r"(.*) prac(.)(.*)",
(
"Lubisz swoją pracę?",
"Co najbardziej lubisz w swojej pracy?",
),
),
(r"tak", ("Dlaczego tak?",)),
(r"nie", ("Dlaczego nie?")),
(
r"koniec",
("Do widzenia",),
),
(
r"(.*)",
(
"Czemu to powiedziałeś?",
"Zmieńmy temat, powiedz mi o swojej pracy.",
"Możesz rozwinąć?",
"Rozumiem.",
"Ciekawe.",
"%1.",
),
)
)
eliza_chatbot = Chat(pairs, reflections)
def eliza_chat():
print("Terapeuta\n---------")
print("Rozmawiaj po Polsku.")
print("Używaj zarówno wielkich, jak i małych lister; używaj interpunkcji.")
print('Aby zakończyć, napisz "koniec".')
print("=" * 72)
print("Witaj, jak się czujesz?")
eliza_chatbot.converse(quit="koniec")
def demo():
eliza_chat()
if __name__ == "__main__":
eliza_chat()

View File

@ -1,62 +0,0 @@
import re
import os
import pandas as pd
import numpy as np
from flair.models import SequenceTagger
from conllu import parse_incr
from flair.data import Corpus
from src.utils.nlu_utils import conllu2flair, nolabel2o, predict_multiple
# Frame model evaluation
frame_model = SequenceTagger.load('frame-model-prod/best-model.pt')
with open('data/test_dialog_46.conllu', encoding='utf-8') as trainfile:
testset = list(parse_incr(trainfile, fields=['id', 'form', 'frame', 'slot'], field_parsers={}))
corpus = Corpus(test=conllu2flair(testset, "frame"))
result = frame_model.evaluate(corpus.test, mini_batch_size=1, gold_label_type="frame")
print(result.detailed_results)
# Slot model evaluation
slot_model = SequenceTagger.load('slot-model-prod/best-model.pt')
with open('data/test_dialog_46.conllu', encoding='utf-8') as trainfile:
testset = list(parse_incr(trainfile, fields=['id', 'form', 'frame', 'slot'], field_parsers={'slot': nolabel2o}))
corpus = Corpus(test=conllu2flair(testset, "slot"))
result = slot_model.evaluate(corpus.test, mini_batch_size=8, gold_label_type="slot")
print(result.detailed_results)
# Custom evaluation
def __parse_acts(acts):
acts_split = acts.split('&')
remove_slot_regex = "[\(\[].*?[\)\]]"
return set(re.sub(remove_slot_regex, "", act) for act in acts_split)
def __parse_predictions(predictions):
return set(prediction.split('/')[0] for prediction in predictions)
total_acts = 0
act_correct_predictions = 0
slot_correct_predictions = 0
for file_name in os.listdir('data'):
if file_name.split('.')[-1] != 'tsv':
continue
df = pd.read_csv(f'data/{file_name}', sep='\t', names=['kto', 'treść', 'akt'])
df = df[df.kto == 'user']
all_data = np.array(df)
for row in all_data:
sentence = row[1]
acts = __parse_acts(row[2])
predictions_raw = predict_multiple(frame_model, sentence.split(), 'frame')
predictions = __parse_predictions(predictions_raw)
for act in acts:
total_acts += 1
if act in predictions:
act_correct_predictions += 1
print(f"Accuracy - predicting acts: {(act_correct_predictions / total_acts)*100} ({act_correct_predictions}/{total_acts})")

17
menu.json Normal file
View File

@ -0,0 +1,17 @@
{
"typ_ciasta": ["grube"],
"rozmiar": {
},
"nazwa_pizzy": {
"margarita": []
},
"skladniki": {
"cebula" {
"id": 1
},
"ser": {
"id": 2
}
}
}

View File

@ -1,41 +0,0 @@
from conllu import parse_incr
from flair.data import Corpus
from flair.embeddings import StackedEmbeddings
from flair.embeddings import WordEmbeddings
from flair.embeddings import CharacterEmbeddings
from flair.embeddings import FlairEmbeddings
from flair.models import SequenceTagger
from flair.trainers import ModelTrainer
from src.utils.nlu_utils import conllu2flair, nolabel2o
import torch
if torch.cuda.is_available():
torch.backends.cudnn.enabled = False
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
def train_model(label_type, field_parsers = {}):
with open('data/train_dialog.conllu', encoding='utf-8') as f:
trainset = list(parse_incr(f, fields=['id', 'form', 'frame', 'slot'], field_parsers=field_parsers))
with open('data/test_dialog_46.conllu', encoding='utf-8') as f:
testset = list(parse_incr(f, fields=['id', 'form', 'frame', 'slot'], field_parsers=field_parsers))
corpus = Corpus(train=conllu2flair(trainset, label_type), test=conllu2flair(testset, label_type))
label_dictionary = corpus.make_label_dictionary(label_type=label_type)
embedding_types = [
WordEmbeddings('pl'),
FlairEmbeddings('pl-forward'),
FlairEmbeddings('pl-backward'),
CharacterEmbeddings(),
]
embeddings = StackedEmbeddings(embeddings=embedding_types)
tagger = SequenceTagger(hidden_size=256, embeddings=embeddings, tag_dictionary=label_dictionary, tag_type=label_type, use_crf=True, tag_format="BIO")
frame_trainer = ModelTrainer(tagger, corpus)
frame_trainer.train(f'{label_type}-model', learning_rate=0.1, mini_batch_size=16, max_epochs=75, train_with_dev=False)
if __name__ == '__main__':
train_model("frame")
train_model('slot', field_parsers={'slot': nolabel2o})

View File

@ -1,87 +1,38 @@
Przyjmowania zamówień w restauracji
==============
Zadanie 1: Składanie zamówienia, zdecydowany klient (wybiera opcje z menu)
Zadanie 1: Składanie zamówienia, zdecydowany klient
--------------------------------
*system:* Dzień dobry, witamy w systemie zamówień na pizzę. Polecam pizzę diavola z dodatkową rukolą.
*system:* ...
*user:* Chciałbym zamówić pizzę wegetariańską w średnim rozmiarze.
*user:* ...
*system:* Oczywiście, czy chciałby Pan jakieś dodatki?
*system:* ...
*user:* Poproszę dodatkowy ser oraz rukolę.
*system:* Oczywiście. Czy chciałby Pan coś do picia? Polecam dużą colę lub sprite.
*user:* Poproszę dużą colę bez cukru
*system:* Oczywiście, płaci Pan kartą, blikiem, gotówką czy przelewem? Zamówienie na miejscu czy na wynos?
*user:* Na wynos. Płatność kartą.
*system:* Oczywiście, zamówienie zostało przyjęte. Za chwilę zostanie Pan przekierowany do bramki płatniczej. Dziękujemy za skorzystanie z naszego systemu zamawiania pizzy i życzymy smacznego. Polecamy się na przyszłość.
Zadanie 2: Składanie zamówienia, niezdecydowany klient (przekazuje jedynie swoje preferencje)
Zadanie 2: Składanie zamówienia, niezdecydowany klient
--------------------------
*system:* Dzień dobry, witamy w restauracji "pizzeria", jak mogę pomóc?
*system:* ...
*user:* Dzień dobry, chciałbym zamówić pizzę na wynos z osobistym odbiorem.
*user:* ...
*system:* Jaką pizzę sobie Pan/Pani życzy?
*system:* ...
*user:* Jakąś nie za dużą, ale żeby dwie osoby się najadły. Ważne, żeby była bezmięsna.
*system:* Rozumiem, czy w takim razie odpowiada Panu/Pani pizza wegetariańska w rozmiarze średnim, na cienkim cieście?
*user:* Tak, poproszę taką pizzę.
*system:* Czy chciałby Pan/Pani zamówić także napój?
*user:* Tak, poproszę dwa napoje owocowe, niegazowane.
*system:* Czy mogą być dwa niegazowane soki z pomarańczy?
*user:* tak
*system:* Dobrze, zamówienie to: średnia wegetariańska pizza na cienkim cieście oraz dwa napoje z pomarańczy. W jakiej formie preferuje Pan/Pani płatność?
*user:* Zapłacę gotówką, przy odbiorze zamówienia.
*system:* W takim razie zapraszam po odbiór zamówienia za około 45 minut. Do zobaczenia!
Zadanie 3: Składanie zamówienia, klient ze specjalnymi wymaganiami (modyfikuje składniki)
Zadanie 3: Składanie zamówienia, klient ze specjalnymi wymaganiami
--------------------------
*system:* Dzień dobry, witamy w restauracji "pizzeria", jak mogę pomóc?
*system:* ...
*user:* poproszę średnią hawajską
*user:* ...
*system:* Czy chciałby Pan/Pani zamówić także napój?
*system:* ...
*user:* nie ale ale ta pizza to bez ananasa
*system:* Rozumiem. Czy życzy Pan/Pani sobie coś jeszcze?
*user:* nie
*system:* Dobrze, zamówienie to: średnia pizza hawajska, bez ananasa. W jakiej formie preferuje Pan/Pani płatność?
*user:* gotówką
*system:* W takim razie zapraszam po odbiór zamówienia za około 45 minut. Do zobaczenia!
Zadanie 4: Składanie zamówienia, klient, który rozmawia na niewłaściwy temat
Zadanie 4: Składanie zamówienia, klient który rozmawia na niewłaściwy temat
--------------------------
*system:* Dzień dobry, witamy w restauracji "pizzeria", jak mogę pomóc?.
*system:* ...
*user:* Dzień dobry, chciałbym porozmawiać z managerem.
*user:* ...
*system:* Niestety, nie rozumiem. Czy chcesz zamówić pizzę?
*user:* Połącz mnie z konsultantem!
*system:* Niestety, nie potrafię Ci pomóc. Do widzenia.
*system:* ...

View File

@ -1,7 +1 @@
flair==0.13.1
conllu==4.5.3
pandas==1.5.3
numpy==1.26.4
torch==1.13
convlab==3.0.2a0
scipy==1.12
nltk==3.8.1

View File

View File

@ -1,56 +0,0 @@
from service.dialog_state_monitor import DialogStateMonitor
from service.dialog_policy import DialogPolicy
from service.natural_languag_understanding import NaturalLanguageUnderstanding
from service.natural_language_generation import NaturalLanguageGeneration, parse_frame
from service.templates import templates
# initialize classes
nlu = NaturalLanguageUnderstanding(use_mocks=False) # NLU
monitor = DialogStateMonitor() # DSM
dialog_policy = DialogPolicy() # DP
language_generation = NaturalLanguageGeneration(templates) # NLG
def frame_to_dict(frame):
return {
"act": frame.act,
"slots": [{"name": slot.name, "value": slot.value} for slot in frame.slots],
"act_understood": frame.act_understood,
}
# Main loop
dial_num = 0
print("CTRL+C aby zakończyć program.")
while True:
monitor.reset()
print(f"\n==== Rozpoczynasz rozmowę nr {dial_num} ====\n")
user_input = input("Witamy w naszej pizza-przez-internet. W czym mogę pomóc?\n")
while True:
# NLU
frame = nlu.predict(user_input)
# print("Frame: ", frame)
# DSM
monitor.update(frame)
# DP
system_action = dialog_policy.predict(monitor)
system_action_dict = frame_to_dict(system_action) # Ensure system_action is a dictionary
# print("System action: ", system_action_dict)
# NLG
response = language_generation.generate(frame, system_action_dict)
print(response)
if system_action.act == "bye_and_thanks" or system_action.act == "bye":
monitor.print_order()
break
if frame.act == "bye":
print(monitor.print_order())
break
user_input = input(">\n")
dial_num += 1

View File

View File

@ -1,15 +0,0 @@
from .slot import Slot
class Frame:
def __init__(self, source: str, act: str, slots: list[Slot] = [], act_understood = None):
self.source = source
self.slots = slots
self.act = act
self.act_understood = act_understood
def __str__(self):
msg = f"Act: {self.act}, Slots: ["
for slot in self.slots:
msg += f"({slot}), "
msg += "]"
return msg

View File

@ -1,7 +0,0 @@
class Slot:
def __init__(self, name, value=None):
self.name = name
self.value = value
def __str__(self) -> str:
return f"Name: {self.name}, Value: {self.value}"

View File

@ -1,30 +0,0 @@
from flair.models import SequenceTagger
from utils.nlu_utils import predict_single, predict_multiple, predict_and_annotate
# Exploratory tests
frame_model = SequenceTagger.load('frame-model-prod/best-model.pt')
tests = [
'chciałbym zamówić pizzę',
'na godzinę 12',
'prosiłbym o pizzę z pieczarkami',
'to wszystko, jaka cena?',
'ile kosztuje pizza',
'do widzenia',
'tak',
'nie dziękuję',
'dodatkowy ser',
'pizzę barcelona bez cebuli',
]
print("=== Exploratory tests - frame model ===")
for test in tests:
print(f"Sentence: {test}")
print(f"Single prediction: {predict_single(frame_model, test.split(), 'frame')}")
print(f"Multiple predictions: {predict_multiple(frame_model, test.split(), 'frame')}")
print(f"Annotated sentence: {predict_and_annotate(frame_model, test.split(), 'frame')}")
print("=== Exploratory tests - slot model ===")
slot_model = SequenceTagger.load('slot-model-prod/best-model.pt')
for test in tests:
print(f"Sentence: {test}")
print(f"Prediction: {predict_and_annotate(slot_model, test.split(), 'slot')}")

View File

@ -1,66 +0,0 @@
from collections import defaultdict
from model.frame import Frame
from model.slot import Slot
class DialogPolicy:
def _predict(self, dsm):
last_frame = dsm.state['history'][-1]
act_processed = dsm.state['was_system_act_processed']
if(dsm.state['was_previous_order_invalid'] == False):
if last_frame.act == "inform/order-complete":
act = last_frame.act
elif ("inform" in last_frame.act):
act = last_frame.act.split('/')[0]
else:
act = last_frame.act
match(act):
case "bye":
return Frame(source="system", act = "bye")
case "inform/order-complete":
return Frame(source="system", act = "bye_and_thanks")
case "inform" | "affirm" | "negate":
current_active_stage = dsm.get_current_active_stage()
if current_active_stage == None:
return Frame(source="system", act = "bye_and_thanks")
match(current_active_stage['name']):
case "collect_food":
return Frame(source="system", act = "request/food", slots = [Slot("menu", dsm.state['constants']['menu'])], act_understood=act_processed)
case "collect_drinks":
return Frame(source="system", act = "request/drinks", slots = [Slot("drink", dsm.state['constants']['drink'])], act_understood=act_processed)
case "more_food":
return Frame(source="system", act = "request/food-more", slots = [Slot("menu", dsm.state['constants']['menu'])], act_understood=act_processed)
case "more_drinks":
return Frame(source="system", act = "request/drinks-more", slots = [Slot("drink", dsm.state['constants']['drink'])], act_understood=act_processed)
case "collect_address":
return Frame(source="system", act = "request/address", act_understood=act_processed)
case "collect_payment_method":
return Frame(source="system", act = "request/payment-method", act_understood=act_processed)
case "collect_phone":
return Frame(source="system", act = "request/phone", act_understood=act_processed)
case "request/menu":
return Frame(source="system", act = "inform", slots = [Slot("menu", dsm.state['constants']['menu'])])
case "request/price":
return Frame(source="system", act = "inform", slots = [Slot("price", dsm.state['total_cost'])])
case "request/ingredients":
return Frame(source="system", act = "inform", slots = [Slot("ingredients", dsm.state['constants']['ingredients'])])
case "request/sauce":
return Frame(source="system", act = "inform", slots = [Slot("sauce", dsm.state['constants']['sauce'])])
case "request/time":
return Frame(source="system", act = "inform", slots = [Slot("time", dsm.state['belief_state']['time'])])
case "request/size":
return Frame(source="system", act = "inform", slots = [Slot("size", dsm.state['constants']['size'])])
case "request/delivery-price":
return Frame(source="system", act = "inform", slots = [Slot("delivery-price", "10")])
case "request/drinks":
return Frame(source="system", act = "inform", slots = [Slot("drink", dsm.state['constants']['drink'])])
case "welcomemsg":
return Frame(source="system", act = "inform", slots = [Slot("menu", dsm.state['constants']['menu'])])
case "repeat":
return Frame(source="system", act = "repeat")
return Frame(source="system", act = "repeat")
def predict(self, dsm):
frame = self._predict(dsm)
dsm.state["system_history"].append(frame)
return frame

View File

@ -1,209 +0,0 @@
from model.frame import Frame
import copy
import json
def normalize(value):
value = value.lower()
if value[-1] in [",", "!", "?" ,"." ,")" ,"(",")"]:
value = value[:-1]
if value[-2:] == "ie":
value = value[:-2] + "a"
if value[-1] in ["ę", "ą", "y"]:
value = value[:-1] + "a"
if value in ["pizz", "pizzy", "pizze", "picce"]:
value = "pizza"
return ' '.join(value.split())
class DialogStateMonitor:
def __init__(self, initial_state_file: str = 'attributes.json'):
with open(initial_state_file) as file:
constants = json.load(file)
self.__initial_state = dict(
belief_state={
'order': [],
'address': {},
'order-complete': False,
'phone': {},
'delivery': {},
'payment': {},
'time': {},
'name': {},
},
total_cost=0,
stages=[
{'completed': False, 'name': 'collect_food'},
{'completed': False, 'name': 'more_food'},
{'completed': False, 'name': 'collect_drinks'},
{'completed': False, 'name': 'more_drinks'},
{'completed': False, 'name': 'collect_address'},
{'completed': False, 'name': 'collect_phone'},
],
was_previous_order_invalid=False,
was_system_act_processed=False,
constants=constants,
history=[],
system_history=[],
)
self.state = copy.deepcopy(self.__initial_state)
def get_current_active_stage(self) -> str | None:
for stage in self.state['stages']:
if stage['completed'] is False:
# print("Current stage: ", stage['name'])
return stage
self.state['belief_state']['order-complete'] = True
def mark_current_stage_completed(self) -> None:
for stage in self.state['stages']:
if stage['completed'] is False:
# print("Stage completed: ", stage['name'])
stage['completed'] = True
return
def complete_stage_if_valid(self, stage_name):
for stage in self.state['stages']:
if stage['name'] != stage_name:
continue
if stage['name'] == "collect_food":
for order in self.state['belief_state']['order']:
if order.get("pizza"):
stage['completed'] = True
return
elif stage["name"] == "collect_drinks":
for order in self.state['belief_state']['order']:
if order.get("drink"):
stage['completed'] = True
return
elif stage["name"] == "collect_address":
if not len(self.state['belief_state']['address']):
return
stage['completed'] = True
return
elif stage["name"] == "collect_phone":
if self.state['belief_state']["phone"].get("phone"):
stage['completed'] = True
return
pass
def item_exists(self, type: str, name: str) -> bool:
return normalize(name) in self.state['constants'][type]
def drink_exists(self, name: str) -> bool:
return normalize(name) in self.state['constants']['pizza']
def get_total_cost(self) -> int:
return self.state['total_cost']
def slot_augmentation(self, slot, value):
drink_normalize = ["woda", "pepsi", "cola", "coca cola", "cole", "coca"]
if slot.name in ["food", "pizza", "ingredient"]:
if value in drink_normalize:
slot.name = 'drink'
return slot
def slot_valid(self, slot, act):
if act == "inform/order":
if slot.name in ["address", "payment-method", 'delivery', 'phone', 'time', 'name']:
return False
return True
def value_valid(self, slot_name, value):
if slot_name == "food":
if value != "pizza":
return False
return True
def update(self, frame: Frame) -> None:
self.state['was_system_act_processed'] = False
belief_state_copy = copy.deepcopy(self.state["belief_state"])
self.state['history'].append(frame)
if frame.source != 'user':
return
if frame.act == 'inform/order':
new_order = dict()
for slot in frame.slots:
value = normalize(slot.value)
slot = self.slot_augmentation(slot, value)
if not self.slot_valid(slot, frame.act):
continue
if not self.value_valid(slot.name, value):
continue
stage_name = self.get_current_active_stage()['name']
is_collect_food = (slot.name == 'pizza' and stage_name == 'collect_food')
is_more_food = (slot.name == 'pizza' and stage_name == 'more_food')
is_collect_drinks = (slot.name == 'drink' and stage_name == 'collect_drinks')
is_more_drinks = (slot.name == 'drink' and stage_name == 'more_drinks')
if is_collect_food or is_collect_drinks or is_more_food or stage_name == is_more_drinks:
if self.item_exists(slot.name, value) is False:
self.state['was_previous_order_invalid'] = True
return
self.state['was_previous_order_invalid'] = False
self.state['total_cost'] += self.state['constants'][slot.name][value]['price']
if slot.name == "pizza":
if new_order.get("pizza"):
new_order[slot.name].append({"name": value, "ingredient": [], "ingredient/neg": []})
else:
new_order[slot.name] = [{"name": value, "ingredient": [], "ingredient/neg": []}]
elif slot.name == "drink":
if new_order.get("drink"):
new_order[slot.name].append({"drink": value})
else:
new_order[slot.name] = [{"drink": value}]
elif slot.name in ["ingredient", "ingredient/neg"]:
pizzas_list = new_order.get("pizza")
if pizzas_list:
pizzas_list[-1][slot.name].append(value)
if len(new_order) > 0:
self.state['belief_state']['order'].append(new_order)
self.complete_stage_if_valid('collect_food')
self.complete_stage_if_valid('collect_drinks')
elif frame.act == 'inform/address':
for slot in frame.slots:
self.state['belief_state']['address'][slot.name] = normalize(slot.value)
self.complete_stage_if_valid('collect_address')
elif frame.act == 'inform/phone':
for slot in frame.slots:
self.state['belief_state']['phone'][slot.name] = normalize(slot.value)
self.complete_stage_if_valid('collect_phone')
elif frame.act == 'inform/order-complete':
self.state['belief_state']['order-complete'] = True
elif frame.act == 'inform/delivery':
for slot in frame.slots:
self.state['belief_state']['delivery'][slot.name] = normalize(slot.value)
self.complete_stage_if_valid('collect_address')
elif frame.act == 'inform/payment':
for slot in frame.slots:
self.state['belief_state']['payment'][slot.name] = normalize(slot.value)
elif frame.act == 'inform/time':
for slot in frame.slots:
self.state['belief_state']['time'][slot.name] = normalize(slot.value)
elif frame.act == 'inform/name':
for slot in frame.slots:
self.state['belief_state']['name'][slot.name] = normalize(slot.value)
elif frame.act == 'negate':
if "request" in self.state["system_history"][-1].act:
self.mark_current_stage_completed()
self.state['was_system_act_processed'] = True
if self.state["belief_state"] != belief_state_copy and frame.act not in ["repeat", 'affirm', 'negate']:
self.state['was_system_act_processed'] = True
def reset(self) -> None:
self.state = copy.deepcopy(self.__initial_state)
def print_order(self) -> dict:
print("\n=== Oto podsumowanie Twojego zamówienia ===")
for o in self.state['belief_state']['order']:
print(o)
print("Adres dostawy: ")
print(self.state['belief_state']['address'])
print("Numer telefonu: ")
print(self.state['belief_state']['phone'])
print(f"Czy zostało pomyślnie zrealizowane: {self.state['belief_state']['order-complete']}")

View File

@ -1,108 +0,0 @@
from utils.nlu_utils import predict_single, predict_and_annotate
from model.frame import Frame, Slot
import random
"""
ACTS:
inform/order
request/menu
inform/address
request/price
request/ingredients
request/sauce
inform/phone
inform/order-complete
request/time
request/size
welcomemsg
affirm
inform/delivery
inform/payment
request/delivery-price
bye
inform/time
request/drinks
inform/name
negate
SLOTS:
food
pizza
size
address
quantity
ingredient
payment-method
delivery
drink
ingredient/neg
name
phone
sauce
"""
class NaturalLanguageUnderstanding():
def __init__(self, use_mocks=False):
self.use_mocks = use_mocks
if self.use_mocks:
return
from flair.models import SequenceTagger
print("\n========================================================")
print("Models are loading, it may take a moment, please wait...")
print("========================================================\n")
self.frame_model = SequenceTagger.load('frame-model-prod/best-model.pt')
self.slot_model = SequenceTagger.load('slot-model-prod/best-model.pt')
print("\n========================================================")
print("Models loaded. NLU system is ready.")
print("========================================================\n")
def __predict_intention(self, text: str):
return predict_single(self.frame_model, text.split(), 'frame')
def __predict_slot(self, text: str):
anootations = predict_and_annotate(self.slot_model, text.split(), 'slot')
current_slot = None
current_slot_value = ""
slots = []
for annotation in anootations:
form = annotation["form"]
slot = annotation["slot"]
if slot[0:2] == "B-":
if current_slot != None:
slots.append(Slot(name=current_slot, value=current_slot_value))
current_slot = slot[2:]
current_slot_value = form
elif slot[0:2] == "I-":
current_slot_value = current_slot_value + " " + form
elif slot == "O":
if current_slot != None:
slots.append(Slot(name=current_slot, value=current_slot_value))
current_slot = None
current_slot_value = ""
if current_slot != None:
slots.append(Slot(name=current_slot, value=current_slot_value))
return slots
def predict(self, text: str):
if not self.use_mocks:
try:
act = self.__predict_intention(text)
slots = self.__predict_slot(text)
frame = Frame(source = 'user', act = act, slots = slots)
return frame
except:
return Frame(source="user", act = "repeat", slots=[])
else:
frames = [
Frame(source="user", act = "inform/order", slots=[Slot(name="pizza", value="barcelona")]),
Frame(source="user", act = "welcomemsg", slots=[]),
Frame(source="user", act = "request/menu", slots=[]),
]
return random.choice(frames)

View File

@ -1,43 +0,0 @@
import re
from service.template_selector import select_template
import random
class NaturalLanguageGeneration:
def __init__(self, templates):
self.templates = templates
def generate(self, frame, system_action):
# Parsowanie frame
act, slots = parse_frame(frame)
# Wybierz szablon na podstawie system_action
template = select_template(system_action['act'], system_action['slots'])
if template is None:
print(f"Brak szablonu dla act: {system_action['act']} z slotami: {system_action['slots']}")
template = random.choice(self.templates["default/template"])
# Zamień sloty na wartości
slot_dict = {}
for slot in system_action['slots']:
if isinstance(slot['value'], list):
slot_dict[slot['name']] = ', '.join(slot['value'])
elif isinstance(slot['value'], dict):
slot_dict[slot['name']] = ', '.join([f"{k}: {v}" for k, v in slot['value'].items()])
else:
slot_dict[slot['name']] = slot['value']
response = template.format(**slot_dict)
if system_action['act_understood'] == True:
response = f"Zrozumiałem. {response}"
elif system_action['act_understood'] == False:
response = f"Nie zrozumiałem. {response}"
return response
def parse_frame(frame):
if not hasattr(frame, 'act') or not hasattr(frame, 'slots'):
raise TypeError("Expected a Frame object with 'act' and 'slots' attributes.")
act = frame.act
slots = [{"name": slot.name, "value": slot.value} for slot in frame.slots]
return act, slots

View File

@ -1,216 +0,0 @@
import random
from service.templates import templates
def generate_pizza_info(slots):
pizza_name = None
query_type = None
for slot in slots:
if slot['name'] == 'pizza':
pizza_name = slot['value'].lower()
elif slot['name'] == 'ingredient':
query_type = 'ingredient'
elif slot['name'] == 'price':
query_type = 'price'
if pizza_name not in pizza_data:
return f"Nie mamy w ofercie pizzy o nazwie {pizza_name}."
if query_type == 'ingredient':
ingredients = pizza_data[pizza_name]['ingredient']
return f"Składniki pizzy {pizza_name} to: {', '.join(ingredients)}."
elif query_type == 'price':
price = pizza_data[pizza_name]['price']
return f"Cena pizzy {pizza_name} to {price} zł."
return f"Informacje o pizzy {pizza_name}: składniki to {', '.join(pizza_data[pizza_name]['ingredient'])}, cena to {pizza_data[pizza_name]['price']} zł."
def generate_ingredients_response(slots):
ingredients = [slot['value'] for slot in slots if slot['name'] == 'ingredients']
if ingredients:
ingredient_list = []
for ingredient in ingredients:
ingredient_list.extend(ingredient.keys())
response = f"Dostępne składniki to: {', '.join(ingredient_list)}."
return response
return "Nie podano składników."
def generate_drinks_response(slots, act):
more = 'drinks-more' in act
drinks = [slot['value'] for slot in slots if slot['name'] == 'drink']
if drinks:
drink_details = []
for drink in drinks:
for name, details in drink.items():
# price = details.get('price', 'unknown')
drink_details.append(f"{name}") # w cenie {price} zł")
if not more:
if len(drink_details) > 1:
response = f"Czy chcesz coś do picia? Dostępne napoje to: {', '.join(drink_details[:-1])} oraz {drink_details[-1]}."
else:
response = f"Czy chcesz coś do picia? Dostępne napoje to: {drink_details[0]}."
return response
else:
if len(drink_details) > 1:
response = f"Czy chcesz coś jeszcze picia?"
else:
response = f"Czy chcesz coś jeszcze picia?"
return response
return "Nie podano napojów."
def generate_size_response(slots):
sizes = [slot['value'] for slot in slots if slot['name'] == 'size'][0]
if len(sizes) != 0:
return F"Dostępne rozmiary to: {', '.join(sizes)}"
return "Nie podano rozmiarów."
def generate_sauce_response(slots):
sauces = [slot['value'] for slot in slots if slot['name'] == 'sauce']
if sauces:
sauce_list = []
for sauce in sauces:
if isinstance(sauce, list):
sauce_list.extend(sauce)
else:
sauce_list.append(sauce)
return f"Dostępne sosy to: {', '.join(sauce_list)}."
return "Nie podano sosów."
def select_template(act, slots):
slot_names = {slot['name'] for slot in slots}
if act == "welcomemsg":
return random.choice(templates["welcomemsg"])
if "ingredients" in slot_names:
return generate_ingredients_response(slots)
elif "drink" in slot_names:
return generate_drinks_response(slots, act)
elif "sauce" in slot_names:
return generate_sauce_response(slots)
elif "size" in slot_names:
return generate_size_response(slots)
elif "price" in slot_names:
return random.choice(templates["inform/price"])
elif "food" in slot_names:
return random.choice(templates["inform/menu"])
if act == "inform":
if "menu" in slot_names:
return random.choice(templates["inform/menu"])
elif "address" in slot_names:
return random.choice(templates["inform/address"])
elif "phone" in slot_names:
return random.choice(templates["inform/phone"])
elif "order-complete" in slot_names:
return random.choice(templates["inform/order-complete"])
elif "delivery" in slot_names:
return random.choice(templates["inform/delivery"])
elif "payment" in slot_names:
return random.choice(templates["inform/payment"])
elif "time" in slot_names:
return random.choice(templates["inform/time"])
elif "name" in slot_names:
return random.choice(templates["inform/name"])
elif "price" in slot_names and "pizza" in slot_names:
return generate_pizza_info(slots)
elif act == "inform/order":
if "quantity" in slot_names and "pizza" in slot_names and "size" in slot_names:
return templates["inform/order"][1]
elif "quantity" in slot_names and "pizza" in slot_names:
return templates["inform/order"][2]
elif "quantity" in slot_names and "food" in slot_names:
return templates["inform/order"][0]
elif "food" in slot_names and "pizza" in slot_names and "price" in slot_names:
return templates["inform/order"][5]
elif "quantity" in slot_names:
return templates["inform/order"][3]
else:
return templates["inform/order"][4]
elif act == "request/menu":
return random.choice(templates["request/menu"])
elif act == "inform/address":
return random.choice(templates["inform/address"])
elif act == "request/price":
return random.choice(templates["request/price"])
elif act == "inform/menu":
return random.choice(templates["inform/menu"])
elif act == "request/ingredients":
return random.choice(templates["request/ingredients"])
elif act == "request/sauce":
return random.choice(templates["request/sauce"])
elif act == "inform/phone":
return random.choice(templates["inform/phone"])
elif act == "inform/order-complete":
return random.choice(templates["inform/order-complete"])
elif act == "request/time":
return random.choice(templates["request/time"])
elif act == "request/size":
return random.choice(templates["request/size"])
elif act == "inform/delivery":
return random.choice(templates["inform/delivery"])
elif act == "inform/payment":
return random.choice(templates["inform/payment"])
elif act == "request/delivery-price":
return random.choice(templates["request/delivery-price"])
elif act == "inform/time":
return random.choice(templates["inform/time"])
elif act == "request/drinks":
return random.choice(templates["request/drinks"])
elif act == "request/food":
return random.choice(templates["inform/menu"])
elif act == "request/food-more":
return random.choice(templates["inform/menu-more"])
elif act == "inform/name":
return random.choice(templates["inform/name"])
elif act == "bye":
return random.choice(templates["bye"]) # TODO force end?
elif act == "bye_and_thanks":
return random.choice(templates["bye_and_thanks"])
elif act == "repeat":
return random.choice(templates["repeat"])
elif act == "request/address":
return random.choice(templates["request/address"])
elif act == "request/payment-method":
return random.choice(templates["request/payment-method"])
elif act == "request/phone":
return random.choice(templates["request/phone"])
return None
# def select_template(act, slots):
# slot_names = {slot['name'] for slot in slots}
# if act == "welcomemsg":
# return random.choice(templates["welcomemsg"])
# if act == "request/menu":
# return random.choice(templates["request/menu"])
# if act == "inform/address":
# return random.choice(templates["inform/address"])
# if act == "inform/delivery":
# return random.choice(templates["inform/delivery"])
# if act == "inform/payment":
# return random.choice(templates["inform/payment"])
# if act == "affirm":
# return random.choice(templates["affirm"])
# if act == "request/drinks":
# return random.choice(templates["request/drinks"])
# if act == "bye":
# return random.choice(templates["bye"])
# if act == "inform/order":
# if "quantity" in slot_names and "food" in slot_names and "pizza" in slot_names:
# return templates["inform/order"][1]
# elif "quantity" in slot_names and "pizza" in slot_names:
# return templates["inform/order"][4]
# elif "food" in slot_names and "pizza" in slot_names:
# return templates["inform/order"][2]
# elif "quantity" in slot_names:
# return templates["inform/order"][3]
# else:
# return templates["inform/order"][4]
# return "default/template"

View File

@ -1,169 +0,0 @@
templates = {
"inform/order": [
"Zamówiłeś {quantity} x {food}.",
"Twoje zamówienie to {quantity} x {food} {pizza}.",
"Mmmm... {food} {pizza} to rewelacyjny wybór. Czy chcesz coś do picia?",
"Dziękujemy za zamówienie {quantity} x {food}.",
"Na jaką pizzę masz ochotę?"
],
"inform/menu": [
"Oferujemy następujące pizze: {menu}.",
],
"inform/menu-more": [
"Czy chcesz jeszcze jakąś pizzę?",
],
"inform/name": [
"Twoje imię to {name}.",
"Podane imię: {name}.",
"Twoje imię: {name}.",
"Masz na imię {name}.",
"Imię: {name}."
],
"inform/price": [
"Cena wybranej pizzy to {price} zł.",
"Koszt pizzy to {price} zł.",
"Wybrana pizza kosztuje {price} zł.",
"Cena pizzy wynosi {price} zł."
],
"inform/address": [
"Twój adres to: {address}.",
"Adres, który podałeś, to: {address}.",
"Dostawa na adres: {address}.",
"Dostarczymy na adres: {address}.",
"Twój podany adres to: {address}."
],
"inform/sauce": [
"Dostępne sosy to: {sauce}.",
"Możesz wybrać spośród następujących sosów: {sauce}.",
"Oferujemy następujące sosy: {sauce}."
],
"inform/phone": [
"Twój numer telefonu to: {phone}.",
"Podany numer telefonu: {phone}.",
"Numer telefonu, który podałeś, to: {phone}.",
"Twoje dane kontaktowe: {phone}.",
"Telefon kontaktowy: {phone}."
],
"inform/order-complete": [
"Twoje zamówienie zostało zrealizowane. Dziękujemy!",
"Zamówienie zakończone. Dziękujemy za zakupy!",
"Zamówienie zrealizowane. Czekaj na dostawę!",
"Twoje zamówienie jest gotowe. Dziękujemy!",
"Realizacja zamówienia zakończona. Dziękujemy!"
],
"inform/delivery": [
"Twoje zamówienie zostanie dostarczone na {address}.",
"Dostarczymy zamówienie na adres: {address}.",
"Dostawa na adres: {address}.",
"Twoje zamówienie jedzie na {address}.",
"Adres dostawy: {address}."
],
"inform/address": [
"Twoje zamówienie zostanie dostarczone na adres: {address}.",
"Dostawa będzie na adres: {address}.",
"Adres dostawy: {address}."
],
"inform/payment": [
"Metoda płatności to: {payment-method}.",
"Płatność realizujesz przez: {payment-method}.",
"Wybrałeś metodę płatności: {payment-method}.",
"Płatność: {payment-method}.",
"Możesz zapłacić kartą, gotówką lub blikiem"
],
"affirm": [
"Świetnie! Napisz co Ci chodzi po głowie.",
"Dobrze! Co dalej?",
"OK! Co chciałbyś zamówić?",
"Super! Co dalej?",
"Dobrze! Jakie dalsze zamówienia?"
],
"request/delivery-price": [
"Koszt dostawy wynosi {delivery-price} zł.",
"Cena dostawy to {delivery-price} zł.",
"Za dostawę zapłacisz {delivery-price} zł.",
"Dostawa kosztuje {delivery-price} zł.",
"Koszt dostawy: {delivery-price} zł."
],
"request/menu": [
"W naszym menu znajdziesz: {menu}."
],
"inform/time": [
"Aktualny czas to {time}.",
"Jest teraz {time}.",
"Czas: {time}.",
"Godzina: {time}.",
"Obecny czas: {time}."
],
"welcomemsg": [
"Witaj w naszej wspaniałej pizzerii. W czym mogę pomóc?",
"Halo, halo, tu najlepsza pizza w mieście. Masz głoda?",
"Dzieńdoberek, gdyby wszyscy jedli nasze pizze, na świecie nie byłoby wojen. Jaką pizzę sobie dziś gruchniesz?",
],
"request/price": [
"Cena za {food} wynosi {price} zł.",
"Koszt {food} to {price} zł.",
"Cena {pizza} o rozmiarze {size} wynosi {price} zł.",
"Za {quantity} x {pizza} zapłacisz {price} zł.",
"Koszt {food} to {price} zł."
],
"request/ingredients": [
"Nasza {food} {pizza} składa się z ciasta, sosu pomidorowego, sera i innych dodatków.",
"W {pizza} znajdziesz: {ingredients}.",
"{pizza} zawiera: {ingredients}.",
"W skład {pizza} wchodzi: {ingredients}.",
"Na {pizza} składają się: {ingredients}."
],
"request/sauce": [
"Jakie sosy chciałbyś do {food}?",
"Proszę wybrać sosy do {food}.",
"Jakie sosy zamawiasz do {food}?",
"Które sosy mają być do {food}?",
"Wybierz sosy do {food}."
],
"request/food": [
"Co chciałbyś zamówić?",
"Proszę podać na jaką pizzę masz ochotę",
"Którą pizzę wybrałeś?"
],
"request/time": [
"Oczekiwany czas dostawy to {time} minut.",
"Dostawa zajmie około {time} minut.",
"Czas dostawy to około {time} minut.",
"Przewidywany czas dostawy to {time} minut.",
"Twoje zamówienie dotrze w {time} minut."
],
"request/size": [
"Jaką wielkość {pizza} preferujesz? Mamy {sizes}.",
"Dostępne rozmiary {pizza} to {sizes}.",
"Jaką wielkość {pizza} chciałbyś zamówić? {sizes}.",
"Proszę wybrać rozmiar {pizza}: {sizes}.",
"Mamy następujące rozmiary {pizza}: {sizes}."
],
"bye": [
"Dziękujemy i do zobaczenia wkrótce.",
"Polecamy się na przyszłość. Do zobaczenia!",
"Do widzenia.",
],
"negate": [
"Przepraszam, nie mamy {ingredient/neg} w ofercie.",
"Niestety, {ingredient/neg} jest niedostępne.",
"Nie posiadamy {ingredient/neg} w menu.",
"Brak {ingredient/neg} w naszej ofercie.",
"Niestety, nie mamy {ingredient/neg}."
],
"default/template": [
"Nie zrozumiałem, spróbuj inaczej sformułować zdanie."
],
"repeat": [
"Nie zrozumiałem, spróbuj inaczej sformułować zdanie.",
],
"request/address": [
"Jaki adres dostawy?"
],
"bye_and_thanks": [
"Dziękujęmy, przekazaliśmy zamówienie do realizacji. Do zobaczenia!",
],
"request/phone": [
"Podaj proszę numer telefonu do kontaktu dla kuriera."
]
}

View File

View File

@ -1,50 +0,0 @@
from src.service.dialog_state_monitor import DialogStateMonitor
from src.model.frame import Frame
from src.model.slot import Slot
dsm = DialogStateMonitor()
assert dsm.item_exists('pizza', 'capri') is True
assert dsm.item_exists('pizza', 'buraczana') is False
assert dsm.item_exists('drink', 'cola') is True
assert dsm.state['was_previous_order_invalid'] is False
assert dsm.get_current_active_stage() == 'collect_food'
frame1 = Frame('user', 'inform/order', [Slot('pizza', 'margarita'), Slot('sauce', 'ketchup')])
dsm.update(frame1)
assert dsm.get_current_active_stage() == 'collect_drinks'
assert dsm.get_total_cost() == 20
frame2 = Frame('user', 'inform/order', [Slot('pizza', 'tuna')])
dsm.update(frame2)
assert dsm.get_current_active_stage() == 'collect_drinks'
assert dsm.get_total_cost() == 20 # Pizza is not added, as previous stage is closed already
frame3 = Frame('user', 'inform/order-complete', [])
dsm.update(frame3)
frame4 = Frame('user', 'inform/order', [Slot('drink', 'cola')])
dsm.update(frame4)
assert dsm.get_current_active_stage() == 'collect_address'
assert dsm.get_total_cost() == 30
assert dsm.state['belief_state']['order'][0]['pizza'] == 'margarita'
assert dsm.state['belief_state']['order'][0]['sauce'] == 'ketchup'
assert dsm.state['belief_state']['order-complete'] is True
assert dsm.state['history'][0] == frame1
assert dsm.state['history'][1] == frame2
assert dsm.state['history'][2] == frame3
assert dsm.state['history'][3] == frame4
dsm.reset()
assert dsm.get_total_cost() == 0
assert dsm.get_current_active_stage() == 'collect_food'
assert dsm.state['belief_state']['order'] == []
assert dsm.state['belief_state']['order-complete'] is False
assert len(dsm.state['history']) == 0
dsm.reset()
frame1 = Frame('user', 'inform/order', [Slot('pizza', 'buraczana')])
dsm.update(frame1)
assert dsm.state['was_previous_order_invalid'] is True
assert dsm.state['belief_state']['order'] == []
assert dsm.get_total_cost() == 0

View File

View File

@ -1,100 +0,0 @@
from flair.data import Sentence
from flair.datasets import FlairDatapointDataset
def nolabel2o(line, i):
return 'O' if line[i] == 'NoLabel' else line[i]
def conllu2flair(sentences, label=None):
if label == "frame":
return conllu2flair_frame(sentences, label)
else:
return conllu2flair_slot(sentences, label)
def conllu2flair_frame(sentences, label=None):
fsentences = []
for sentence in sentences:
tokens = [token["form"] for token in sentence]
fsentence = Sentence(' '.join(tokens), use_tokenizer=False)
for i in range(len(fsentence)):
fsentence[i:i+1].add_label(label, sentence[i][label])
fsentences.append(fsentence)
return FlairDatapointDataset(fsentences)
def conllu2flair_slot(sentences, label=None):
fsentences = []
for sentence in sentences:
fsentence = Sentence(' '.join(token['form'] for token in sentence), use_tokenizer=False)
start_idx = None
end_idx = None
tag = None
if label:
for idx, (token, ftoken) in enumerate(zip(sentence, fsentence)):
if token[label].startswith('B-'):
if start_idx is not None:
fsentence[start_idx:end_idx+1].add_label(label, tag)
start_idx = idx
end_idx = idx
tag = token[label][2:]
elif token[label].startswith('I-'):
end_idx = idx
elif token[label] == 'O':
if start_idx is not None:
fsentence[start_idx:end_idx+1].add_label(label, tag)
start_idx = None
end_idx = None
tag = None
if start_idx is not None:
fsentence[start_idx:end_idx+1].add_label(label, tag)
fsentences.append(fsentence)
return FlairDatapointDataset(fsentences)
def __predict(model, csentence):
fsentence = conllu2flair([csentence])[0]
model.predict(fsentence)
return fsentence
def __csentence(sentence, label_type):
if label_type == "frame":
return [{'form': word } for word in sentence]
else:
return [{'form': word, 'slot': 'O'} for word in sentence]
def predict_single(model, sentence, label_type):
csentence = __csentence(sentence, label_type)
fsentence = __predict(model, csentence)
intent = {}
for span in fsentence.get_spans(label_type):
tag = span.get_label(label_type).value
if tag in intent:
intent[tag] += 1
else:
intent[tag] = 1
return max(intent, key=intent.get)
def predict_multiple(model, sentence, label_type):
csentence = __csentence(sentence, label_type)
fsentence = __predict(model, csentence)
return set(span.get_label(label_type).value for span in fsentence.get_spans(label_type))
def predict_and_annotate(model, sentence, label_type):
csentence = __csentence(sentence, label_type)
fsentence = __predict(model, csentence)
for span in fsentence.get_spans(label_type):
tag = span.get_label(label_type).value
if label_type == "frame":
csentence[span.tokens[0].idx-1]['frame'] = tag
else:
csentence[span.tokens[0].idx - 1]['slot'] = f'B-{tag}'
for token in span.tokens[1:]:
csentence[token.idx - 1]['slot'] = f'I-{tag}'
return csentence

View File

@ -11,8 +11,8 @@ operators_and_users = {
("03", "Dawid Korzępa"),
],
("05", "Patryk Osiński"): [
("02", "Anna Śmigiel"),
("04", "Michał Kasprowicz"),
# ("02", "Anna Śmigiel"),
# ("04", "Michał Kasprowicz"),
("06", "Krzysztof Bojakowski"),
("08", "Krystian Osiński"),
]