diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d973327 --- /dev/null +++ b/.gitignore @@ -0,0 +1,214 @@ +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +.idea \ No newline at end of file diff --git a/cheddar.py b/cheddar.py deleted file mode 100644 index 176e510..0000000 --- a/cheddar.py +++ /dev/null @@ -1,134 +0,0 @@ -import re -import random - - -class Elizabeth: - questions = ((r'Potrzebuję (.*)', - ('Czemu potrzebujesz %1?', - 'Naprawdę pomogłoby, gdybyś miał %1?', - 'Czy aby na pewno potrzebujesz %1?')), - (r'Jestem (.*)', - ('Czy przyszedłeś dziś do mnie, ponieważ jesteś %1?', - 'Jak długo jesteś %1?', - 'Jak czujesz się z byciem %1?')), - ('Jesteś (.*)', - ('Czemu to ważne, że jestem %1?', - 'Chciałbyś, abym nie był %1?', - 'Mozę to ty uważasz, że jestem %1.', - 'Mogę być %1, co o tym sądzisz?')), - (r'Co (.*)', - ('Czemu pytasz?', - 'W jaki sposób odpowiedź na to pytania by ci pomogą?', - 'A co ty myślisz?')), - (r'Jak (.*)', - ('A jak myślisz?', - 'Może sam odpowiedz sobie na to pytanie', - "Jakie jest twoje PRAWDZIWE pytanie")), - (r'Ponieważ (.*)', - ('Czy to na pewno prawdziwy powód?', - 'Jakie inne powody przychodzą ci na myśl?', - 'Skoro %1, to jakie inne powody są prawdziwe?')), - (r'(.*) przepraszam (.*)', - ('Nie masz za co przepraszać', - 'Jakie uczucia masz w sobie, gdy przepraszasz?')), - (r'Myślę, że (.*)', - ('Jesteś niepewny co do %1?', 'Naprawdę tak myślisz?', "Ale nie jesteś pewien czy %1?")), - (r'Dlaczego (.*)', - ("Czemu to ty nie powiesz mi dlaczego %1?", 'CZemu myślisz, że %1?')), - (r'Chcę (.*)', - ('Co to by dla ciebie oznaczało, gdybyś dostał %1?', - 'Czemu chcesz %1?', - 'Co byś zrobił, gdybyś dostał %1?', - 'Gdybyś dostał %1, to co byś zrobił?')), - (r'(.*)matka(.*)', - ('Powiedz mi więcej o swojej matce.', - 'Jak wyglądałą relacja z twoją matką?', - 'Jakie są twoje uczucia dziś?')), - (r'(.*) ojciec(.*)', - ('Powiedz mi więcej o swoim ojcu.', - 'Jak twój ojciec sprawia, że się czujesz?' - )), - - (r'(.*)\\?', - ('Być może odpowiedź jest w tobie?', - 'Czemu to TY nie powiesz MI?', - "Czemu o to pytasz?")), - - (r'(.*)', - ('Proszę, powiedz mi więcej', - "Zmieńmy temat... opowiedz mi o swojej rodzinie.", - 'Możesz rozwinąć?', - 'Możesz powiedzieć mi więcej o %1?', - 'Rozumiem.', - 'To bardzo interesujące', - 'Rozumiem.. i co Ci to mówi?', - 'Jakie uczucia to w tobie wywołuje?', - 'Jak się czujesz, mówiąc to?')), - - ( - r"Nie moge (.*)", - ( - "Skad wiesz, ze nie mozesz %1?", - "Byc moze moglbys %1, gdybys sprobowal.", - "Co musialbys zrobic zeby %1?", - )), - ( - r"Jestem (.*)", - ( - "Czy rozmawiasz ze mna poniewaz jestes %1?", - "Od jak dawna jestes %1?", - "Jak sie czujesz z tym, ze jestes %1?", - "Jak sie czujesz bedac %1?", - "Dlaczego mowisz mi, ze jestes %1?", - "Dlaczego uwazasz, ze jestes %1?", - )), - ( - r"Czy jestes (.*)", - ( - "Dlaczego ma to znaczenie czy jestem %1?", - "Czy wolabys gdybym nie byl %1?", - "Byc moze uwazasz, ze jestem %1.", - "Byc moze jestem %1, co o tym sadzisz?", - )), - ( - r"Co (.*)", - ( - "Dlaczego pytasz?", - "W jaki sposob pomoglaby ci odpowiedz na to pytanie?", - "Co o tym myslisz?", - )), - ( - r"Jak (.*)", - ( - "Jak sadzisz?", - "Byc moze potrafisz odpowiedziec na swoje wlasne pytanie.", - "O co tak naprawde pytasz?", - )), - ( - r"Poniewaz (.*)", - ( - "Czy to jest prawdziwy powod?", - "Jakie inne powody przychodza Ci na mysl?", - "Czy ten powod odnosi sie do czegos innego?", - "Jesli %1, to co jeszcze musi byc prawda?", - )) - ) - - def ask(self, question): - question = question.lower() - for i in self.questions: - result = re.match(i[0], question) - if result: - print(random.choice(i[1])) - return - - -ela = Elizabeth() - -print("Cześć, o czym chcesz porozmawiać?") -while True: - question = input().lower() - if question == "cześć" or question == "do widzenia": - print("Do widzenia") - break - ela.ask(question) diff --git a/lab/01-rodzaje-systemow-dialogowych.ipynb b/lab/01-rodzaje-systemow-dialogowych.ipynb new file mode 100644 index 0000000..0a30941 --- /dev/null +++ b/lab/01-rodzaje-systemow-dialogowych.ipynb @@ -0,0 +1,137 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Systemy Dialogowe

