"Monitorowanie stanu dialogu polega na obserwowaniu jakie informacje dostarczył i czego oczekuję od systemu uzytkownik, na podstawię całego dialogu między systemem a użytkownikiem. \n",
"\n",
"Najczęściej składa sie on z **aktów dialogowych** i wartości **slotów**. Akty dialogowe mówia systemowi jakie ma zadanie wykonać, a sloty jakie informacje potrzebuję od użytkownika do wykonania zadania.\n",
"\n",
"Źródła:[3]\n",
"\n",
"![](DST.png)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"**Dlaczego jest to potrzebne?**\n",
"\n",
"Prowadząc dialog z człowiekiem z natury wychodzi nam zapamietywanie oraz łaczenie poprzednich wypowiedzi w całość, nie potrzebujemy się zastanawiać co oznacza odpowiedź \"tak\" bo zrozumieć że jest to odpowidź na zadane przez nas pytanie. System dialogowy potrzebuję właśnie takiego rozumienia kontekstu danej wypowiedzi aby prawidłowo działać."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"![Dialog](Dialog_1.png)\n",
"\n",
"W podanym przykładowym dialogu system nie potrzebował pytać ponownie o miejsce oraz rodzaj jedzenia które szuka użytkownik gdyż zostało to już podane wcześniej systemowi. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"**Dobry system DST powinnien zawierać właściwości:**\n",
"\n",
"Incrementality: System powinnien aktualizować swój stan po każdej wypowiedzi \n",
"\n",
"Context-awereness: System potrafi używać informacji z poprzednich tur dialogu \n",
"\n",
"Trainability: System ulepsza się po dostarczeniu nowych danych \n",
"\n",
"Portability: System powinnien działać w róznych aplikcajca w różnych dziedzinach, nawet bez danych treningowych z domeny"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"**Problematyka tworzenia DST**\n",
"\n",
"Jedną z przeszkód stojących na drodzę do idealnego DST jest właściwe inerpretowanie tego co było już powiedziane a to co właśnie powiedział użytkownik. Trzeba rozpoznać każdą zmianę jaką chce dokonać użytkownik w istniejących już wartościach slotów. Jest to zwłaszcza utrudnione przez nie zawsze precyzyjne informcaję podane do systemu. Trzeba inertpretować do czego się odnosi oraz co oznacza zdanie np.\"w takim razie jakieś tanie miejsce\" a bez kontekstu jest to nie możliwę.\n",
"\n",
"Gdy użytkownik zapyta się o rzecz, która nie istnieje w bazie system musi odpowiednio zaragować. Proste odpowiedzi typu \"Taka restauracja nie isteniej\" mogą tylko zniechęcić użytkownika do korzystania z systemu. Trzeba dopasować odpowiedź do brakujących danych można zapytać czy użytkownich chciałby zmienić lokalizacje lub rodzaj restuaracji o którą pytał. \n",
"\n",
"Problemy wynikają także z błednego odczytania co użytkownik powiedział(ASR) lub nie precyzyjnej odpowiedzi systemu(SLU). Takie błedy mimo dobrze działającego DST mogą spowodować minięcie się z oczekiwaniami użytkownika."
"Proste podejście przypisywania w każdej turze określonego aktu dialogwego wraz z odpowiadającym mu określonym znaczeniem. Działo to tylko dla prostych dialogów z wcześniej zdefiniowaną ontologią. "
"Podejście polegające na tym że stany generują obserwacje, zakładają to że obserwacje na każdym etapie tury są niezależne od siebie. Umożliwia też tworzenie własnych ontlogi na podstawie historii dialogów oraz wyników jakie generuje NLU."
"**Dialog State Tracking Challenge 2 & 3 Data**\n",
"\n",
"Z powodu tego iż zbieranie danych jest bardzo kosztowne, mało kto mógł korzystać z dobrze przygotowanych danych aby rozwijać własne DST. Dlatego aby ułatwić rozwój powstał pierwszy Dialog State Tracking Challenge i jego następca Dialog State Tracking Challenge 2 & 3.\n",
"DSTC 2 zawierał ponad 15 tysięcy dobrze opisanych dialogów udostępnionych aby ludzi mogli trenować swój system.\n",
"system: Hello , welcome to the Cambridge restaurant system? You can ask for restaurants by area , price range or food type . How may I help you? dialog-acts-[{'slots': [], 'act': 'welcomemsg'}]\n",
"user: expensive restaurant in the south part of town dialog-acts-[{'slots': [], 'act': 'welcomemsg'}]\n",
"system: What kind of food would you like? dialog-acts-[{'slots': [['slot', 'food']], 'act': 'request'}]\n",
"user: any dialog-acts-[{'slots': [['slot', 'food']], 'act': 'request'}]\n",
"system: the good luck chinese food takeaway is a nice restaurant in the south of town serving chinese food dialog-acts-[{'slots': [['name', 'the good luck chinese food takeaway']], 'act': 'offer'}, {'slots': [['food', 'chinese']], 'act': 'inform'}, {'slots': [['pricerange', 'expensive']], 'act': 'inform'}, {'slots': [['area', 'south']], 'act': 'inform'}]\n",
"user: address dialog-acts-[{'slots': [['name', 'the good luck chinese food takeaway']], 'act': 'offer'}, {'slots': [['food', 'chinese']], 'act': 'inform'}, {'slots': [['pricerange', 'expensive']], 'act': 'inform'}, {'slots': [['area', 'south']], 'act': 'inform'}]\n",
"system: Sure , the good luck chinese food takeaway is on 82 Cherry Hinton Road Cherry Hinton dialog-acts-[{'slots': [['name', 'the good luck chinese food takeaway']], 'act': 'offer'}, {'slots': [['addr', '82 cherry hinton road cherry hinton']], 'act': 'inform'}]\n",
"user: type of food dialog-acts-[{'slots': [['name', 'the good luck chinese food takeaway']], 'act': 'offer'}, {'slots': [['addr', '82 cherry hinton road cherry hinton']], 'act': 'inform'}]\n",
"system: the good luck chinese food takeaway is a nice restaurant in the south of town in the expensive price range dialog-acts-[{'slots': [['name', 'the good luck chinese food takeaway']], 'act': 'offer'}, {'slots': [['pricerange', 'expensive']], 'act': 'inform'}, {'slots': [['area', 'south']], 'act': 'inform'}]\n",
"user: thank you good bye dialog-acts-[{'slots': [['name', 'the good luck chinese food takeaway']], 'act': 'offer'}, {'slots': [['pricerange', 'expensive']], 'act': 'inform'}, {'slots': [['area', 'south']], 'act': 'inform'}]\n"
"[{'asr-hyp': 'expensive restaurant in south part of town', 'score': -0.512136}, {'asr-hyp': 'a restaurant in south part of town', 'score': -2.429358}, {'asr-hyp': 'expensive expensive restaurant in south part of town', 'score': -2.429358}, {'asr-hyp': 'expensive restaurant restaurant in south part of town', 'score': -3.210609}, {'asr-hyp': 'expensive in south part of town', 'score': -3.211676}, {'asr-hyp': 'expensive restaurant south part of town', 'score': -3.347932}, {'asr-hyp': 'the expensive restaurant in south part of town', 'score': -4.268281}, {'asr-hyp': 'a expensive restaurant in south part of town', 'score': -4.34658}, {'asr-hyp': 'a restaurant restaurant in south part of town', 'score': -5.127831}, {'asr-hyp': 'expensive expensive restaurant restaurant in south part of town', 'score': -5.127831}]\n",
"{'asr-hyp': 'expensive restaurant in south part of town', 'score': -0.512136}\n",
"{'asr-hyp': 'a restaurant in south part of town', 'score': -2.429358}\n",
"{'asr-hyp': 'expensive expensive restaurant in south part of town', 'score': -2.429358}\n",
"{'asr-hyp': 'expensive restaurant restaurant in south part of town', 'score': -3.210609}\n",
"{'asr-hyp': 'expensive in south part of town', 'score': -3.211676}\n",
"{'asr-hyp': 'expensive restaurant south part of town', 'score': -3.347932}\n",
"{'asr-hyp': 'the expensive restaurant in south part of town', 'score': -4.268281}\n",
"{'asr-hyp': 'a expensive restaurant in south part of town', 'score': -4.34658}\n",
"{'asr-hyp': 'a restaurant restaurant in south part of town', 'score': -5.127831}\n",
"{'asr-hyp': 'expensive expensive restaurant restaurant in south part of town', 'score': -5.127831}\n",
"**[3]** Dialogue State Tracking with Incremental Reasoning https://direct.mit.edu/tacl/article/doi/10.1162/tacl_a_00384/101875/Dialogue-State-Tracking-with-Incremental-Reasoning\n",