This commit is contained in:
Maciej Tyczynski 2023-03-23 19:08:08 +01:00
commit 32d2da5fdf
3 changed files with 326 additions and 0 deletions

View File

@ -0,0 +1,81 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "61117c67",
"metadata": {},
"source": [
"Systemy dialogowe\n",
"=================\n",
"\n",
"Wymagania\n",
"---------\n",
" - W ramach zajęć studenci realizują zadania w 3-4 osobowych grupach\n",
"\n",
" - Każda grupa powinna założyć wspólne repozytorium kodu na wydziałowym serwerze Git <https://git.wmi.amu.edu.pl/>.\n",
"\n",
" - Skład zespołu oraz link do repozytorium kodu proszę wkleić na kanale ogólnym.\n",
"\n",
"Zaliczenie\n",
"----------\n",
"\n",
"Zaliczenie można otrzymać po spełnieniu następujących warunków:\n",
"\n",
" 1. Uzyskanie min. 50% punktów.\n",
" 2. Obecność na zajęciach (zgodnie z regulaminem)."
]
},
{
"cell_type": "markdown",
"id": "63922655",
"metadata": {},
"source": [
"Harmonogram i punktacja\n",
"-----------------------\n",
"\n",
"Zadania są realizowane zgodnie z następującym harmonogramem.\n",
"\n",
"| **Termin piątkowy** | **Punkty** | **Temat** |\n",
"|--------------------:|-----------:|:--------------------------------------------------|\n",
"| 10.03 | 2 | Chatboty |\n",
"| 10.03 | 2 | Analiza wymagań |\n",
"| 24.03 | 2 | Eksperymenty typu „Czarnoksiężnik z OZ” |\n",
"| 24.03 | 2 | Struktura dialogu |\n",
"| 31.03 | 2 | Architektura systemu dialogowego |\n",
"| 31.03 | 2 | Parsing semantyczny, ujednoznacznianie wypowiedzi |\n",
"| 21.04 | 2 | Zarządzanie dialogiem |\n",
"| 21.04 | 2 | Generowanie odpowiedzi |\n",
"| 5.05 | 2 | Ewaluacja systemów dialogowych |\n",
"| 5.05 | 2 | Ocena końcowa, systemy end-to-end |"
]
},
{
"cell_type": "markdown",
"id": "ef2f18e7",
"metadata": {},
"source": [
"Łącznie jest do zdobycia 20 punktów.\n",
"\n",
"Ocena jest wystawiana na postawie poniższej tabeli.\n",
"\n",
"| Punkty | Ocena |\n",
"|--------------|-------|\n",
"| $[18,20]$ | bdb |\n",
"| $[17,18)$ | db+ |\n",
"| $[14,17)$ | db |\n",
"| $[13,14)$ | dst+ |\n",
"| $[10,13)$ | dst |\n",
"| $[0,10)$ | ndst |"
]
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
"main_language": "python",
"notebook_metadata_filter": "-all"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,125 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "b2f59df0",
"metadata": {},
"source": [
"Rodzaje systemów dialogowych\n",
"============================\n",
"\n",
"Wprowadzenie\n",
"------------\n",
"\n",
"Systemy dialogowe można zgrubnie podzielić na dwie kategorie <cite>(Jurafsky and Martin, 2020)</cite>:\n",
"\n",
" 1. chatboty,\n",
"\n",
" 2. systemy ukierunkowane na wykonywanie zadań (ang. task-oriented dialogue agents).\n",
"\n",
"### Chatboty\n",
"Przeznaczeniem chatbota\n",
"jest prowadzenie swobodnej dyskusji z użytkownikiem na dowolny (nienarzucony z góry) temat.\n",
"Konwersacja z chatbotem nie służy wypełnieniu żadnego z góry określonego zadania.\n",
"\n",
"Klasycznym przykładem chatbota jest [ELIZA](https://en.wikipedia.org/wiki/ELIZA) <cite>(Weizenbaum, 1966)</cite>.\n",
"Program ten,\n",
"udając psychoanalityka, miał zademonstrować potencjał tkwiący w komunikacji człowieka z komputerem w\n",
"języku naturalnym. Jego pythonową implementację znajdziemy w pakiecie [nltk](www.nltk.org)."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e2301a9e",
"metadata": {},
"outputs": [],
"source": [
"from nltk.chat import eliza\n",
"eliza.demo()"
]
},
{
"cell_type": "markdown",
"id": "ae7a5568",
"metadata": {},
"source": [
"ELIZA składa się ze zbioru wzorców, które są dopasowywane do wypowiedzi użytkownika.\n",
"Z każdym wzorcem jest powiązany zestaw szablonów, które są wykorzystywane do przygotowania\n",
"odpowiedzi dla użytkownika."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "05c53336",
"metadata": {},
"outputs": [],
"source": [
"eliza.pairs[:3]"
]
},
{
"cell_type": "markdown",
"id": "f3622915",
"metadata": {},
"source": [
"### Systemy dialogowe ukierunkowane na wykonywanie zadań\n",
"Systemy ukierunkowane na wykonywanie zadań będą stanowić główny temat tego przedmiotu.\n",
"Dla uproszenia będziemy je nazywać *agentami dialogowymi*.\n",
"\n",
"Pierwotnie agenty dialogowe były ukierunkowywane na jedno, ściśle określone zadanie.\n",
"Systemem tego typu był GUS <cite>(Bobrow, 1977)</cite> umożliwiający planowanie podróży.\n",
"\n",
"Obecnie zarówno w praktyce badawczej jak i w zastosowaniach przemysłowych rozwijane są systemy\n",
"ukierunkowane na wykonywanie wielu zadań równocześnie, do których należą:\n",
"\n",
" 1. inteligentne asystenty osobiste (ang. *IPA*, *Intelligent Personal Assistant*), np.\n",
"\n",
" - [Alexa](https://developer.amazon.com/en-US/alexa),\n",
" - [Bixby](https://www.samsung.com/us/apps/bixby/),\n",
" - [Google Assistant](https://assistant.google.com/),\n",
" - [Siri](https://www.apple.com/siri/),\n",
"\n",
" które realizują spersonalizowane cele użytkownika (wyszukiwanie kontaktów w książce adresowej, zarządzanie kalendarzem, zakup produktów).\n",
"\n",
" 2. modele językowe dostosowane do wykonywania poleceń, np.\n",
"\n",
" - [ChatGPT](https://openai.com/blog/chatgpt/),\n",
" - [InstructGPT](https://openai.com/blog/instruction-following/),\n",
" - [FLAN-T5](https://arxiv.org/pdf/2210.11416.pdf),\n",
"\n",
" które realizują zadania niewymagające pełnej personalizacji.\n",
"\n",
"Zadanie\n",
"-------\n",
"Zaimplementować program typu ELIZA prowadzący konwersację w języku polskim.\n",
"Kod źródłowy umieścić w gałęzi `chatbot` repozytorium projektowego.\n",
"\n",
"Literatura\n",
"----------\n",
" 1. Dan Jurafsky and James H. Martin, *Speech and Language Processing*, 3rd ed. draft,\n",
"\tch. 15, Chatbots and Dialogue Systems,\n",
" https://web.stanford.edu/~jurafsky/slp3/15.pdf\n",
" data dostępu: 10 marca 2023.\n",
"\n",
" 2. J. Weizenbaum, ELIZA - A Computer Program For the Study of Natural Language Communication\n",
" Between Man And Machine Communications of the ACM, Vol 9, No 1, January 1966,\n",
" https://cse.buffalo.edu/~rapaport/572/S02/weizenbaum.eliza.1966.pdf\n",
" data dostępu: 10 marca 2023.\n",
"\n",
" 3. Bobrow, D. G., Kaplan, R. M., Kay, M., Norman, D. A., Thompson, H., and Winograd, T. (1977).\n",
" GUS, A frame driven dialog system. Artificial Intelligence 8, 155173."
]
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
"main_language": "python",
"notebook_metadata_filter": "-all"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,120 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "136728fe",
"metadata": {},
"source": [
"Analiza Wymagań\n",
"===============\n",
"\n",
"Projektowanie systemów dialogowych\n",
"----------------------------------\n",
"\n",
"Projektowanie systemu dialogowego jest procesem [zorientowanym na użytkownika](https://en.wikipedia.org/wiki/User-centered_design) <cite>(por. Jurafsky and Martin, 2020; Gould and Lewis, 1985)</cite>, który wymaga:\n",
"\n",
" 1. Analizy tego kim jest docelowy użytkownik systemu i na czym polegają zadania (cele), które chce on zrealizować.\n",
"\n",
" 2. Budowy symulatorów i prototypów.\n",
"\n",
" 3. Przyrostowego rozwoju i testowania z udziałem użytkowników.\n",
"\n",
"Punktami 2 i 3 zajmiemy się na kolejnych zajęciach. Tematem dzisiejszych zajęć jest punkt 1.\n",
"\n",
"Zadania\n",
"-------\n",
" 1. Wybrać temat projektu.\n",
"\n",
" 2. Zidentyfikować podstawowe zadania (cele), które użytkownik chce zrealizować korzystając z systemu.\n",
"\n",
" 3. Dla każdego zidentyfikowanego zadania napisać przykładowy dialog, w toku którego system zrealizuje cel użytkownika.\n",
"\n",
" 4. Dialogi zapisać w dokumencie `requirements-analysis.md` i umieścić w katalogu głównym gałęzi\n",
" `master` repozytorium projektowego. Dokument proszę przygotować korzystając z\n",
" [szablonu](requirements-analysis.md).\n",
"\n",
"Tematy projektów\n",
"----------------\n",
"\n",
"### Umawianie wizyt u lekarza\n",
"\n",
"Celem projektu jest zbudowanie agenta dialogowego, który ma za zadanie umówić rozmówcę do lekarza pierwszego kontaktu, chyba że system uzna że konieczna jest wizyta u specjalisty.\n",
"Sytuacja komunikacyjna przypomina obsługę pacjenta dzwoniącego do przychodni i chcącego umówić się na wizytę. Podczas rozmowy system ma za zadanie rozpoznać potrzebę dzwoniącego, w szczególności:\n",
"\n",
" - Czy chce umówić się do lekarza pierwszego kontaktu, czy do specjalisty?\n",
"\n",
" - Czy pacjent jest pewny do jakiego specjalisty system powinien zadać pytania kontrolne dotyczące stanu zdrowia, aby system mógł wybrać odpowiedniego specjalistę\n",
"\n",
" - Czy objawy wskazują na bardzo pilną potrzebę umówienia wizyty?\n",
"\n",
"### Zamawianie produktów w sklepie\n",
"\n",
"Celem projektu jest zbudowanie agenta dialogowego, który pozwoli (np. jadąc samochodem) zrobić zakupy w sklepie spożywczym/wielobranżowym.\n",
"System pozwala na wybranie produktów z listy, bądź takich wskazanych przez rozmówcę (np. na pytanie „Jakie sery pleśniowe masz w ofercie?” system wylicza produkty, bądź prosi o sprecyzowanie oczekiwań, gdy lista jest za duża).\n",
"Podczas rozmowy system ma za zadanie rozpoznać potrzebę dzwoniącego, w szczególności:\n",
"\n",
" - Jeżeli danego produktu nie ma w ofercie, to proponuje inny z tej samej kategorii.\n",
"\n",
" - System stara się zachęcić klienta do zakupów przez komunikaty z propozycją zniżek (np. „Jeżeli jesteś wegetarianinem, mamy dzisiaj rabaty na produkty wegetariańskie”). Komunikaty te powinny pojawiać się na różnych etapach dialogu (na początku/w trakcie/pod koniec).\n",
"\n",
"Na koniec zakupów system pyta się o numer karty rabatowej i „ufa” rozmówcy, gdy w danym momencie nie może tego numeru karty rabatowej sprawdzić.\n",
"\n",
"### Przyjmowania zamówień w restauracji\n",
"\n",
"Celem projektu jest zbudowanie agenta dialogowego przyjmującego zamówienia w restauracji.\n",
"System powinien rekomendować pozycje z menu na podstawie preferencji klienta oraz udzielać podstawowych informacji dotyczących zamówionego posiłków.\n",
"Agent powinien wykazywać elastyczność, adaptując się do potrzeb klienta, np. umożliwiać pominięcie lub dodanie pewnych składników do posiłku.\n",
"\n",
"### Rezerwacja pokoi hotelowych\n",
"Celem projektu jest zbudowanie agenta dialogowego pozwalającego rezerwować pokoje hotelowe (w wielu hotelach jednocześnie).\n",
"Oprócz podstawowych danych takich jak termin czy liczba osób system powinien również uwzględniać inne oczekiwania klienta (darmowe wifi, odległość od centrum miasta, przedział cenowy, liczbę gwiazdek itp.), proponując odpowiednie obiekty.\n",
"Agent powinien również umożliwiać odwołanie rezerwacji oraz zmianę jej parametrów."
]
},
{
"cell_type": "markdown",
"id": "a26eda52",
"metadata": {},
"source": [
"Metody pozyskiwania danych do budowy systemów dialogowych\n",
"---------------------------------------------------------\n",
" 1. Eksperymenty typu Czarnoksiężnik z Oz (temat naszych następnych zajęć).\n",
"\n",
" 2. Zapisy rozmów z operatorami infolinii (RODO!).\n",
"\n",
" 3. Dokumenty typu FAQ.\n",
"\n",
" 3. Dialogi z innych, zbliżonych dziedzin.\n",
"\n",
" 4. Dane dialogowe ogólnego przeznaczenia:\n",
"\n",
" - napisy filmowe: [OpenSubtitles](https://opus.nlpl.eu/OpenSubtitles-v2018.php)\n",
"\n",
" - logi z IRCa: [Ubuntu Dialogue Corpus](https://github.com/rkadlec/ubuntu-ranking-dataset-creator)\n",
"\n",
" - dyskusje na twitterze.\n",
"\n",
"Literatura\n",
"----------\n",
" 1. Dan Jurafsky and James H. Martin, *Speech and Language Processing*, 3rd ed. draft,\n",
"\tch. 15, Chatbots and Dialogue Systems,\n",
" https://web.stanford.edu/~jurafsky/slp3/15.pdf,\n",
" data dostępu: 10 marca 2023.\n",
"\n",
" 2. Gould, J. D. and Lewis, C. (1985). Designing for usability:\n",
" Key principles and what designers think. CACM 28(3), 300311.\n",
" http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.8860&rep=rep1&type=pdf,\n",
" data dostępu: 10 marca 2023."
]
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
"main_language": "python",
"notebook_metadata_filter": "-all"
}
},
"nbformat": 4,
"nbformat_minor": 5
}