Compare commits

..

95 Commits

Author SHA1 Message Date
kb
e2e447a601 Testy skadnikow i ilosci 2024-06-13 18:10:19 +02:00
kb
0b9a15488c Testy skadnikow i ilosci 2024-06-13 18:03:58 +02:00
kb
9c528afc6c Testy skadnikow i ilosci 2024-06-13 17:59:02 +02:00
kb
05876dbd24 Testy skadnikow i ilosci 2024-06-13 17:46:54 +02:00
kb
bf309fb6fe Testy skadnikow i ilosci 2024-06-13 17:44:59 +02:00
kb
73b9e52d31 Silence 2024-06-13 17:11:04 +02:00
kb
78f01cb165 zmiana stylu rozmowy na bardziej naturalny 2024-06-13 17:08:43 +02:00
kb
3316917d47 Silence 2024-06-13 17:00:16 +02:00
kb
e42ae14ceb Silence 2024-06-13 16:59:22 +02:00
kb
fefc6bd7bc Finalne poprawki 2024-06-13 16:56:47 +02:00
kb
437f5f7d72 Poprawka 2024-06-13 16:49:21 +02:00
kb
a759108c9e Poprawki 2024-06-13 16:48:54 +02:00
kb
d1108d9b8a Poprawka buga 2024-06-13 16:40:21 +02:00
kb
75fb0f873b Dopytujemy o kompletne zamówienie 2024-06-13 16:36:17 +02:00
kb
02312cc3b9 Testing 2024-06-13 16:11:22 +02:00
kb
118099bb37 Tests 2024-06-13 15:59:31 +02:00
kb
24f75db1d8 Merge branch 'master' of https://git.wmi.amu.edu.pl/s495726/chat-restaruacja 2024-06-13 15:52:37 +02:00
kb
ac5dcdc06d Merge branch 'master' of https://git.wmi.amu.edu.pl/s495726/chat-restaruacja 2024-06-13 15:52:27 +02:00
kb
ad0b4cf739 Merge branch 'master' of https://git.wmi.amu.edu.pl/s495726/chat-restaruacja 2024-06-13 15:50:18 +02:00
kb
3fb60acd4f Test 2024-06-13 15:49:31 +02:00
kb
0fda2dbb98 Test 2024-06-13 15:39:50 +02:00
kb
35a19cc5c0 Fix merge conflicts 2024-06-13 15:33:23 +02:00
kb
4ce52466a2 Merge 2024-06-13 15:30:23 +02:00
kb
10fc617cad Poprawki do systemu, złożenie wszystkich modułów w całość 2024-06-13 15:25:52 +02:00
41f41cc692 Update src/main.py 2024-06-12 16:02:39 +02:00
e7a8814438 templatki 2024-06-12 16:00:40 +02:00
fded76596b NLG 2024-06-12 16:00:02 +02:00
5f128e7e88 Zmiana staga po dodaniu określonego wpisu do DSM 2024-06-10 23:35:45 +02:00
dfed26e955 Zmiany dla dialog policy 2024-06-10 20:01:24 +02:00
kb
a928c925fc Update readme 2024-06-10 19:24:04 +02:00
kb
809079cd56 Poprawki do main.py 2024-06-10 18:43:43 +02:00
kb
4620e53229 Poprawki 2024-06-10 18:20:11 +02:00
f7ee0ba059 Changes for dialog_policy 2024-06-10 17:48:55 +02:00
kb
f4d9bff809 Dodaje opcje do mockowania NLU 2024-06-10 17:44:48 +02:00
kb
ff0b4af87c Poprawki - usuwamy convlaba 2024-06-10 17:37:59 +02:00
166dd4886c Add dialog policy 2024-06-10 02:58:56 +02:00
a850690dc9 Formatowanie 2024-06-10 00:54:09 +02:00
2b6a8b01a6 Dodanie obsługi napoi w DSM 2024-06-10 00:53:38 +02:00
79bf27aca4 Poprawka testu 2024-06-10 00:48:05 +02:00
3d820e8d6d Usunięcie sprawdzania poprawności zamówienia 2024-06-10 00:46:52 +02:00
abc098e498 Dodanie sprawdzania istnienia pizzy i liczenia totala 2024-06-10 00:39:31 +02:00
a90535a68b Dodanie stanów i ograniczeń do DSM 2024-06-10 00:19:13 +02:00
4483747021 Usunięcie convlaba z DSM 2024-06-09 23:05:07 +02:00
kb
caea45471c Przygotowania pod convlaba 2024-06-09 21:29:38 +02:00
72e17d2106 Zmiana metody zapisu pamięci w DST 2024-06-09 19:48:26 +02:00
d789fcc10b Dodanie normalizacji do DSM 2024-06-07 15:51:02 +02:00
adfea71871 Dodanie normalizacji do DSM 2024-06-07 15:49:41 +02:00
d02bd4b5ae Poprawa oznaczeń dialogów 2024-06-07 12:53:38 +02:00
b64eb49ba0 Implementacja DSM wraz z testami 2024-06-07 12:49:41 +02:00
175de22c9b hope all works well 2024-06-03 19:51:59 +02:00
fbd85d9e34 hope it works 2024-06-03 19:50:59 +02:00
kb
6ca7b66fb4 Finishing up NLU module 2024-05-22 23:45:33 +02:00
f0c7b481d1 usuwam breakpoint 2024-05-10 18:26:24 +02:00
4e763a459d odkomentowanie kodu 2024-05-10 01:30:44 +02:00
16af0e732c Finalne poprawki 2024-05-10 01:25:13 +02:00
846c6991e7 Poprawki literówek 2024-05-09 02:53:54 +02:00
42c224a11a Testy na plikach w formacie ConLLu 2024-05-09 02:26:00 +02:00
ffefdc1ee0 Poprawki na oko, na szybko 2024-05-09 01:03:13 +02:00
cb0f1eb5de Poprawki 2024-05-08 21:26:16 +02:00
738710b1f5 Upload files to "data" 2024-05-08 17:55:31 +02:00
7e47098c8c Update data/dialog-04-03-01.tsv 2024-05-08 16:55:10 +02:00
da3a8064c0 Update data/dialog-04-05-01.tsv 2024-05-08 16:54:33 +02:00
e1b691aa9c dialogi+anotacje, operator 04, poprawione 2024-05-08 13:36:21 +02:00
6497cd803d Update src/service/natural_language_generation.py 2024-05-08 13:09:13 +02:00
1d62b93328 Update src/main.py 2024-05-08 13:08:42 +02:00
6114ec26fd Skrypt do trenowanie modelu w oparciu o frame oraz slots, wstepny skrypt do ewaluacji evaluate.py, skrypt do testow 2024-05-08 01:59:30 +02:00
0d69a1422f Skrypt pomocny do generowania zbioru treningowego 2024-05-08 01:57:38 +02:00
f5dcaf9780 Dodanie zbioru treningowego w formacie ConLLu IOB 2024-05-08 01:57:20 +02:00
762d4a0c15 Male poprawki w formacie .tsv 2024-05-08 01:56:37 +02:00
5fc4451fc9 Poprawki do anotacji 2024-05-07 15:03:56 +02:00
06320b8682 Upload files to "src" 2024-05-06 14:52:18 +02:00
cd8da4bdcd NLG 2024-05-06 14:51:18 +02:00
6e9112bc9b dialogi+anotacje, operator 04 2024-05-05 12:40:20 +02:00
6683285db1 dialogi+anotacje, operator 04 2024-05-05 12:32:58 +02:00
20531d729d Zmiana nazwy pliku CamelCase -> snake_case 2024-05-03 00:35:50 +02:00
c70685682d Poprawki do dependency, dodanie przykladu do main.py 2024-05-03 00:30:43 +02:00
a8bf975f12 Dodanie modulu taktyki dialogu 2024-05-03 00:21:47 +02:00
abe4577dd6 Dodanie aktow do dialogow 2024-05-03 00:20:24 +02:00
44a4e51443 Rozwiniecie attributes.json 2024-05-03 00:19:00 +02:00
cec4f7da50 Dodanie makiety analizatora języka naturalnego 2024-04-30 23:13:19 +02:00
cc74e9e838 Dodanie anotacji dla opertora 7 2024-04-30 18:25:07 +02:00
ab7f96f70a Dodanie aktów do dialogów operatora 05 2024-04-22 19:20:49 +02:00
76b34987bf Zmiana strukturalna i nazwy dla pliku menu.json 2024-04-19 21:54:09 +02:00
82f1c9b0da Dodani makiety dla monitora stanu dialogu i ramki wraz z przykładami użycia 2024-04-19 21:22:02 +02:00
c3fb071cbf Dodanie dialogów 05-02 i 05-04 2024-04-19 21:01:57 +02:00
bc775bca1d Merge branch 'master' of https://git.wmi.amu.edu.pl/s495726/chat-restaruacja 2024-04-12 17:01:25 +02:00
609e78eee8 Akty do wykorzystania przy annotacji 2024-04-12 17:01:16 +02:00
974363c918 Upload files to "data" 2024-04-12 15:54:09 +02:00
53f734dad9 Uzupełnienie zadania 3 w pliku requirements-analysis.md 2024-04-12 00:16:42 +02:00
fb1581c5ea Poprawa formatowania i poprawa literówek w pliku requirements-analysis.md 2024-04-12 00:10:17 +02:00
298cca9bd6 Upload files to "data" 2024-04-11 22:10:56 +02:00
3dd01318ee Aktualizacja wymagań - rozpisanie przypadku drugiego 2024-04-04 23:17:59 +02:00
95263349fc Update requirements-analysis.md 2024-03-31 11:10:23 +02:00
372625069f Dodanie opisu do requirements-analysis.md 2024-03-29 22:05:10 +01:00
62a2bdb2ba Analiza wymagań, uzupełnione zostało 4 zadanie, kiedy klient nie odpowiada na pytania. 2024-03-29 22:00:25 +01:00
50 changed files with 3298 additions and 483 deletions

