add notebooks
This commit is contained in:
parent
bb5222fcc3
commit
90df9097d0
81
notebooks/00-wymagania.ipynb
Normal file
81
notebooks/00-wymagania.ipynb
Normal 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
|
||||
}
|
125
notebooks/01-rodzaje-systemow-dialogowych.ipynb
Normal file
125
notebooks/01-rodzaje-systemow-dialogowych.ipynb
Normal 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, 155–173."
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"jupytext": {
|
||||
"cell_metadata_filter": "-all",
|
||||
"main_language": "python",
|
||||
"notebook_metadata_filter": "-all"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
120
notebooks/02-analiza-wymagan.ipynb
Normal file
120
notebooks/02-analiza-wymagan.ipynb
Normal 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), 300–311.\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
|
||||
}
|
Loading…
Reference in New Issue
Block a user