diff --git a/notebooks/00-wymagania.ipynb b/notebooks/00-wymagania.ipynb
new file mode 100644
index 0000000..dd821a1
--- /dev/null
+++ b/notebooks/00-wymagania.ipynb
@@ -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 .\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
+}
diff --git a/notebooks/01-rodzaje-systemow-dialogowych.ipynb b/notebooks/01-rodzaje-systemow-dialogowych.ipynb
new file mode 100644
index 0000000..f267a05
--- /dev/null
+++ b/notebooks/01-rodzaje-systemow-dialogowych.ipynb
@@ -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 (Jurafsky and Martin, 2020):\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) (Weizenbaum, 1966).\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 (Bobrow, 1977) 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
+}
diff --git a/notebooks/02-analiza-wymagan.ipynb b/notebooks/02-analiza-wymagan.ipynb
new file mode 100644
index 0000000..b8d936f
--- /dev/null
+++ b/notebooks/02-analiza-wymagan.ipynb
@@ -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) (por. Jurafsky and Martin, 2020; Gould and Lewis, 1985), 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
+}