4
.gitignore vendored Normal file
View File

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

View File

@ -13,4 +13,41 @@ 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
- 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.

92
attributes.json Normal file
View File

@ -0,0 +1,92 @@
{
"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
}
}
}

15
conllu_generator.py Normal file
View File

@ -0,0 +1,15 @@
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("---")

16
data/dialog-04-01-01.tsv Normal file
View File

@ -0,0 +1,16 @@
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,24 +1,25 @@
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
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()

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

View File

@ -1,16 +1,17 @@
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.
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)

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

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

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

10
data/dialog-05-02-01.tsv Normal file
View File

@ -0,0 +1,10 @@
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()

9
data/dialog-05-04-01.tsv Normal file
View File

@ -0,0 +1,9 @@
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,16 +1,14 @@
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.
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()

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

View File

@ -1,21 +1,18 @@
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
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)

1 kto treść akt
2 user Cześć welcomemsg()
3 system Dzień dobry. W czym mogę pomóc? 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()
4 user Kim jesteś? Z czym jest pizza barcelona? request(barcelona)
5 system Jestem wirtualnym asystentem restauracji 'pizzeria'.\nOferujemy pizze:\nmargharita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach M (31cm), L (41cm) , XL (52cm) Pizza barcelona posiada: pomidory, cebulę i szynkę. inform(pizza=barcelona,ingredient=tomato,ingredient=onion,ingredient=ham)
6 user Z czym jest pizza barcelona? Jakie dodatki można dodać do tej pizzy? request(additional_ingredient)
7 system Pizza barcelona posiada: pomidory, cebulę i szynkę. 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)
8 user Jakie dodatki można dodać do tej pizzy? To ja chętnie zamówię pizzę barcelona z dodatkiem świeżej mięty request(pizza=barcelona,pizza.ingredient=mint)
9 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 Życzy Pan sobie do tego jakiś napój? offer(drink)
10 user To ja chętnie zamówię pizzę barcelona z dodatkiem świerzej mięty A jakie so? request(drink)
11 system Życzy Pan sobie do tego jakiś napój? 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)
12 user A jakie so? Czy jest woda gazowana? request(drink=still_water)
13 system Oferujemy: napój gazowany pepsi/cola, sok jabłkowy, sok pomarańczowy, woda Niestety, tylko woda kranowa jest dostępna offer(drink=tap_water)
14 user Czy jest woda gazowana? 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()
15 system Niestety, tylko woda kranowa jest dostępna Przepraszam, nie zrozumiałem. canthelp()
16 user A jak ona jest dostarczona? Proszę dodać wodę do zamówienia inform(drink=tap_water)
17 system Jest ona nalewana do butelki, i otrzymuję ją Pan razem z resztą zamówienia 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)
18 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ć. Odbiorę na miejscu inform(delivery=none)
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