\n", + "

1. Rodzaje system\u00f3w dialogowych [laboratoria]

\n", + "

Marek Kubis (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rodzaje system\u00f3w dialogowych\n", + "============================\n", + "\n", + "Wprowadzenie\n", + "------------\n", + "\n", + "Systemy dialogowe mo\u017cna zgrubnie podzieli\u0107 na dwie kategorie (Jurafsky and Martin, 2020):\n", + "\n", + " 1. chatboty,\n", + "\n", + " 2. systemy ukierunkowane na wykonywanie zada\u0144 (ang. task-oriented dialogue agents).\n", + "\n", + "### Chatboty\n", + "Przeznaczeniem chatbota\n", + "jest prowadzenie swobodnej dyskusji z u\u017cytkownikiem na dowolny (nienarzucony z g\u00f3ry) temat.\n", + "Konwersacja z chatbotem nie s\u0142u\u017cy wype\u0142nieniu \u017cadnego z g\u00f3ry okre\u015blonego zadania.\n", + "\n", + "Klasycznym przyk\u0142adem chatbota jest [ELIZA](https://en.wikipedia.org/wiki/ELIZA) (Weizenbaum, 1966).\n", + "Program ten,\n", + "udaj\u0105c psychoanalityka, mia\u0142 zademonstrowa\u0107 potencja\u0142 tkwi\u0105cy w komunikacji cz\u0142owieka z komputerem w\n", + "j\u0119zyku naturalnym. Jego pythonow\u0105 implementacj\u0119 znajdziemy w pakiecie [nltk](www.nltk.org)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from nltk.chat import eliza\n", + "eliza.demo()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ELIZA sk\u0142ada si\u0119 ze zbioru wzorc\u00f3w, kt\u00f3re s\u0105 dopasowywane do wypowiedzi u\u017cytkownika.\n", + "Z ka\u017cdym wzorcem jest powi\u0105zany zestaw szablon\u00f3w, kt\u00f3re s\u0105 wykorzystywane do przygotowania\n", + "odpowiedzi dla u\u017cytkownika." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "eliza.pairs[:3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Systemy dialogowe ukierunkowane na wykonywanie zada\u0144\n", + "Systemy ukierunkowane na wykonywanie zada\u0144 b\u0119d\u0105 stanowi\u0107 g\u0142\u00f3wny temat tego przedmiotu.\n", + "Dla uproszenia b\u0119dziemy je nazywa\u0107 *agentami dialogowymi*.\n", + "\n", + "Pierwotnie agenty dialogowe by\u0142y ukierunkowywane na jedno, \u015bci\u015ble okre\u015blone zadanie.\n", + "Systemem tego typu by\u0142 GUS (Bobrow, 1977) umo\u017cliwiaj\u0105cy planowanie podr\u00f3\u017cy.\n", + "\n", + "Obecnie zar\u00f3wno w praktyce badawczej jak i w zastosowaniach przemys\u0142owych rozwijane s\u0105 systemy\n", + "ukierunkowane na wykonywanie wielu zada\u0144 r\u00f3wnocze\u015bnie.\n", + "*Inteligentne asystenty osobiste* (ang. *IPA*, *Intelligent Personal Assistant*) takie, jak:\n", + "\n", + " - [Alexa](https://developer.amazon.com/en-US/alexa),\n", + " - [Bixby](http://bixby.samsung.com/),\n", + " - [Google Assistant](https://assistant.google.com/),\n", + " - [Siri](https://www.apple.com/siri/)\n", + "\n", + "realizuj\u0105 wiele cel\u00f3w u\u017cytkownika, do kt\u00f3rych nale\u017c\u0105 m.in.:\n", + "\n", + " - wyszukiwanie kontakt\u00f3w w ksi\u0105\u017cce adresowej,\n", + " - zarz\u0105dzanie kalendarzem,\n", + " - zmiana ustawie\u0144 telefonu.\n", + "\n", + "Zadanie\n", + "-------\n", + "Zaimplementowa\u0107 program typu ELIZA prowadz\u0105cy konwersacj\u0119 w j\u0119zyku polskim.\n", + "Kod \u017ar\u00f3d\u0142owy umie\u015bci\u0107 w ga\u0142\u0119zi `chatbot` repozytorium projektowego.\n", + "\n", + "Literatura\n", + "----------\n", + " 1. Dan Jurafsky and James H. Martin, *Speech and Language Processing*, 3rd ed. draft,\n", + "\tch. 24, Chatbots and Dialogue Systems,\n", + " https://web.stanford.edu/~jurafsky/slp3/24.pdf\n", + " data dost\u0119pu: 14 marca 2021.\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\u0119pu: 14 marca 2021.\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\u2013173." + ] + } + ], + "metadata": { + "jupytext": { + "cell_metadata_filter": "-all", + "main_language": "python", + "notebook_metadata_filter": "-all" + }, + "author": "Marek Kubis", + "email": "mkubis@amu.edu.pl", + "lang": "pl", + "subtitle": "1.Rodzaje system\u00f3w dialogowych[laboratoria]", + "title": "Systemy Dialogowe", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/lab/02-analiza-wymagan.ipynb b/lab/02-analiza-wymagan.ipynb new file mode 100644 index 0000000..9518d54 --- /dev/null +++ b/lab/02-analiza-wymagan.ipynb @@ -0,0 +1,122 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Systemy Dialogowe

\n", + "

2. Analiza wymaga\u0144 [laboratoria]

\n", + "

Marek Kubis (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Analiza Wymaga\u0144\n", + "===============\n", + "\n", + "Projektowanie system\u00f3w dialogowych\n", + "----------------------------------\n", + "\n", + "Projektowanie systemu dialogowego jest procesem [zorientowanym na u\u017cytkownika](https://en.wikipedia.org/wiki/User-centered_design) (por. Jurafsky and Martin, 2020; Gould and Lewis, 1985), kt\u00f3ry wymaga:\n", + "\n", + " 1. Analizy tego kim jest docelowy u\u017cytkownik systemu i na czym polegaj\u0105 zadania (cele), kt\u00f3re chce on zrealizowa\u0107.\n", + "\n", + " 2. Budowy symulator\u00f3w i prototyp\u00f3w.\n", + "\n", + " 3. Przyrostowego rozwoju i testowania z udzia\u0142em u\u017cytkownik\u00f3w.\n", + "\n", + "Punktami 2 i 3 zajmiemy si\u0119 na kolejnych zaj\u0119ciach. Tematem dzisiejszych zaj\u0119\u0107 jest punkt 1.\n", + "\n", + "Zadania\n", + "-------\n", + " 1. Wybra\u0107 temat projektu.\n", + "\n", + " 2. Zidentyfikowa\u0107 podstawowe zadania (cele), kt\u00f3re u\u017cytkownik chce zrealizowa\u0107 korzystaj\u0105c z systemu.\n", + "\n", + " 3. Dla ka\u017cdego zidentyfikowanego zadania napisa\u0107 przyk\u0142adowy dialog, w toku kt\u00f3rego system zrealizuje cel u\u017cytkownika.\n", + "\n", + " 4. Dialogi zapisa\u0107 w dokumencie `requirements-analysis.md` i umie\u015bci\u0107 w katalogu g\u0142\u00f3wnym ga\u0142\u0119zi\n", + " `master` repozytorium projektowego. Dokument prosz\u0119 przygotowa\u0107 korzystaj\u0105c z\n", + " [szablonu](requirements-analysis.md).\n", + "\n", + "Przyk\u0142adowe tematy projekt\u00f3w\n", + "----------------------------\n", + "\n", + " - System przyjmowania zam\u00f3wie\u0144 w restauracji\n", + "\n", + " - System rezerwacji pokoi hotelowych\n", + "\n", + " - System rezerwacji wizyt u lekarza\n", + "\n", + " - System sprzeda\u017cy bilet\u00f3w kinowych\n", + "\n", + " - System sprzeda\u017cy bilet\u00f3w kolejowych\n", + "\n", + " - System obs\u0142ugi wypo\u017cycze\u0144 w bibliotece\n", + "\n", + " - Asystent zarz\u0105dzaj\u0105cy kalendarzem spotka\u0144\n", + "\n", + " - Asystent wykonuj\u0105cy podstawowe czynno\u015bci w systemie operacyjnym" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Metody pozyskiwania danych do budowy system\u00f3w dialogowych\n", + "---------------------------------------------------------\n", + " 1. Eksperymenty typu Czarnoksi\u0119\u017cnik z Oz (temat naszych nast\u0119pnych zaj\u0119\u0107).\n", + "\n", + " 2. Zapisy rozm\u00f3w z operatorami infolinii (RODO!).\n", + "\n", + " 3. Dokumenty typu FAQ.\n", + "\n", + " 3. Dialogi z innych, zbli\u017conych dziedzin.\n", + "\n", + " 4. Dane dialogowe og\u00f3lnego 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. 24, Chatbots and Dialogue Systems,\n", + " https://web.stanford.edu/~jurafsky/slp3/24.pdf,\n", + " data dost\u0119pu: 14 lutego 2021.\n", + "\n", + " 2. Gould, J. D. and Lewis, C. (1985). Designing for usability:\n", + " Key principles and what designers think. CACM 28(3), 300\u2013311.\n", + " http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.8860&rep=rep1&type=pdf,\n", + " data dost\u0119pu: 21 lutego 2021." + ] + } + ], + "metadata": { + "jupytext": { + "cell_metadata_filter": "-all", + "main_language": "python", + "notebook_metadata_filter": "-all" + }, + "author": "Marek Kubis", + "email": "mkubis@amu.edu.pl", + "lang": "pl", + "subtitle": "2.Analiza wymaga\u0144[laboratoria]", + "title": "Systemy Dialogowe", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/tasks/zad1/cheddar.py b/tasks/zad1/cheddar.py new file mode 100644 index 0000000..c8c845a --- /dev/null +++ b/tasks/zad1/cheddar.py @@ -0,0 +1,8 @@ +from nltk.chat.util import Chat +import consts as consts + +cheddy = Chat(consts.questions, reflections=consts.reflections) +print("\nNapisz 'quit' aby zakonczyc.") +print("-" * 70) +print("Witaj. Co chcesz mi powiedzieć?") +cheddy.converse() diff --git a/tasks/zad1/consts.py b/tasks/zad1/consts.py new file mode 100644 index 0000000..0b37d87 --- /dev/null +++ b/tasks/zad1/consts.py @@ -0,0 +1,117 @@ +# questions and reflections for cheddar chatbot + +questions = [(r"Potrzebuję (.*)", + ('Czemu potrzebujesz %1?', + 'Czy aby na pewno potrzebujesz %1?')), + (r'Jestem (.*)', + ('Czy przyszedłeś dziś do mnie, ponieważ jesteś %1?', + 'Jak długo jesteś %1?', + 'Jak czujesz się z byciem %1?')), + (r'Jesteś (.*)', + ('Czemu to ważne, że jestem %1?', + 'Chciałbyś, abym nie był %1?', + 'Możę to ty uważasz, że jestem %1.', + 'Mogę być %1, co o tym sądzisz?', + "Czy rozmawiasz że mną, ponieważ jesteś %1?", + "Od jak dawna jesteś %1?", + "Dlaczego mówisz mi, że jesteś %1?", + "Dlaczego uważasz, że jesteś %1?" + )), + (r'Co (.*)', + ('Czemu pytasz?', + 'W jaki sposób odpowiedź na to pytania by ci pomogła?', + 'A co ty myślisz?')), + (r'Jak (.*)', + ('A jak myślisz?', + 'Może sam odpowiedz sobie na to pytanie', + "Jakie jest twoje PRAWDZIWE pytanie")), + (r'Ponieważ (.*)', + ('Czy to na pewno prawdziwy powód?', + 'Jakie inne powody przychodzą ci na myśl?', + 'Skoro %1, to jakie inne powody są prawdziwe?')), + (r'(.*) przepraszam (.*)', + ('Nie masz za co przepraszać', + 'Jakie uczucia masz w sobie, gdy przepraszasz?')), + (r'Myślę, że (.*)', + ('Jesteś niepewny co do tego?', 'Naprawdę tak myślisz?', "Ale nie jesteś pewien?")), + (r'Dlaczego (.*)', + ("Czemu to ty nie powiesz mi dlaczego %1?", 'Czemu myślisz, że %1?')), + (r'Chcę (.*)', + ('Co to by dla ciebie oznaczało, gdybyś to dostał?', + 'Czemu chcesz %1?', + 'Co byś zrobił, gdybyś dostał %1?', + 'Gdybyś dostał %1, to co byś zrobił?')), + (r'(.*)matka(.*)', + ('Powiedz mi więcej o swojej matce.', + 'Jak wyglądałą relacja z twoją matką?', + 'Jakie są twoje uczucia dziś?')), + (r'(.*) ojciec(.*)', + ('Powiedz mi więcej o swoim ojcu.', + 'Jak twój ojciec sprawia, że się czujesz?')), + (r"Nie mogę (.*)", + ("Skąd wiesz, że nie możesz %1?", + "Byc może mogłbyś %1, gdybyś spróbował.", + "Co musialbyś zrobić żeby %1?")), + (r"Czy jesteś (.*)", + ("Dlaczego ma to znaczenie czy jestem %1?", + "Czy wolabys gdybym nie był %1?", + "Byc moze uważasz, że jestem %1.", + "Byc moze jestem %1, co o tym sadzisz?",)), + (r"Co (.*)", + ("Dlaczego pytasz?", + "W jaki sposob pomogłaby ci odpowiedz na to pytanie?", + "Co o tym myślisz?",)), + (r"Jak (.*)", + ("Jak sadzisz?", + "Byc moze potrafisz odpowiedziec na swoje wlasne pytanie.", + "O co tak naprawde pytasz?",)), + (r"Poniewaz (.*)", + ("Czy to jest prawdziwy powod?", + "Jakie inne powody przychodzą Ci na myśl?", + "Czy ten powod odnosibędącdo czegoś innego?", + "Jesli %1, to co jeszcze musi byc prawda?", + )), + (r'quit', + ('Do usłyszenia!', + 'Miłego dnia!',)), + (r'(.*)\?', + ('Być może odpowiedź jest w tobie?', + 'Czemu to TY nie powiesz MI?', + "Czemu o to pytasz?")), + (r'(.*)', + ('Proszę, powiedz mi więcej', + "Zmieńmy temat... opowiedz mi o swojej rodzinie.", + 'Możesz rozwinąć?', + 'Możesz powiedzieć mi więcej o %1?', + 'Rozumiem.', + 'To bardzo interesujące', + 'Rozumiem.. i co Ci to mówi?', + 'Jakie uczucia to w tobie wywołuje?', + 'Jak się czujesz, mówiąc to?')), + ] + +reflections = { + "jestem": "jesteś", + "byłem": "byłeś", + "byłam": "byłaś", + "ja": "ty", + "chciałbym": "chciałbyś", + "chciałabym": "chciałabyś", + "mam": "masz", + "będę": "będziesz", + "mój": "twój", + "twoja": "moja", + "moim": "twoim", + "mojego": "twojego", + "jesteś": "jestem", + "byleś": "byłem", + "masz": "mam", + "będziesz": "będę", + "twój": "mój", + "twoim": "moim", + "twojego": "mojego", + "ty": "ja", + "nasz": "wasz", + "mogę": "możesz", + "mnie": "cię" + } \ No newline at end of file diff --git a/tasks/zad2/requirements-analysis.md b/tasks/zad2/requirements-analysis.md new file mode 100644 index 0000000..5a7fa6e --- /dev/null +++ b/tasks/zad2/requirements-analysis.md @@ -0,0 +1,124 @@ +Nachos dialogue system +============== + +Zadanie 1: Dokonanie rezerwacji +-------------------------------- + +*system:* Witamy w systemie kinowym Nachos, jak mogę Ci pomóc? + +*user:* Dzień dobry, chciałbym dokonać rezerwacji + +*system:* Jaki film Cię interesuje? + +*user:* Alicja w Krainie Czarów? + +*system:* Film nie znajduje się w repertuarze, podaj inny tytuł. + +*user:* Batman + +*system:* Jaki termin Cię interesuje? + +*user:* Dzisiaj, popołudniu? + +*system:* Dostępne godziny to: 13:30, 15:20, 17:45 + +*user:* 15:20 + +*system:* Ile potrzebujesz biletów? + +*user:* 2 + +*system:* Gdzie chciałbyś usiąść? + +*user:* Z tyłu, na środku + +*system:* Zostały Ci przydzielone miejsca H15, H16, numer Twojej rezerwacji to 123431. + + +Zadanie 2: Anulowanie rezerwacji +-------------------------------- + +*system:* Witamy w systemie kinowym Nachos. + +*user:* Dzień dobry, chciałbym anulować rezerwację. + +*system:* Proszę podać numer rezerwacji. + +*user:* 123431 + +*system:* Rezerwacja nr 123431 w dniu 16.03 na godzinę 15:20 zostałą anulowana. + +*user:* Dziękuję <3 + +Zadanie 3: Podawanie aktualnego repertuaru +-------------------------- + +*system:* Witamy w systemie kinowym Nachos. + +*user:* Chciałbym dowiedzieć się, co jest teraz grane. + +*system:* Obecnie w repertuarze znajdują się: Batman, To nie wypanda, Inni ludzie, Ambulans, Uncharted, Ups 2, Nasze magiczne Encanto. + +Zadanie 4: Zmiana terminu rezerwacji +-------------------------- + +*system:* Witamy w systemie kinowym Nachos. + +*user:* Chciałbym zmienić termin rezerwacji + +*system:* Proszę o podanie numeru rezerwacji. + +*user:* 123431 + +*system:* Proszę podać nowy termin rezerwacji. + +*user:* środa 18:30 + +*system:* Zmiana została dokonana. + + +Zadanie 5: Podanie oferty gastronomicznej +-------------------------- + +*system:* Witamy w systemie kinowym Nachos. + +*user:* Co można zakupić w barze? + +*system:* W barze dostępne są obecnie: zestaw z solonym, słodkim lub maślany popcornem, wraz z colą/fantą/sprite lub zestaw *Nachosów* z wybranym dipem. + + +Zadanie 6: Pytanie o dostępne metody płatności +-------------------------- + +*system:* Witamy w systemie kinowym Nachos. + +*user:* Czy można płacić kartą? + +*system:* Możliwymi metodami płatności przy kasie są: gotówka, karta płatnicza, kod BLIK, przelew bankowy. Na stronie zakupu można dokonać kodem blikem, przelewem bankowym a także PayU. + + + +Zadanie 7: Pytanie o nadchodzące premiery +-------------------------- + +*system:* Witamy w systemie kinowym Nachos. + +*user:* Jakie filmy wejdą do kin niedługo? + +*system:* W naszym repetuarze będą obecne: Morbius - od 1 kwietnia, Zaginione miasto - od 1 kwietnia, Fanastyczne zwierzęta: tajemnice Dumbledorea - od 8 kwietnia, doktor strange w multiwersum obłędu - od 6 maja. + + +Zadanie 8: Podawanie aktualnego repertuaru z podziałem na kategorię +-------------------------- + +*system:* Witamy w systemie kinowym Nachos. + +*user:* Czy puszczane są teraz jakieś komedie romantyczne? + +*system:* Obecnie w repertuarze w podanej kategorii znajdują się: Najgorszy człowiek na świecie. + +*user:* A czy są jakieś komedie? + +*system:* Obecnie w repertuarze w podanej kategorii znajdują się: Pies oraz To nie wypanda. + +