View File

@ -1,21 +1,21 @@
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.
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()

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 poprosze margharite, czy jest mozliwosc podmiany sosu pomidorowego na smietanowy? To poproszę margharite, czy jest mozliwosc podmiany sosu pomidorowego na smietanowy? inform(pizza=margarita,sauce=creamy)
9 system Niestety nie. canthelp(sauce=creamy)
10 user To poprosze margharite zwykla To poproszę 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 prosze o realizacje zamowienia To proszę o realizację zamówienia inform(order=complete)
17 system Jaki adres dostawy? request(address)
18 user 1312-123, test, test Kasztanowa 13/123, Toruń 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 Prosze aby kurier zadzwonil na moj numer jak przyjedzie: nr: 31312312312312313 Proszę aby kurier zadzwonił na mój numer jak przyjedzie: nr: 213 532 212 inform(phone=213532212)
21 system Kurier zostanie poinformowany. affirm()&bye()

View File

@ -1,28 +1,26 @@
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
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()

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 za kilometr? okej to poproszę, czy są dostępne jakieś sosy? affirm()&request(sauce)
15 system Zamówienia na terenie miasta, koszt to 5zł. Tak, sos czosnkowy lub tysiąca wysp. select(sauce)
16 user okej to poproszę, czy są dostępne jakieś sosy? czy sos dodatkowo kosztuje? request(price)
17 system Tak, sos czosnkowy lub tysiąca wysp. Nie, jest w cenie. inform(price=0)
18 user czy sos dodatkowo kosztuje? a są do tego jakieś napoje? request(drink)
19 system Nie, jest w cenie. Pepsi, Cola, Woda mineralna. select(drink)
20 user a są do tego jakieś napoje? jaka cena coli? inform(drink=cola)&request(price)
21 system Pepsi, Cola, Woda mineralna. 5zł. inform(drink=cola,price=5)
22 user jaka cena coli? to poproszę. Potwierdzam zamowienie inform(order=complete)
23 system 5zł. Bardzo proszę, pizza L hawajska bez szynki, cola. Koszt 37zł, płatność przy odbiorze. Na jaki adres? inform(price=37)&request(address)
24 user to poprosze\nPotwierdzam zamowienie 62-200 Gniezno, osiedle Grunwaldzkie 21/3117\njaki czas oczekiwania? inform(address=62-200 Gniezno osiedle Grunwaldzkie 21/3117)&request(time)
25 system Bardzo proszę, pizza L hawajska bez szynki, cola. Koszt 37zł, płatność przy odbiorze. Na jaki adres? Kurier dotrze do Pana w przeciągu godziny. Dziękuję i zapraszamy ponownie! inform(time=1)&bye()
26 user 62-200 Gniezno, osiedle Grunwaldzkie 21/3117\njaki czas oczekiwania? Dziekuje bye()
system Kurier dotrze do Pana w przeciągu godziny. Dziękuję i zapraszamy ponownie!
user Dziekuje

View File

@ -1,11 +1,11 @@
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
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()

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ść
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ę
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()

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ść
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!
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()

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()

9
data/dialog-07-02-01.tsv Normal file
View File

@ -0,0 +1,9 @@
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()

7
data/dialog-07-04-01.tsv Normal file
View File

@ -0,0 +1,7 @@
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ść
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.
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()

1 kto treść akt
2 user Dzień dobry. welcomemsg()
3 system Dzień dobry, witam w naszej pizzeri. W czym mogę pomóc? Dzień dobry. Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). welcomemsg()&inform(menu)
4 user Chciałbym zamówić pizzę z kurczakiem, pieczarkami, i serem. Chciałbym zamówić pizzę barcelona. 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, mamy soki natrualne oraz lemoniady różnych smakach tak, pespi, colę oraz wodę select(drink)
8 user to poproszę lemoniadę z cytryny arbuzowej to poproszę sprite inform(drink=sprite)
9 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ą Niestety, nie posiadamy sprite w ofercie. pespi, colę oraz wodę canthelp(drink=sprite)&select(drink)
10 user to truskawkową lemoniadę poproszę to poproszę colę 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 36,43zł, kurier będzie u Pana w ciągu 30 minut. Pozdrawiam i zapraszam ponownie 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()
16 user Pozdrawiam. bye()

View File

@ -1,16 +1,16 @@
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
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()

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 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). Oferujemy pizze:\nmargarita\ncapri\nhawajska\nbarcelona\ntuna\nWystępują w rozmiarach m (31cm), l (41cm) , xl (52cm). select(menu)
8 user Chciałbym pizzę wegetariańską ale bez ananasa Chciałbym pizzę hawajska 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

@ -0,0 +1,30 @@
[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

@ -0,0 +1,35 @@
[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

641
data/test_dialog_46.conllu Normal file
View File

@ -0,0 +1,641 @@
# 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

911
data/train_dialog.conllu Normal file
View File

@ -0,0 +1,911 @@
# 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
View File

@ -1,206 +0,0 @@
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()

62
evaluate.py Normal file
View File

@ -0,0 +1,62 @@
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})")

View File

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

41
nlu_train.py Normal file
View File

@ -0,0 +1,41 @@
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,38 +1,87 @@
Przyjmowania zamówień w restauracji
==============
Zadanie 1: Składanie zamówienia, zdecydowany klient
Zadanie 1: Składanie zamówienia, zdecydowany klient (wybiera opcje z menu)
--------------------------------
*system:* ...
*system:* Dzień dobry, witamy w systemie zamówień na pizzę. Polecam pizzę diavola z dodatkową rukolą.
*user:* ...
*user:* Chciałbym zamówić pizzę wegetariańską w średnim rozmiarze.
*system:* ...
*system:* Oczywiście, czy chciałby Pan jakieś dodatki?
Zadanie 2: Składanie zamówienia, niezdecydowany klient
*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)
--------------------------
*system:* ...
*system:* Dzień dobry, witamy w restauracji "pizzeria", jak mogę pomóc?
*user:* ...
*user:* Dzień dobry, chciałbym zamówić pizzę na wynos z osobistym odbiorem.
*system:* ...
*system:* Jaką pizzę sobie Pan/Pani życzy?
Zadanie 3: Składanie zamówienia, klient ze specjalnymi wymaganiami
*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)
--------------------------
*system:* ...
*system:* Dzień dobry, witamy w restauracji "pizzeria", jak mogę pomóc?
*user:* ...
*user:* poproszę średnią hawajską
*system:* ...
*system:* Czy chciałby Pan/Pani zamówić także napój?
Zadanie 4: Składanie zamówienia, klient który rozmawia na niewłaściwy temat
*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
--------------------------
*system:* ...
*system:* Dzień dobry, witamy w restauracji "pizzeria", jak mogę pomóc?.
*user:* ...
*user:* Dzień dobry, chciałbym porozmawiać z managerem.
*system:* ...
*system:* Niestety, nie rozumiem. Czy chcesz zamówić pizzę?
*user:* Połącz mnie z konsultantem!
*system:* Niestety, nie potrafię Ci pomóc. Do widzenia.

View File

@ -1 +1,7 @@
nltk==3.8.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

0
src/__init__.py Normal file
View File

56
src/main.py Normal file
View File

@ -0,0 +1,56 @@
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

0
src/model/__init__.py Normal file
View File

15
src/model/frame.py Normal file
View File

@ -0,0 +1,15 @@
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

7
src/model/slot.py Normal file
View File

@ -0,0 +1,7 @@
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}"

30
src/nlu_example.py Normal file
View File

@ -0,0 +1,30 @@
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')}")

0
src/service/__init__.py Normal file
View File

View File

@ -0,0 +1,66 @@
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

@ -0,0 +1,209 @@
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

@ -0,0 +1,108 @@
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

@ -0,0 +1,43 @@
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

@ -0,0 +1,216 @@
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"

169
src/service/templates.py Normal file
View File

@ -0,0 +1,169 @@
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."
]
}

0
src/test/__init__.py Normal file
View File

View File

@ -0,0 +1,50 @@
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

0
src/utils/__init__.py Normal file
View File

100
src/utils/nlu_utils.py Normal file
View File

@ -0,0 +1,100 @@
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"),
]