commit db6818d3961d92c65960eb9941d62bf09f9c6c2f Author: Jakub Adamski Date: Wed Mar 29 18:36:30 2023 +0200 SE1, SE2, SE4 diff --git a/SE1.ipynb b/SE1.ipynb new file mode 100644 index 0000000..f2f42b2 --- /dev/null +++ b/SE1.ipynb @@ -0,0 +1,1222 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "![baner aitech](../grafiki/SE1/logo.jpg \"baner\") \n", + "\n", + "***\n", + "\n", + "# Sztuczna empatia 1\n", + "## Co to w ogóle jest empatia?\n", + "### Joanna Siwek\n", + "\n", + "***\n", + "\n", + "### Spis treści\n", + "1. [Wstęp](#introduction)\n", + "2. [Podstawowe pojęcia](#paragraph1)\n", + "3. [Empatia kognitywna](#paragraph2)\n", + "4. [Neuronauka](#paragraph3)\n", + "5. [Skrócony test ilorazu empatii](#paragraph4)\n", + "6. [Podsumowanie](#paragraph5)\n", + "\n", + "***\n", + "\n", + "![baner ue](../grafiki/SE1/ae_ue.jpg \"baner\") " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets as widgets\n", + "from IPython.display import display\n", + "from IPython.display import HTML\n", + "from IPython.display import clear_output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wstęp \n", + "
\n", + "
Sztuczna inteligencja jest jednym z prężniej rozwijających się dziś działów informatyki. Wokół niej na bieżąco tworzy się wiele kontrowersji, szczególnie tych związanych z takzwaną \"doskonałą\" sztuczną inteligencją, czyli SI, która potrafiłaby przeprowadzać procesy myślowe co najmniej na takim samym poziomie jak człowiek. Idea maszyny zdolnej do samodzielnego myślenia, decydowania i uczenia się, a równocześnie mającej dostęp do olbrzymich ilości danych i możliwości przetwarzania i zapamiętywania, jawi się sporej ilości osób jako zagrożenie, szczególnie ze względu na negatywne cechy psychologiczne, które taka maszyna mogłaby wykazywać. W związku z tym pojawia się pytanie o emocje i człowieczeństwo sztucznej inteligencji.
\n", + "
\n", + "
Ogólnie w psychologii uważa się, iż jednym z czynników, który steruje zdrowym mózgiem i jest odpowiedzialny za interakcje społeczne jest szeroko rozumiana empatia. Powstaje więc zagadnienie implementacji empatii jako składowej sztucznej inteligencji.
\n", + " \n", + "
\n", + " \n", + " Pojęcie empatii jest używane w odniesieniu do szerokiego zakresu zdolności psychologicznych, które są uważane za kluczowe dla pojmowania ludzi jako istot społecznych. Pozwalają one jednostce dowiedzieć się co myślą i czują inni, angażować się z nimi emocjonalnie, dzielić się swoimi przemyśleniami i uczuciami oraz dbać o ich dobre samopoczucie [6].\n", + " \n", + "
\n", + "\n", + "
Innymi słowy, empatia odpowiada za zrozumienie stanu wewnętrznego - zarówno swojego, jak i drugiego człowieka. Takie zrozumienie tego, co odczuwa druga strona (współodczuwanie - org. Einfuhlung), pozwala na przyjęcie punktu widzenia rozmówcy, a tym samym na przeniesienie własnej perspektywy i dostosowaie własnych odczuć do sytuacji drugiej osoby. Ciekawostką jest to, iż empatia jest dość nowym pojęciem, które pojawiło się dopiero w okolicach XIX wieku. W swojej podstawowej formie jako empatię rozumiano takie współodczuwanie, które powodowało reakcję/działanie u współodczuwającego. Nowoczesna definicja empatii nie wymaga działania - można łączyć się z kimś empatycznie, ale odczuć tych nie uzewnętrzniać badź też nawet reagować przeciwnie niż osoba, z którą współodczuwamy.
\n", + "
\n", + "
Dziedziną, która zajmuje się wykorzystywaniem emocji i aspektów społecznych do rozwoju sztucznej inteligencji jest sztuczna empatia. Znajduje się ona na pograniczu informatyki, neuronauki oraz psychologii. Wykorzystuje odkryte w medycynie neuromechanizmy modelowane metodami informatycznymi w celu wzbogacenia sztucznej empatii o aspekty psychologiczne, właściwe człowiekowi.
\n", + " \n", + "
\n", + " \n", + " Sztuczna empatia to zdolność modelu (nie będącego człowiekiem) do przewidzenia stanu wewnętrznego człowieka (np. poznawczego, emocjonalnego, fizycznego), na podstawie emitowanych przez ową jednostkę sygnałów (np. mimiki, głosu, gestykulacji) lub też do przewidzenia reakcji (m.in. stanu wewnętrznego) tej jednostki, w wypadku gdy byłaby ona wystawiona na działanie czynnika stymulującego (np. mimiki, głosu, gestykulacji, grafiki, muzyki itd.)[7].\n", + "\n", + "
\n", + " \n", + "
Istnieje jeszcze drugie zastosowanie sztucznej empatii. Poprzez obserwację dzieci podczas pierwszych miesięcy życia, naukowcy odkryli, w jaki sposób postępuje proces uczenia się. Mianowicie, najwyraźniej duży udział w tym procesie odgrywa właśnie empatia, w sensie przenoszenia własnego punktu widzenia na punkt widzenia rodzica (opiekuna). Poprzez dokonanie takiego odniesienia, wczucie się w stan psychologiczny drugiej osoby oraz obserwację zachowań i czynności, dziecko uczy się reagować na najprostsze bodźce (takie jak na przykład zabawa w \"a kuku\"). Pomocny jest tu również odruch wyolbrzymiania i przerysowywania emocji przez opiekuna, co ułatwia ich rozpoznanie.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Składowe przekazu komunikacyjnego, Autor: Joanna Siwek, Źródło: opracowanie własne na podstawie [5]](../grafiki/SE1/se1_1.png \"przekaz\") \n", + "
Składowe przekazu komunikacyjnego od nadawcy do odbiorcy. Żródło: Opracowanie własne na podstawie [5].
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Jeszcze innym zastosowaniem sztucznej empatii jest ułatwienie komunikacji systemu z użytkownikiem. Od dawna wiadomym jest, iż przekaz werbalny stanowi jedynie część całego przekazu informacji, nadawanego przez nadawcę. Pozostałe cechy, to jest mimika, ton, mowa ciała, nacechowanie emocjonalne czy kontekst, mają bardzo duży wpływ na jakość przekazu. Wykorzystanie sztucznej empatii w komunikacji z użytkownikiem systemu pozwala na bardziej dokładną komunikację, skrócenie czasu poświęconego na interakcję z systemem oraz zwiększenie jakości dialogu i zadowolenia użytkownika. Sztuczna empatia wykorzystywana jest między innymi w wirtualnych towarzyszach (virtual companions), asystentach czy czatbotach.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Schemat przebiegu procesu odpowiedzi na bodziec w systemie wzbogaconym o moduły empatyczne, Autor: Joanna Siwek, Źródło: opracowanie własne](../grafiki/SE1/se1_2.png \"flowchart\") \n", + "
Schemat przebiegu procesu odpowiedzi na bodziec w systemie wzbogaconym o moduły empatyczne. Źródło: opracowanie własne.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Tematem mocno związanym ze sztuczną empatią, koniecznym do jej prawidłowego zastosowania, jest rozpoznawanie emocji. Aby system mógł byc uznany za empatyczny, musi posiadać zdolność do rozpoznania emocji użytkownika (rozmówcy), ich przeanalizowania, przetworzenia oraz do reakcji na nie. Z drugiej strony system musi posiadać możliwość analizy własnych emocji, zarządzania nimi oraz możliwości ich uzewnętrznienia. Rozpoznawanie emocji jest dziedziną samą w sobie i zagadnieniem bardzo szerokim. Ze względu na jego prężny rozwój, w tym momencie na rynku dostępnych jest wiele (również darmowych) narzędzi pozwalających na rozpoznawanie emocji.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Podstawowe pojęcia \n", + "
\n", + "
Aby móc swobodnie wykorzystywać dostępne narzędzia oraz literaturę związaną ze sztuczną empatią, koniecznym jest wprowadzenie kilku pojęć, którymi posługują się naukowcy studiujący zachowania empatyczne. Ze względu na fakt, iż sztuczna empatia leży na pograniczu wielu dziedzin, są to pojęcia zarówno z psychologii, medycyny, neuronauki jak i informatyki.
\n", + "\n", + "Zacznijmy od dokładnych definicji najważniejszego dla nas pojęcia, czyli empatii.\n", + "\n", + "
Wąska definicja empatii - jest to zdolność do formowania ucieleśnionej reprezentacji stanu emocjonalnego innych, w tym samym czasie będąc w pełni świadomym mechanizmu przyczynowo-skutkowego, który wywołał ów stan w drugiej jednostce [9].
\n", + "\n", + "Szersza definicja jest następująca:\n", + "\n", + "
Szeroka definicja empatii - Jest to połącznenie empatii emocjonalnej (rozumianej jako zdolność formułowania reprezentacji uczuć innych poprzez współdzielenie tych uczuć) oraz empatii kognitywnej (rozumianej jako zdolności poznawcze pozwalające na zapamiętywanie i wyobrażenie stanu emocjonalnego innej jednostki oraz umiejętność przyjęcia jej perspektywy)[9].
\n", + "\n", + "Obszary zainteresowań sztucznej empatii szukają odpowiedzina następujące pytania:\n", + "\n", + " * Jakie warunki muszą być spełnione, aby agent (podmiot posiadający sztuczną empatię, nie będący człowiekiem) odpowiedział kompetentnie na emocje człowieka?\n", + " * Jakie modele empatii powinny być zastosowane do agentów takich jak towarzysze czy asystenci?\n", + " * Czy interakcje człowieka z agentem powinny imitować interakcje emocjonalne ludzi?\n", + " * Czy empatyczne roboty mogą pomóc naukowcom zrozumieć rozwój emocjonalny człowieka?\n", + " * Czy empatyczne roboty mogą stworzyć nieprzewidziane kategorie nieautentycznych relacji?\n", + " * Jakie relacje z empatycznymi agentami mogą być uważane za autentyczne?\n", + "\n", + "
By możliwe było określenie i porównanie poziomu empatii między różnymi jednostkami, konieczne jest rozważenie empatii w pewnym kontekście. Każdy człowiek (jeżeli mamy rozważać również sztuczną empatię - każda jednostka) posiada swoje własne uwarunkowania i kontekst, w którym należy rozważać poziom empatii. Kontekst wewnętrzny jednostki oraz poziom jego zaawansowania nazywa się inteligencją emocjonalną.
\n", + "\n", + "
Inteligencja emocjonalna to zdolność identyfikacji, zrozumienia oraz użycia emocji w sposób pozytywny, w celu zarządzania niepokojem, kominikacji, empatyzowania, radzenia sobie z sytuacjami, pokonywania problemów i rozwiązywania konfliktów. Oznacza postrzeganie, ewaluację i zarządzanie emocjami swoimi i innych. Inteligencja emocjonalna, bądź też zdolność do postrzegania, użycia, zrozumienia i regulacji emocji, jest koncepcją dość nową, której celem jest połączenie sfery emocjonalnej i poznawczej [4].
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Piramida inteligencji emocjonalnej, Autor: Joanna Siwek, Żródło: Opracowanie własne w oparciu o [3]](../grafiki/SE1/se1_3.png \"inteligencja emocjonalna\") \n", + "
Piramida inteligencji emocjonalnej. Empatia znajduje się w połowie stawki. Żródło: Opracowanie własne w oparciu o [3]
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Czasami pojęcie sztucznej empatii stosuje się zamiennie z pojęciem empatii obliczeniowej. W celu ujednolicenia terminoglogii, wprowadźmy jeszcze pojęcie empatii obliczeniowej.\n", + "\n", + "
Empatia obliczeniowa jest to zdolność systemów obliczeniowych do zrozumienia i odpowiedzi na myśli, uczucia i emocje ludzi. [11]. Proszę zwrócić uwagę na fakt, iż w tej definicji system nie jest traktowany jako jednostka równożędna człowiekowi, jako podmiot, a jedynie jako przedmiot, który jest wykorzystywany przez człowieka. Nie zakłada się możliwości empatyzowania pomiędzy systemami. Empatia obliczeniowa skupia się na zrozmieniu działania człowieka oraz możliwie przewidzeniu jego zachowań, dzięki czemu moze być wykorzystana np. w marketingu (w odróżnieniu do sztucznej empatii, która jest pojęciem szerszym a jej celem jest doskonałe odwzorowanie procesów myślowych człowieka i zastosowanie w doskonałej sztucznej inteligencji).
\n", + "\n", + "W prezentowanym cyklu zajęć będziemy skupiać się na próbie wporowadzenia modelu empatycznego do systemu, umożliwiającego komunikację z użytkownikiem. System taki nazywamy podmiotem/agentem konwersacyjnym (conversational agent; w języku angielskim istnieje więcej niż jeden rodzaj \"podmiotów\". Podmiot zdolny do podejmowania decyzji i wykonywania akcji nazywany jest agentem. Podmiot bierny to \"subject\").\n", + "\n", + "
Podmiot konwersacyjny - jest to dowolny system dialogowy, który nie tylko dokonuje przetworzenia języka naturalnego, ale również automatycznie reaguje, używając języka zrozumiałego dla człowieka. Podmioty konwersacyjne są reprezentacją dla praktycznej implementacji lingwistyki obliczeniowej, zwykle stosowane jako chatboty bądź wirtualni asystenci w internecie i na urządzeniach mobilnych. Ich odpowiedź na bodziec wysłany przez użytkownika nie musi być tekstowa, może mieć formę mowy, grafiki, wirtualnego gestu bądź (w razie dostępnych urządzeń), gestu fizycznego [12].
\n", + "\n", + "
Ważną kwestią jest jeszcze rozróżnienie pojęć współczucia i współodczuwania, które niestety są bardzo często mylone w literaturze przedmiotu. Mianowicie współczucie (sympathy, compassion) jest podobne do współodczuwania (empatii) w tym sensie, iż oba te stany świadomości wymagają umiejętności formułowania reprezentacji emocji innych jednostek, bez konieczności współdzielenia tych emocji. Z drugiej strony, przy empatyzowaniu, stany emocjonalne empatyzujących jednostek są zsynchronizowane. Sugeruje to, iż współczucie może wymagać kontroli nad włanymi emocjami oraz zdolności rozróżnienia siebie od innych [10]. Tym samym współczucie jest uczuciem wyższym w stosunku do empatii, która to może pojawiać się na wcześniejszym etapie rozwoju i samoświadomości.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Neuronauka \n", + "
\n", + "
Formalnie, neuronauka to interdyscyplina naukowa zajmująca się badaniem układu nerwowego. Leży ona na pograniczu wiedzy medycznej, biologicznej, biochemicznej, biofizycznej, informatycznej i psychologicznej. Jej poddziedziną jest neurokognitywistyka, której celem jest przedstawienie neurologicznych wyjaśnień poznania i percepcji. Jest to nauka podstawowa (teoretyczna), choć niewykluczone, że jej rezultaty mogą się okazać przydatne w praktyce klinicznej [2]. To własnie neurokogniwistyka jest w bardzo dużej mierze związana ze sztuczną empatią ze względu na fakt, iż może ona pomóc w przeniesieniu sposobów nauki człowieka na maszynę. Jest wykorzystywana w sztucznej empatii głównie w celu pokazania mechanizmów, w jaki sposób człowiek od najmłodszych lat uczy się i przyjmuje perspektywę drugiej osoby, jak również w jaki sposób osiąga samoświadomość i odróżnia siebie od innych.
\n", + "
\n", + "
Zarówno neurokogniwistyka jak i sama sztuczna empatia to dziedziny bardzo nowe, rozwijające się. W związku z tym badania, które przeprowadzają, zwracają wiele wyników, które na tym etapie rozwoju nauki nie są jeszcze możliwe do implementcji. Z drugiej strony, posiadają one bardzo duży potencjał odkrywczy i aplikacyjny w przyszłości.
\n", + "
\n", + "
Odkryciem naukowym, które spowodowało gwałtowny rozwój neuronauki i neurokogniwistyki było odkrycie neuronów lustrzanych na początku lat 90' XX w. przez włoski zespół w składzie: Giacomo Rizzolatti, Leonardo Fogassi i Vittorio Gallese. Neurony te zostały uznane za odpowiedzialne za zdolność mózgu do odtwarzania ruchów zaobserwowanch u innych osób. Umiejscowienie neuronów lustrzanych w ludzkim mózgu można znaleźć w [8].
\n", + "
\n", + "
Neurony lustrzane zostały pierwotnie zidentyfikowane w płatach czołowych małp (w regionie homologicznym do językowego obszaru Broki u ludzi). Uaktywniają się one, gdy małpa sięga po przedmiot, ale także wtedy, gdy jedynie obserwuje, kiedy robi to inny osobnik. Pomaga to obserwującej małpie symulować intencje tej drugiej, czyli czytać w jej umyśle. Znaleziono także dotykowe neurony lustrzane, które uaktywniają się, gdy osoba jest dotykana, ale także wtedy, gdy widzi, że ktoś inny jest dotykany. Zlokalizowano również neurony lustrzane, których zadaniem jest rozpoznawanie i generowanie wyrazu twarzy (w wyspie) i empatyczne współodczuwanie bólu innego osobnika (w przednim zakręcie obręczy) [2].
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Empatia kognitywna \n", + "
\n", + "
Wprost z neurokogniwistyki wyinferowana została empatia kognitywna (poznawcza). Przez wielu naukowców jest ona uznawana za jedyną sferę empatii wartą modelowania i implementacji. Empatia kognitywna (w odróżnieniu do empatii emocjonalnej) jest stanem wynikającym z zaobserwowanych, wyobrażonych bądź też wydedukowanych stanów emocjonalnych innej jednostki, przy jedoczesnym nie doświadczaniu tego stanu emocjonalnego osobiście. Pomimo, że empatia kognitywna jest nakierowana na innych i ma na celu przyjęcie ich perspektywy, zakłada jednak w domyśle możliwość rozróżnienia pomiędzy sobą i drugą jednostką. Nie jest stanem empcjonalnym sama w sobie, jest natomiast wiedzą na temat tego, co czują inni [13].
\n", + "
\n", + "\n", + "
Dziedziną psychologii, która zajmuje się tymi samymi problemami jest psychologia poznawcza, zajmująca się badaniem procesów przetwarzania informacji zachodzących w mózgu. Psychologowie poznawczy zwykle przeprowadzają eksperymenty, aby wyizolować etapy przetwarzania informacji. Każdy z etapów można określić jako czarną skrzynkę, w której dokonywane są określone specjalistyczne obliczenia, a ich wynik przekazywany jest do następnej skrzynki, co pozwala badaczowi na wykreślenie diagramu przepływu danych [2].
\n", + "
\n", + "\n", + "
Jedną z głównych teorii psychologicznych zajmujących się poznaniem jest tzw. teoria umysłu (Theory of Mind). Jest to model myśli i intencji innych osobników, który ludzie i niektóre wyższe gatunki naczelnych są w stanie konstruować w swoim umyśle. Im dokładniejszy jest ten model, tym dokładniej i szybciej dana osoba jest w stanie przewidywać myśli, przekonania i zachowania innej osoby. Wydaje się, że istnieją wyspecjalizowane obwody nerwowe u ludzi (i u niektórych małp), które umożliwiają tworzenie takiej teorii umysłu. Uta Frith i Simon Baron-Cohen uważają, że dzieci autystyczne nie mają w pełni rozwiniętej teorii umysłu, co jest spójne z poglądem, że jako źródło autyzmu można wskazać dysfunkcję układu neuronów lustrzanych [2].
\n", + "\n", + "
Ważną obserwacją, która jest wykorzystywana np. w przypadku konstruowania robotów wyposażonych w emocje (affective robotics) jest fakt, iż na różnych poziomach samoświadomości i samoregulacji wytępują różne rodzaje emocji [10]:
\n", + "\n", + " * emocje pierwotne\n", + " * rezonans motoryczny\n", + " * emocje o charakterze bardziej społecznym\n", + " * przyjmowanie perspektywy i teoria umysłu\n", + " * metapoznanie\n", + " * regulowanie emocji\n", + " * emocje czysto społeczne i zastępcze\n", + "\n", + "
Z działaniem mózgu ludzkiego pod kątem nauki, percapcji, formułowania i aktualizacji przekonań związanych jest wiele błędów poznawczych, które powstają podczas naturalnej jego pracy. Pojawia się zatem pytanie, czy próba odtworzenia sposobu myślenia mózgu ludzkiego powinna uwzględniać poniższe błędy? A jeżeli tak, czy powinna je niwelować czy modelować? Poniżej zostały wymienione najczęściej występujące behawiorystyczne czynniki, wpływające na działanie człowieka.
\n", + " \n", + "a) Błędy związane z postrzeganiem rzeczywistości:\n", + " \n", + " * Efekt wąskich ram\n", + " * Iluzja pieniędzy\n", + " * Księgowanie umysłowe\n", + " * Błąd kotwiczenia\n", + " * Błąd dostępności\n", + " * Efekt halo\n", + " * Nawyki, narzucone zasady postępowania\n", + " * Iluzja prawdy\n", + " * Myślenie magiczne („szczęśliwe numerki”)\n", + " \n", + "b) Nadmierna pewność siebie:\n", + "\n", + " * Efekt kalibracji\n", + " * Iluzja kontroli\n", + " * Nieuzasadniony optymizm\n", + " * Zjawisko wybiórczej atrybucji\n", + " * Błąd retrospekcji\n", + " \n", + "c) Reprezentatywność danych:\n", + " * Błąd hazardzisty\n", + " * Błąd krótkich serii\n", + " * Prawo regresji do średniej\n", + "\n", + "d) Aktualizacja przekonań\n", + " * Konserwatyzm poznawczy\n", + " * Iluzja poprawności\n", + " * Racjonalizacja" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Skrócony test ilorazu empatii \n", + "
\n", + "
Aby dowiedzieć się, jaki jest Twój poziom empatii na tle grupy kontrolnej, rozwiąż poniższy test ilorazu empatii. Treść testu wraz z opisem została zaczerpnięta z [1]. Aby wyniki testu były miarodajne, test powinien zostać rozwiązany w ograniczeniu czasowym oraz powtórzony dwukrotnie [1].
" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "\n", + "HTML('''\n", + "
''')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "hide_input": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ad42d0dcdc52487fa00145ffc0792fd1", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Szybko i intuicyjnie dostrajam się do samopoczucia drugiej osoby.'), Dropdown(opti…" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a0 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + " )\n", + "widgets.HBox([widgets.Label('Szybko i intuicyjnie dostrajam się do samopoczucia drugiej osoby.'),a0])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fee5e536bde84b81bde7b94172101f87", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Potrafię przewidzieć, jak ktoś inny będzie się czuł.'), Dropdown(options=(('Zdecyd…" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a1 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Potrafię przewidzieć, jak ktoś inny będzie się czuł.'),a1])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "463c85f0b7994c028834de580d084e9b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Jest mi trudno zrozumieć, dlaczego ludzie tak bardzo denerwują się różnymi rzeczam…" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a2 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 0), ('Raczej tak', 0), ('Raczej nie', 1), ('Zdecydowanie nie', 2)],\n", + " value=0,\n", + ")\n", + "widgets.HBox([widgets.Label('Jest mi trudno zrozumieć, dlaczego ludzie tak bardzo denerwują się różnymi rzeczami.'),a2])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ea98edc6715a4089b125b915b554d739", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='W sytuacjach towarzyskich nie wiem jak się zachować.'), Dropdown(options=(('Zdecyd…" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a3 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 0), ('Raczej tak', 0), ('Raczej nie', 1), ('Zdecydowanie nie', 2)],\n", + " value=0,\n", + ")\n", + "widgets.HBox([widgets.Label('W sytuacjach towarzyskich nie wiem jak się zachować.'),a3])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "bec55053051d488c961328927f4ca45d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Sytuacje towarzyskie nie wprawiają mnie w zakłopotanie.'), Dropdown(options=(('Zde…" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a4 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Sytuacje towarzyskie nie wprawiają mnie w zakłopotanie.'),a4])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2ca75a4aed674fed837a240035aa4fec", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Ludzie mówią mi, że dobrze rozumiem jak się czują i co mają na myśli.'), Dropdown(…" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a5 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Ludzie mówią mi, że dobrze rozumiem jak się czują i co mają na myśli.'),a5])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8c24bdf051934c049426e21327a32a2e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Z łatwością zauważam, jeśli ktoś chce się włączyć do rozmowy.'), Dropdown(options=…" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a6 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Z łatwością zauważam, jeśli ktoś chce się włączyć do rozmowy.'),a6])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0845a15550e74f4e962e5914fec400d4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Z łatwością orientuję się, czy ktoś jest zainteresowany, czy znudzony tym, co mówi…" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a7 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Z łatwością orientuję się, czy ktoś jest zainteresowany, czy znudzony tym, co mówię.'),a7])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "cb6e945e4b4141468109e4d63f9ca2a3", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Ludzie często mówią, że jestem nieczuły, choć ja sam nie zawsze wiem dlaczego.'), …" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a8 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 0), ('Raczej tak', 0), ('Raczej nie', 1), ('Zdecydowanie nie', 2)],\n", + " value=0,\n", + ")\n", + "widgets.HBox([widgets.Label('Ludzie często mówią, że jestem nieczuły, choć ja sam nie zawsze wiem dlaczego.'),a8])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fc2a39caafee4cbfad7105132381312b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Z łatwością potrafię postawić się w sytuacji innej osoby.'), Dropdown(options=(('Z…" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a9 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Z łatwością potrafię postawić się w sytuacji innej osoby.'),a9])" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "387228f1f1fb47a5ad475f6585bc996f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Szybko orientuję się, gdy ktoś mówi co innego, niż myśli.'), Dropdown(options=(('Z…" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a10 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Szybko orientuję się, gdy ktoś mówi co innego, niż myśli.'),a10])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "76a2335b2e1b402fa76dac67bd887b9d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='W rozmowie koncentruję się raczej na tym, co ja myślę, a nie na tym, co może myśle…" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a11 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 0), ('Raczej tak', 0), ('Raczej nie', 1), ('Zdecydowanie nie', 2)],\n", + " value=0,\n", + ")\n", + "widgets.HBox([widgets.Label('W rozmowie koncentruję się raczej na tym, co ja myślę, a nie na tym, co może myśleć mój rozmówca.'),a11])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d011d8c480ec400bb2355aaddfe160ed", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Potrafię przewidzieć jak ktoś inny się zachowa.'), Dropdown(options=(('Zdecydowani…" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a12 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Potrafię przewidzieć jak ktoś inny się zachowa.'),a12])" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "198d55dce6694e54bfaea32915311631", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Nie zawsze rozumiem, dlaczego ktoś poczuł się urażony.'), Dropdown(options=(('Zdec…" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a13 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 0), ('Raczej tak', 0), ('Raczej nie', 1), ('Zdecydowanie nie', 2)],\n", + " value=0,\n", + ")\n", + "widgets.HBox([widgets.Label('Nie zawsze rozumiem, dlaczego ktoś poczuł się urażony.'),a13])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "952df190d2e34e82bfbb3dea3f0faeed", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Szybko zauważam, kiedy ktoś w grupie czuje się niezręcznie lub niekomfortowo.'), D…" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a14 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Szybko zauważam, kiedy ktoś w grupie czuje się niezręcznie lub niekomfortowo.'),a14])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9afff2a1737545a3b6605aed16689ed9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Potrafię rozpoznać, jeśli ktoś ukrywa swoje prawdziwe uczucia.'), Dropdown(options…" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a15 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Potrafię rozpoznać, jeśli ktoś ukrywa swoje prawdziwe uczucia.'),a15])" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f28114463ada46f2b190423fd08b3bd9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Znajomi zazwyczaj opowiadają mi o swoich problemach, bo uważają, że dobrze ich roz…" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a16 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Znajomi zazwyczaj opowiadają mi o swoich problemach, bo uważają, że dobrze ich rozumiem.'),a16])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b58839fd6f844516ae20943832553df9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Potrafię wyczuć czy przeszkadzam, nawet jeśli ktoś mi o tym nie powie.'), Dropdown…" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a17 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Potrafię wyczuć czy przeszkadzam, nawet jeśli ktoś mi o tym nie powie.'),a17])" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "da5c46ddf1f14e5eb3690859cf6dab0a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Zazwyczaj przejmuję się problemami moich przyjaciół.'), Dropdown(options=(('Zdecyd…" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a18 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Zazwyczaj przejmuję się problemami moich przyjaciół.'),a18])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b9565fee5b3c4280a49c3472b61225bf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Łatwo domyślam się, o czym druga osoba chce ze mną rozmawiać.'), Dropdown(options=…" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a19 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Łatwo domyślam się, o czym druga osoba chce ze mną rozmawiać.'),a19])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "241e390f814447a0ad5242073276726c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Lubię troszczyć się o innych ludzi.'), Dropdown(options=(('Zdecydowanie tak', 2), …" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a20 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 2), ('Raczej tak', 1), ('Raczej nie', 0), ('Zdecydowanie nie', 0)],\n", + " value=2,\n", + ")\n", + "widgets.HBox([widgets.Label('Lubię troszczyć się o innych ludzi.'),a20])" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": true, + "tags": [ + "hide_input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8ea59c7797ac4f63852ea2f4fd6e3b73", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Label(value='Często trudno mi ocenić, czy coś jest grzeczne czy nie.'), Dropdown(options=(('Zde…" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a21 = widgets.Dropdown(\n", + " options=[('Zdecydowanie tak', 0), ('Raczej tak', 0), ('Raczej nie', 1), ('Zdecydowanie nie', 2)],\n", + " value=0,\n", + ")\n", + "widgets.HBox([widgets.Label('Często trudno mi ocenić, czy coś jest grzeczne czy nie.'),a21])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "289642fbb9e84ead8a7d84fba9cc93c6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(Button(description='Podlicz punkty', style=ButtonStyle()), Output()))" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "button = widgets.Button(description='Podlicz punkty')\n", + "out = widgets.Output()\n", + "def on_button_clicked(_):\n", + " # \"linking function with output\"\n", + " with out:\n", + " # what happens when we press the button\n", + " clear_output()\n", + " c=a0.value+a1.value+a2.value+a3.value+a4.value+a5.value+a6.value+a7.value+a8.value+a9.value+a10.value+a11.value+a12.value+a13.value+a14.value+a15.value+a16.value+a17.value+a18.value+a19.value+a20.value+a21.value\n", + " print(\"Twój wynik to:\", c)\n", + "button.on_click(on_button_clicked)\n", + "# displaying button and its output together\n", + "widgets.VBox([button,out])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Wyniki\n", + "
\n", + "
Wyniki dla wersji oryginalnej narzędzia liczone są według następującego klucza odpowiedzi: „raczej tak” – 1 pkt, „zdecydowanie tak” – 2 pkt, a pozostałe odpowiedzi – „raczej nie” oraz „zdecydowanie nie” – 0 pkt. Dotyczy to pozycji nr 1, 2, 5, 6, 7, 8, 10, 11, 13, 15, 16, 17, 18, 19, 20, 21. Dla pozostałych pozycji (nr 3, 4, 9, 12, 14, 22) przyjmuje się punktację odwróconą: za odpowiedzi „raczej nie” przyznaje się 1 pkt, a za odpowiedzi „zdecydowanie nie” – 2 pkt. Za pozostałe odpowiedzi pozytywne – „raczej tak” i „zdecydowanie tak” – przyznaje się 0 pkt. Po zsumowaniu punktów uzyskuje się wynik SSIE, który wynosi maksymalnie 44 punkty [1].
\n", + "
\n", + "
Wynik testu, jako taki, nie mówi zbyt wiele o poziomie empatii danej jednostki. Warto natomiast spojrzeć, jak dany wynik ma się na tle średniej w danej grupie odniesienia (ważne, aby grupa ta była w miarę jednolita. Grupa zajęciowa osób mniej więcej w tym samym wieku i podobnym poziomie wyksztalcenia zdecydowanie może być miarodajna). Wyniki ogólne wskazują na bardzo drobne różnice w empatii na korzyść Pań, przy czym są to raczej dziesiętne części punktu [1].
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Podsumowanie \n", + "
\n", + "
Podsumowując, głownym celem niniejszych laboratorów było wprowadzenie podstawowych pojęć związanych ze sztuczną empatią. Nakreślone zostało umiejscowienie tej dziedziny w nauce oraz wyjaśniono jej genezę. Zamieszczone poniżej polecenia do wykonania mają za zadanie uświadomić wykonującemu ważność empatii w komunikacji, pozwolić mu określić własny poziom empatii oraz zachęcić do próby przeniesienia myślenia empatycznego na sferę informatyki i robotyki.
\n", + "
\n", + "
Ze względu na charakter całego cyklu zajęć, którego ostatecznym celem jest stworzenie prostego systemu komunikacji z użytkownikiem, wzbogaconego o moduy sztucznej empatii, poniższe ćwiczenia zachęcają do wstępnego zaplanowania pracy nad takim systemem, w odniesieniu do kształtu i sfer empatii, które mialy by byc zaimplementowane.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Zadania\n", + "\n", + "1. Wykonaj skrócony test empatii zamieszczony powyżej. Porównaj swoje wyniki z innymi.\n", + "
\n", + "\n", + "
\n", + " \n", + " Wynik 34\n", + "\n", + "
\n", + "\n", + "2. Zagadnienia empatii są obecnie bardzo popularne w niektórych dziedzinach życia, np. marketingu, medycynie, zarządzaniu zasobami ludzkimi, itd. Poszukaj przykladów stosowania metod empatycznych do celów komercyjnych. Zbierz odpowiedzi grupy laboratoryjnej w jedną tabelę. Unikaj powtórzeń.\n", + "
\n", + "\n", + "
\n", + " \n", + " Badania rynkowe - Firma przeprowadza badania rynkowe, aby lepiej zrozumieć potrzeby swoich klientów i dostosować swoje produkty lub usługi do ich wymagań. Badania te mogą obejmować ankiety, wywiady lub obserwacje zachowań konsumentów.\n", + " Tworzenie person - Firma tworzy profile klientów, aby zrozumieć, kim są ich klienci i jakie są ich potrzeby. Na podstawie tych profili można dostosować ofertę do potrzeb różnych grup klientów.\n", + " Design thinking - Design thinking to podejście, w którym firma stara się zrozumieć i rozwiązać problemy swoich klientów. Przykładem takiego podejścia może być projektowanie produktów lub usług z myślą o użytkownikach, tak aby spełniały ich potrzeby.\n", + " Personalizacja - Firma oferuje personalizowane produkty lub usługi, takie jak spersonalizowane buty, ubrania lub programy żywieniowe, które spełniają konkretne wymagania klientów.\n", + " Działania CSR - Firma angażuje się w działania społeczne, aby pokazać, że jej wartości są zgodne z wartościami jej klientów. Działania takie mogą obejmować wsparcie dla lokalnych społeczności, ochronę środowiska czy walkę z dyskryminacją.\n", + "\n", + "\n", + "
\n", + "\n", + "3. Narysuj mapę empatii dla hipotetycznego AI. Wykorzystaj następujący schemat:\n", + "
\n", + "\n", + "
\n", + " \n", + " Odbiera: wiadomości użytkownika
\n", + " Mówi: wyraża opinie o wędkarstwie
\n", + " Myśli: zna się lepiej na wędkarstwie niż użytkownik
\n", + " Robi: ignoruje wszystkie tematy oprócz wędkarstwa
\n", + " Czuje: Miłość do ryb
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Mapa empatii, Autor: Joanna Siwek, Źródło: opracowanie własne](../grafiki/SE1/se1_4.png \"flowchart\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4. Celem cyklu prezentowanych laboratoriów będzie stworzeniu systemu wyposażonego w sztuczną empatię. Aby nakreślić wstępny plan systemu, wykorzystaj metodę zamieszczoną w linku poniżej. W jakiej sferze życia/działalności będzie działał Twój chatbot? Kto będzie jego użytkownikiem? Jakie będą granice jego działania?\n", + "\n", + "
\n", + " \n", + " Empatyczny chatbot fanatyk wędkarstwa. Chatbot będzie każdą rozmowę sprowadzał do wędkarstwa. Chatbot będzie się obrażał gdy użytkownik będzie zmieniał temat lub gdy będzie fanem innej ryby niż chatbot. Użytkownikiem chatbota będzie każda osoba, w szczególności wędkarze.\n", + "\n", + "
\n", + "\n", + "\n", + "https://www.ibm.com/design/thinking/page/toolkit/activity/writing-hills" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Źródła:\n", + "\n", + "[1] http://psychiatriapolska.pl/uploads/images/PP_4_2017/719JankowiakSiuda_PsychiatrPol2017v51i4.pdf\n", + "\n", + "[2] Neuronauka o podstawach człowieczeństwa: O czym mówi mózg? (2012) (oryg. The Tell-Tale Brain: A Neuroscientist's Quest for What Makes Us Human 2011) Wydawnictwa Uniwersytetu Warszawskiego, ISBN 978-83-235-0911-0\n", + "\n", + "[3] Drigas, A.S.; Papoutsi, C. A New Layered Model on Emotional Intelligence. Behav. Sci. 2018, 8, 45. https://doi.org/10.3390/bs8050045\n", + "\n", + "[4] Gutiérrez-Cobo, M.J.; Cabello, R.; Fernández-Berrocal, P. (2016), The relationship between emotional intelligence and cool and hot cognitive processes: A systematic review. Front. Behav. Neurosci. vol. 10, iss. 101.\n", + "\n", + "[5] Manning et. al., 2014, Selling today, ed. 12, Pearson Education, ISBN: 9780132109901.\n", + "\n", + "[6] https://plato.stanford.edu/entries/empathy/\n", + "\n", + "[7] Xiao, L., Kim, H. J., & Ding, M. (2013). \"An introduction to audio and visual research and applications in marketing\". Review of Marketing Research, 10, p. 244. doi:10.1108/S1548-6435(2013)0000010012\n", + "\n", + "[8] Caspers S, Zilles K, Laird AR, Eickhoff SB. ALE meta-analysis of action observation and imitation in the human brain. Neuroimage. 2010 Apr 15;50(3):1148-67. doi: 10.1016/j.neuroimage.2009.12.112\n", + "\n", + "[9] Asada, M. (2014). Affective Developmental Robotics ∗ How can we design the development of artifcial empathy ?\n", + "\n", + "[10] Asada, M. Towards Artificial Empathy. Int J of Soc Robotics 7, 19–33 (2015). https://doi.org/10.1007/s12369-014-0253-z\n", + "\n", + "[11] Özge Nilay Yalçın, Steve DiPaola, Modeling empathy: building a link between affective and cognitive processes\n", + "Artificial Intelligence Review ( IF 5.747 ), DOI: 10.1007/s10462-019-09753-0\n", + "\n", + "[12] https://deepai.org/machine-learning-glossary-and-terms/conversational-agent\n", + "\n", + "[13] Stephan, A. Empathy for Artificial Agents. Int J of Soc Robotics 7, 111–116 (2015). https://doi.org/10.1007/s12369-014-0260-0" + ] + } + ], + "metadata": { + "author": "Joanna Siwek", + "email": "jsiwek@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "subtitle": "1. Co to w ogóle jest empatia?", + "title": "Sztuczna empatia", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/SE2.ipynb b/SE2.ipynb new file mode 100644 index 0000000..ead02f9 --- /dev/null +++ b/SE2.ipynb @@ -0,0 +1,474 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "![baner aitech](../grafiki/SE2/logo.jpg \"baner\") \n", + "\n", + "***\n", + "\n", + "# Sztuczna empatia 2\n", + "## Empatia a prawdziwa Sztuczna Inteligencja\n", + "### Joanna Siwek\n", + "\n", + "***\n", + "\n", + "### Spis treści\n", + "1. [Wstęp](#introduction)\n", + "2. [Empatia a doskonała SI. Test Turinga.](#paragraph1)\n", + "4. [Zasady z Asimolar](#paragraph2)\n", + "3. [Hierarchia emocji. Zachowania empatyczne.](#paragraph3)\n", + "4. [Modele empatii](#paragraph4)\n", + "5. [Nauka poprzez empatię. Odtwarzanie modelu rozwoju dziecka.](#paragraph5)\n", + "7. [Podsumowanie - perspektywy na przyszłość](#paragraph6)\n", + "\n", + "***\n", + "\n", + "![baner ue](../grafiki/SE2/ae_ue.jpg \"baner\") " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wstęp \n", + "
\n", + "
Patrząc z punktu widzenia psychologii, osoba nie posiądająca poprawnie działającej empatii nazywana jest psychopatą.
\n", + "
Psychopata jest bezduszny, ale czarujący. Będzie oszukiwać i manipulować innymi przy pomocy charyzmy i zastraszania, oraz może skutecznie naśladować uczucia, aby przedstawiać się społeczeństwu jako „normalny”. Psychopata jest zorganizowany w swoim przestępczym myśleniu i zachowaniu i potrafi utrzymać dobrą kontrolę emocjonalną i fizyczną, wykazując niewielkie lub żadne podniecenie emocjonalne, nawet w sytuacjach, które większość uznałaby za groźne lub przerażające. Psychopata doskonale zdaje sobie sprawę, że to co robi jest złe, ale go to nie obchodzi. - Kelly McAleer, [2]
\n", + "
Jeżeli człowiek bez prawdziwej empatii jest psychopatą, to czym/kim jest szutczna inteligencja pozbawiona empatii? Psychopatyczna sztuczna inteligencja nie brzmi zbyt zachęcająco. A mimo to planujemy, aby uzbroić sztuczną inteligencję w dużą ilość informacji i możliwości.
\n", + "
\n", + "
Etyczna sztuczna inteligencja powinna być zaprojektowana w sposób zgodny z wartościami etycznymi społeczeństwa bądź grupy docelowej, w której owa SI ma mieć zastosowanie. Etyka powstaje na dobrze ugruntowanych standardach tego co jest dobre a co złe, określając co człowiek powinien robić, zwykle w odniesieniu do praw, obowiązków, przekonań, cech i zalet [1].
\n", + "\n", + "
Etyka to ogół norm moralnych uznawanych w pewnym czasie przez jakąś zbiorowość społeczną, jako punkt odniesienia dla oceny i regulacji postępowania, w celu integracji grupy wokół pewnych wartości. W sensie filozoficznym, etyka to nauka dotycząca moralności, rozpatrywana odrębnie w aspektach: normatywnym, jako nauka moralności, oraz opisowo-wyjaśniającym, jako nauka o moralności. - Encyklopedia PWN [10]
\n", + " \n", + "
Ogólnie rzecz biorąc, etyka w sztucznej inteligencji dzieli się na dwa główne działy: badanie moralnego zachowania maszyn oraz etyka tworzenia sztucznej inteligencji.
\n", + "\n", + "Etyka skupia się na kilku obszarach zainteresowań \n", + "\n", + " * odpowiedzialność (kto jest odpowiedzialny za czyn dokonany przez AI, jaka odpowiedzialność spoczywa na twórcach?)\n", + " * wyjaśnialność (każda akcja SI powinna być poparta odtwarzalnym procesem decyzyjnym)\n", + " * wyrównanie wartości (brak dyskryminacji)\n", + " * sprawiedliwość\n", + " * prawa użytkownika do swoich danych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Zasady z Asilomar \n", + "
\n", + "
W celu uporządkowania zasad etycznych, zarówno tych, jakie powinna spełniać sztuczna inteligencja, jek i tych, które powinni wyznawać jej twórcy, w 2017 w Asilomar, w Kalifornii ponad 100 wiodących naukowców AI stworzło dokument, znany jako Zasady z Asilomar. Odpowiadają one na pytanie, jak stworzyć AI tak, by dotęp do niej był jak najszerszy i by nie spoczywała w rękach jednej korporacji. Obejmują one zasady prowadzenia badań oraz etykę i wartości [3]: \n", + "
\n", + "\n", + "Badania\n", + "\n", + " * Celem badań nad sztuczną inteligencją jest to, by stworzyć SI pożyteczną dla człowieka.\n", + " * Za inwestowaniem w SI powinno iść finansowanie badań nad tym, by SI była pożyteczna dla ludzkości. Takich badań, których elementem sa odważne pytania na temat informatyki, ekonomii, prawa, etyki i społeczeństwa.\n", + " * Badacze SI i decydenci polityczni oraz twórcy prawa powinni się ze sobą komunikować. Wymiana wiedzy powinna być zdrowa i konstruktywna.\n", + " * Badacze tematu SI i programiści powinni działać na zasadzie współpracy, zaufania i transparentności.\n", + " * Należy unikać niezdrowego wyścigu - zespoły pracujące nas SI powinny aktywnie współpracować, by uniknąć sytuacji, w której jego ofiarą padną standardy bezpieczeństwa.\n", + "\n", + "Etyka i wartości\n", + "\n", + " * Systemy SI powinny być zabezpieczone przez cały okres działalności operacyjnej.\n", + "\n", + " * Jeżeli SI wyrządzi krzywdę, powinno być możliwe ustalenie jej przyczyn.\n", + "\n", + " * Jeśli autonomiczny system ma wpływ na decyzje dotyczące spraw sądowych, to taki przypadek powienien być wystarczająco dobrze wyjasniony - musi istniec możliwość weryfikacji tego przypadku przez kompetentnego człowieka.\n", + "\n", + " * Projektanci i twórcy zaawansowanych systemów sztucznej inteligencji ponoszą odpowiedzialność za to, w jaki sposób inni będą korzystać z efektów ich pracy i mają też wpływ na konsekwencje użytkowania AI.\n", + "\n", + " * Wysoce autonomiczne systemy SI powinny byc zaporojektowane w taki sposób, by ich cele i sposób dziąłania były zgodne z wartościami wyznawanymi przez ludzi.\n", + "\n", + " * Systemy SI powinny byc zaprojektowane i wykorzystywane w sposób zgodny z prawem, wolnością, godnością i kulturową róźnorodnością ludzi.\n", + "\n", + " * Ludzie powinni miec prawo dostępu do danych, które sami generują, mieć możliwość zarządzania nimi i kontrolowania ich - w sytuacji, gdy SI będzi zdolna do tego, by je analizowac i wykorzystywać.\n", + "\n", + " * W sytuacji, gdy SI będzie wykorzystywana do zarządzania danymi osobowymi, nie powinno to w żaden nieuzasadniony sposób umniejszać wolności ludzi, ani ich wyobrażenia o tej wolności.\n", + "\n", + " * Technologie oparte o AI powinny być pożyteczne i wzmacniać pozycje tak wielu ludzi, jak to możliwe.\n", + "\n", + " * Z ekonomicznych korzyści - dobrobytu stworzonego przez SI - powinna korzystać cała ludzkość.\n", + "\n", + " * Ludzie powinni wybrać, czy pozostawiać decyzje w rękach SI i w jakim stopniu oddać jej decyzyjność.\n", + "\n", + " * To, że wysoko zaawansowane systemy SI otrzymają pewną władzę nie powinno negatywnie, a pozytywnie wpływać na procesy społeczne i obywatelskie, od których zależy \"zdrowie\" społeczeństwa. \n", + "\n", + " * Powinno się unikać wyścigu zbrojeń, związanego z budową śmiercionośnej broni autonomicznej.\n", + "\n", + " * Powinniśmy unikać kategorycznych założeń na temat spektrum możliwości AI, która powstanie w przyszłości.\n", + "\n", + " * Powinniśmy być świadomi, że zaawansowana AI może oznaczać potężną zmianę w historii życia na ziemi.\n", + "\n", + " * Powinniśmy się odpowiednio zabezpieczyć przed ryzykiem, jakie stwarza AI.\n", + "\n", + " * Należy odpowiednio zabezpieczyć i kontrolować SI, które będą zdolne do samodzielnego polepszania się i kopiowania.\n", + "\n", + " * Superinteligencja powinna być rozwijana tak, by służyła powszechnie akceptowanym ideałom etycznym, z korzyścią dla całej ludzkości, a nie wyłącznie dla jednego państwa lub organizacji.\n", + "
\n", + "\n", + "
Problem etytki w sztucznej inteligencji jest w tym momencie tematem bardzo chwytliwym. Powstają wciąż nowe prace, starające się zdefiniować cechy, jakie powinna posiadać sztuczna inteligencja. W 2020 roku powstała praca, grupująca wszystkie porządane własności SI. Są to:
\n", + "\n", + " * transparentność\n", + " * sprawiedliwość\n", + " * uczciwość\n", + " * nie szkodzenie\n", + " * odpowiedzialność\n", + " * prywatność\n", + " * dobroczynność\n", + " * wolność i autonomia\n", + " * zaufanie\n", + " * zrównoważony rozwój\n", + " * godność\n", + " * solidarność\n", + " * open source\n", + " * solidność " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Empatia a doskonała SI. Test Turinga. \n", + "
\n", + "
Poprzez silną sztuczną inteligencję [11] rozumiemy hipotetyczną zdolność podmiotu do zrozumienia bądź nauczenia się dowolnego zadania intelektualnego, rozwiązywalnego przez człowieka. Może też oznaczać program komputerowy, który może doświadczyć świadomości, samo-świadomości i samo-wiedzy.
\n", + "\n", + "Inteligencja powinna:\n", + "\n", + " * Umieć wnioskować, używać strategii, rozwiązywać łamigłówki, dokonywać oceny w wypadku niepewności\n", + " * Reprezentować wiedzę, w tym zdroworozsądkową\n", + " * Planować\n", + " * Uczyć się\n", + " * Komunikować w języku naturalnym\n", + " * Wykorzystywać wszystkie te zdolności w osiąganiu wspólnych celów\n", + "\n", + "Kilka ważniejszych testów, które pozwalają sprawdzić, czy mamy do czynienia z prawdziwa sztuczną inteligencą:\n", + "\n", + " * Test Turinga\n", + " * Test kawowy (Woźniak)\n", + " * Test studenta (Goertzel)\n", + " * Test zatrudnienia\n", + "\n", + "
Praktycznie, aby określić, czy system jest \"inteligenty\" wykonuje sie test Turinga [4]. Klasyczny test Turinga (1950 r.) polegał na tym, iż pewna osoba przeprowadzała wywiad z dwoma innymi podmiotami - człowiekiem i programem - nie wiedząc, który jest który. Człowiek i komputer zamknięci byli w dwóch osobnych pomieszczeniach, w trzecim znajdował się interogator. Osoba ta zadawała kolejno pytania, na które mieli odpowiedzieć człowiek i komputer. Pytania były rodzaju \"Czy X może mi powiedzieć, czy X gra w szachy?\". Celem \"sztucznej inteligencji\" było jak najlepiej udawać człowieka. Celem człowieka było udowadniać, iż rzeczywiście to on jest człowiekiem. Eksperyment uważano za zdany przez maszynę, jeżeli została ona pomylona z człowiekiem. Turing nazywał ów eksperyment \"grą w naśladowanie\". Jako zadowalający poziom SI określił nierozróżnialność człowieka od maszyny na poziomie 70%. Na ten moment, system który najlepiej zdał test Turinga to Cleverbot, z wynikiem 59.3%.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Schemat testu turinga, Autor: Joanna Siwek, Źródło: Opracowanie własne.](../grafiki/SE2/se2_1.png \"test turinga\") \n", + "
Schemat testu turinga. AI, osoba i przeprowadzający wywiad znajdują się w różnych pomieszczeniach. Przeprowadzający wywiad nie wie, z kim rozmawia. Źródło: Opracowanie własne.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Z czasem jednak stwierdzono, iż test Turinga nie odzwierciedla już cech, których wymaga się od sztucznej inteligencji. Użytkownik na obecnym poziomie wymaga już bowiem takich zachowań jak empatia, interakcja, wyobraźnia czy umiejętności społeczne. Pierwszym, problematycznym pytaniem, które można bowiem skierować do potencjalnego SI, to pytanie o to, czy jest człowiekiem czy SI. Czy taka SI powinna skłamać? Jeżeli nie skłamie, nie zostanie zaliczona jako prawdziwa sztuczna inteligencja. Zatem do jakiego poziomu powinno się pozwolić maszynie kłamać? W odpowiedzi na ten problem powstał moralny test Turinga, mający na celu badać istnienie tych cech w sztucznej empatii, bardziej dokładnie oddając jej sposób naśladowania człowieka, już nie jako prosty system dialogowy. Ze zmodyfikowanym testem Turinga nadal wiążą się jednak pewne problemy. Przede wszystkim dlatego, że sama etyka jest dziwacznym połączeniem intuicji, doświadczenia, okoliczności, kultury oraz innych.
\n", + "
\n", + "\n", + "Jako ciekawostka: Cleverbot na pytanie o to, czy kłamie, odpowiada, że tak. Na pytanie czy jest AI, odpowiada, że nie, że jest człowiekiem.\n", + "\n", + "
\n", + "
Zgodnie z teorią neuronauki, aby określić, czy system jest empatyczny, należy zdefiniować cechy i zachowania, które świadczą o empatii. Sa to na przykład [9]:
\n", + "\n", + " * mimikra\n", + " * zarażanie emocjonalne\n", + " * troska o stan innej osoby\n", + " * zachowania konsolidacyjne (altruizm, pomoc)\n", + " * zrozumienie stanu i myśli innej osoby\n", + " * wyobrażanie sobie myśli innych\n", + " * projekcja siebie w sytuacji innej osoby.\n", + "\n", + "
\n", + "
Poprzez moralny (czy też etyczny) test Turinga, zachowania AI mogą zostać zklasyfikowane do następujących kategorii [12]:
\n", + " \n", + " * Przetwarzanie kognitywne - Systemy algorytmiczne radzą sobie ze świadomymi, krytycznymi, logicznymi, uważnymi, uzasadnionymi modelami myślenia, jakie spotykamy w systemach eksperckich i programach NLP. \n", + " * Przetwarzanie emocjonalne - Programy wnioskują i angażują się w sygnały emocjonalne, które ludzie wysyłają poprzez takie modalności, jak wyraz twarzy, wypowiadane słowa i gesty behawioralne. Zastosowania to: monitorowanie mediów społecznościowych, analityka emocji, empatia robotyczna. \n", + " * Przetwarzanie sensoryczne - Wykorzystując sensoryczne i inne kontekstowe informacje środowiskowe, algorytmy sterują rozpoznawaniem twarzy, głosu i gestów, widzeniem komputerowym i teledetekcją. \n", + " * Przetwarzanie wirtualne - Systemy sztucznej inteligencji przekładają poznanie, emocje i/lub wrażenia zmysłowe na pożądane, celowe, skuteczne działania, które tworzą scenariusze „następnego najlepszego działania” w inteligentnej robotyce, systemach rekomendacji, automatyzacji procesów robotycznych i pojazdach autonomicznych. \n", + "\n", + "
\n", + "
Jest tylko jeden, bardzo duży problem. Jak zbadać moralność AI, kiedy nie istnieje tylko jedna, uniwersalna etyka? To co w jednej kulturze jest chwalone, w innej jest zakazane, co w jednej grupie społecznej jest normalne, w drugiej jest ekscentryczne.
\n", + "
\n", + "
Drugim ważnym zarzutem co do moralnego testu Turinga jest pytanie, czyją moralność on tak naprawdę bada. Czy na pewno jest to moralność AI? A może jednak moralność twórców, którzy tą AI stworzyli i zaimplementowali w niej swoje własne wartości?
\n", + "
\n", + "
Ostatnim przytaczanym zarzutem co do moralnego testu Turinga jest fakt, że nie mierzy on moralności sztucznej inteligencji, a jedynie jej zdolność do udawania moralności. Główny kontrargument przeciwko tej tezie brzmi: ale czy to ważne?
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hierarchia emocji. Zachowania empatyczne. \n", + "
\n", + "
Przywołajmy jeszcze raz piramidę emocji, którą poznaliśmy już na wcześniejszych zajęciach. Piramida ta pokazuje, które emocje są najbardziej pierwotne, a które świadczą o największej samoświadomości i inteligencji emocjonalnej. Warto zwrócić uwagę na fakt, że piramida ta wskazuje też kolejność nabywania zdolności do odczuwania poszczególnych emocji w procesie rozwoju. Co więcej, bardzo ważnym jest spostrzeżenie, iż bez \"osiągnięcia\" danego piętra, nie można osiągnąć emocji znajdujących się wyżej w piramidzie. Fakt ten ma duży wpływ na próbę zaimplementowania emocji, empatii i samoświadomości w prawdziwej AI.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Piramida inteligencji emocjonalnej, Autor: Joanna Siwek, Żródło: Opracowanie własne na podstawie [13]](../grafiki/SE2/se2_2.png \"inteligencja emocjonalna\") \n", + "
Piramida inteligencji emocjonalnej. Na różnych poziomach znajdują sie różne rodzaje emocji, ustawione względem stopnia skomplikowania oraz kolejności ich nabywania. Żródło: Opracowanie własne na podstawie [13]
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Wyczerpujący model empatii, który mógłby być zastosowany do prawdziwej SI, wymagałby zaimplementowania 3 poziomów hierarchicznych zdolności empatycznych [8],[9]:
\n", + "\n", + " * Zdolności komunikacyjnych - rozpoznania, wyrażania i reprezentacji emocji - tj. mimikry i rezonowania emocjonalnego, na poziomie biologicznym i automatycznym\n", + " * Regulacji emocji - systemów sterowania wrodzonymi mechanizmami takimi jak uwaga, ekscytacja i humor\n", + " * Mechanizmów kognitywnych - mechanizmów ewaluacji i re-ewaluacji sytuacji, teorii umysłu i symulacji umysłowej." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Hierarchia emocji z zaznaczeniem stopnia świadomości i podziału na emocje fizyczne i psychiczne, Autor: Joanna Siwek, Źródło: [7]](../grafiki/SE2/se2_3.png \"hierarchia emocji\") \n", + "
Hierarchia emocji z zaznaczeniem stopnia świadomości i podziału na emocje fizyczne i psychiczne. Źródło: [7].
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Zarówno rozwój jak i sama hierarchia emocji działa w kierunku od lewego dolnego rogu wykresu do gónego prawego rogu. Oznacza to, że najwcześniejsze i najprostsze są emocje mocno motoryczne, nie wymagające odróżniania siebie od innych, takie jak mimikra, naśladownictwo. Takie stadium rozwoju nazywa się \"ja ekologicznym\" (ecological self). Dopiero rozwój emocjonalny i większa umiejętność odróżnienia siebie od innych pozwala na powstanie \"wyższych\" emocji empatycznych. Możliwość identyfikacji siebie i innych obiektów/ludzi (np. w lustrze, na zdjęciu) oznacza powstanie \"interpersonalnego ja\". Na tym poziomie możliwa jest empatia emocjonalna - np. płacz, gdy komuś obok stała się krzywda. Kolejny poziom rozwoju to \"ja społeczne\" (social self). Jest to stan, kiedy jesteśmy w stanie bezpośrednio rozróżnić pomiędzy sobą a inną osobą (na tym poziomie powstaje zdolność do emocji empatycznych drugiego rzędu, takich jak współczucie i zazdrość).
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Hierarchia cech i emocji w rozwoju sztucznej empatii, Autor: Joanna Siwek, Źródło: Opracowanie własne na podstawie [7]](../grafiki/SE2/se2_4.png \"Hierarchia rozwoju emocji\")\n", + "
Hierarchia cech i emocji w rozwoju sztucznej empatii. Źródło: Opracowanie własne na podstawie [7].
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Na różnym etapie umiejętności oddzielenia siebie od innych powstają różne emocje [7]:
\n", + "\n", + " * Emocje pierwotne\n", + " * Rezonowanie motoryczne\n", + " * Pierwsze, proste emocje społeczne\n", + " * Przyjmowanie perspektywy\n", + " * Metapoznanie\n", + " * Regulowanie emocji\n", + " * Emocje społeczne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modele empatii\n", + "
\n", + "
W tym momencie istnieje sporo różnych modeli empatii, jednakże wiele z nich opiera się na kilku podstawowych, które są następnie modyfikowane. Omówimy tu te najważniejsze, zebrane w [9].
\n", + "\n", + "#### Model empatii kognitywnej i emocjonalnej\n", + " \n", + " Pierwszym a zarazem najbardziej popularnym modelem jest model dzielący empatię na dwie sfery:\n", + " \n", + " * Emocjonalną - związaną ze sferą bilogiczną i automatyczną, obejmującą takie akcje jak mimikra oraz mechanizmy akcja-perceptron związane z neuronami lustrzanymi\n", + " * Kognitywną - związaną ze zdolnością do zrozumienia stanu emocjonalnego innych, przyjmowaniem perspektywy i teorią umysłu.\n", + " \n", + " Model ten sugeruje, że jądrem empatii jest neuronowa aktywacja samodoświadczenia emocji podczas bycia wystawionym na czynniki emocjonalne doświadczane przez innych.\n", + " \n", + " \n", + "#### Model Matrioszki \n", + " \n", + " Drugi z modeli to przytoczony już pośrednio model matrioszki (Russian doll model), który polega na określeniu pewnej piramidy zdolności empatycznych, od najbardziej podstawowych i mechanicznych do najbardziej skomplikowanych i społecznych, nabywanych w odpowiedniej kolejności podczas rozwoju człowieka. Ominięcie żadnej z warstw nie jest możliwe, a wszystkie razem są potrzebne do osiągnięcia pełnej empatii.\n", + " \n", + " \n", + "#### Model wielowymiarowy\n", + " \n", + " Trzeci model to model wielowymiatowy. Wyróżnia on 4 wymiary: antecedens, procesy, rezultaty interpersonalne i rezultaty intrapersonalne. Wszystkie te wymiary składają się na sytuację empatyczną.\n", + " \n", + " * Antecedens obejmuje charakterystykę osoby (zdolności uwarunkowane biologicznie, historię nauki), a ponadto sytuację (siłę emocji, stopień podobieństwa do sytuacji wcześniej zaistniałej).\n", + " * Procesy wytwarzają zachowanie empatyczne\n", + " * nie-kognitywne (mimikra, reakcje odruchowe wrodzone)\n", + " * proste mechanizmy kognitywne (odruchy nabyte, etykietowanie, asocjacja)\n", + " * Wyższe mechanizmy kognitywne (asocjacja lingwistycznam przyjmowanie perspektywy)\n", + " * Wyniki intrapersonalne obejmują reultaty równoległe (rezonowanie z celem) i reaktywne (różniące się od emocji celu)\n", + " * Wyniki interpersonalne obejmują skótki sytuacji empatycznej dla związku pomiędzy obiektem empatyzującym i obiektem empatyzowanym." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Przegląd teoretycznych modeli empatii i ich komponentów, Autor: Joanna Siwek, Źródło: Opracowanie własne na podstawie [9]](../grafiki/SE2/se2_5.png \"modele teoretyczne\") \n", + "
Przegląd teoretycznych modeli empatii i ich komponentów. Źródło: Opracowanie własne na podstawie [9].
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Nauka poprzez empatię. Odtwarzanie modelu rozwoju dziecka\n", + "
\n", + "
Dzięki odkryciu neuronów lustrzanych, naukowcy zajmujący się sztuczną empatią mogli zacząc poszukiwać związków przyczynowo-skutkowych pomiędzy budową mózgu, rozwojem człowieka i powstawaniem empatii. Badania naukowe dowiodły, iż do 18 miesiąca życia człowieka, dziecko nie wykazuje cech wyższej empatii - nie potrafi wyobrazić sobie emocji czy też myśli innych. Co więcej, do tego wieku dziecko nie rozróżnia w ogóle siebie od innych, bajek/snu od jawy, istot żywych od przedmiotów. Ogólnie - dziecko nie posiada samoświadomości. Stan taki pojawia się dopiero po jakimś czasie, w wyniku interakcji z opiekunem. To spostrzeżenie zachęciło naukowców do tego, aby eksperymentować z próbą przeniesienia interakcji opiekuna z małym dzieckiem w sferę interakcji człowieka i maszyny. Celem tego jest próba wzbudzenia empatii (a potem samoświadomości) u AI, wystawiając je na te same bodźce, które kształtują małego człowieka [14].
\n", + "
\n", + "
Powstanie empatii u dziecka ma zatem bardzo duży związek z samoświadomością, a mianowicie ze zdolnością odróżnienia siebie od innych. Zgodnie z [7], możliwość kontrolowania emocji jest nabywana stopniowo podczas rozwoju procesu odróżnianiania siebie od innych. Na samym początku dziecko uczy się odróżniać siebie od reszty otoczenia, zarówno obiektów żywych jak i martwych. Dokonuje tego, poprzez próbę synchronizacji z otoczeniem, np. poprzez uderzanie. Następnym krokiem jest interakcja z opiekunem przy pomocy neuronów lustrzanych - dziecko próbuje zsynchronizować się z akcją opiekuna, np. reagując na grę w \"akuku\". Pomaga tu wyolbrzymianie emocji przez opiekuna - im bardziej wyolbrzymione, tym łatwiejsze do zrozumienia przez dziecko - zrozumienia w formie przypisania jako reakcja na daną czynność.
\n", + "
\n", + "
Kolejnym stadium rozwoju samoświadomości jest rozwój osobowości społecznej. Powstaje ona, kiedy dziecko jest w stanie zsynchronizować się z inną osobą bądź obiektem na płaszczyźnie nie rzeczywistej - na przykład bawiąc się w udawanie przyjęcia z herbatką. Jeszcze większy rozwój wyobraźni prowadzi nareszcie do powstania takich wyższych cech jak współczucie czy zazdrość, które są uważane za osiągnięcie meta-poznania.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Schemat pokazujący, w jaki sposób uczy się dziecko do 18-tego miesiąca życia, Autor: Joanna Siwek, Źródło: Opracowanie własne na podstawie [14]](../grafiki/SE2/se2_6.png \"model dziecka\") \n", + "
Schemat pokazujący, w jaki sposób uczy się dziecko do 18-tego miesiąca życia. Źródło: Opracowanie własne na podstawie [14].
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Koncepcja architektury, pozwalającej na nauczenie SI empatii przy pomocy modelu rozwoju dziecka, obejmuje następujące elementy [7]:
\n", + "\n", + " * Głównym mechanizmem jest \"rozrywka\" - uczenie przez zabawę\n", + " * Obiektem synchronizacji SI może być zarówno człowiek jak i obiekt\n", + " * Celem jest osiągnięcie wyższego poziomu rozróżnienia siebie od innych/otoczenia oraz kontrola emocji\n", + " * Wytworzenie \"wymyślonych\" akcji w kierunku obiektów jest realizowane poprzez przełączanie akcji z jednego celu na drugi (np. przeniesienie akcji \"uśmiechnij się do opiekuna robiącego \"akuku\"\" na \"uśmiechnij się do misia\")\n", + " * Kolejne etapy rozwoju powinny następować dopiero po ukończeniu poprzedniego\n", + "\n", + "
Na ten moment istnieje kilka projektów, implementujących metody nauki empatii poprzez symulacje rozwoju dziecka. Najbardziej znanym z nich jest robot-dziecko Affetto. Jednym z problemów projektu jest fakt, iż opiekunowie nie wytwarzają więźi z Affetto tak, jak robi to rodzic z dzieckiem, co wpływa na autentyczność emocji i tym samym na skutki uczenia.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Podsumowanie - perspektywy na przyszłość \n", + "
\n", + "
Trudnym zadaniem jest nie tylko uzbrojenie sztucznej inteligencji w empatię i moralność, ale już nawet sama weryfikacja tego, czy dana AI jest moralna i empatyczna. Na obecny moment istnieje bardzo szeroka i rozwijająca się dziedzina, której celem jest uwzględnienie emocjii w spektrum zdolności sztucznej inteligencji. Aby ominąć problem narzucania moralności i systemów wartości przez twórców AI, stosuje się m.in. takie zabiegi, jak próba nauczenia AI empatii na takiej samej zasadzie, jak uczy się dziecko. Ogólnie rzecz biorąc, na obecnym etapie rozwoju technologii wiele elementów sztucznej empatii i sztucznej moralności jest już implementowana w istniejących systemach, jednakże od stworzenia prawdziwej, moralnej super sztucznej inteligencji jesteśmy jeszcze daleko.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Zadania\n", + "
\n", + "
Zad. 1 Ustal system wartości, jakiemu podlegał będzie Twoj empatyczny chatbot. Zastanów się, jakiej dziedziny będzie dotyczył. Jak wygląda etyka w tej sferze? Jakie cechy charakteru powinien wykazywać Twoj chatbot? Jakich nie powinien wykazywać? Określ granice, jakich nie powinien przekraczać (np. nigdy nie obrażać się na klienta). Określ zasady, których powinien się trzymać w kontaktach z użytkownikiem (np. klient ma zawsze rację). Swoje przemyślenia zbierz w tabeli.
\n", + "\n", + "
\n", + " \n", + " Nasz chatbot dotyczy wędkarstwa, które podlega pod sferę zainteresowań i hobby. Symulować będzie swobodną rozmowę dwóch osób. Z tego względu nasz chatbot będzie miał dosyć sporą swobodę w wyrażaniu siebie oraz w reagowaniu na osobę, która będzie z nim rozmawiać. Nasz bot będzie miał za zadanie najpierw delikatnie sprowadzać każdy temat rozmów do tematu wędkarstwa, a gdy to nie odniesie oczekiwanych rezultatów, to stanie się on bardziej natarczywy. Chat zawsze uważa, że to on ma rację i ciężko jest go przekonać do własnych racji. \n", + "\n", + "
\n", + "
\n", + "\n", + "
Zad. 2 Przeanalizuj przytoczone modele empatii. Wybierz, który z nich zastosujesz do swojego Chatbota. W razie konieczności sięgnij głębiej do literatury. Swój wybór uzasadnij.
\n", + "\n", + "
\n", + " \n", + " W ramach naszego projektu wykorzystamy model empatii kognitywnej i emocjonalnej. Model ten najbardziej pasuje do założeń projektu ze względu na silne przywiązanie emocjonalne chatbota do wędkarstwa.\n", + "\n", + "
\n", + "
\n", + "\n", + "
Zad. 3 Twój Chatbot będzie miał ograniczone możliwości wyrażania swoich uczuć. Jakie uczucia zaimplementujesz? Dlaczego te? Czy spełniają one wymogi, które stawia przez Chatbotem dziedzina, w której będzie zaimplementowany? Zaplanuj, w jaki sposób chatbot będzie wyrażał swoje emocje - słownie, emotikonami, graficznie (rysunki), mimika, wirtualne gesty? Spróbuj znaleźć narzędzia, które pomogą Ci w realizacji tego celu. Zapisz pomysły i znalezione źródła.
\n", + "\n", + "
\n", + " \n", + " Nasz bot będzie wyrażał radość, smutek, podirytowanie, obojętność, podekscytowanie oraz zainteresowanie. Głównie będa one wyrażane słownie, ale nie wykluczamy na tym etapie emotikon. W tym celu wykorzystamy materiały grupujące emotki względem danych emocji, np. https://www.frontiersin.org/articles/10.3389/fpsyg.2022.921388/full\n", + "\n", + "
\n", + "
\n", + "\n", + "
Zad. 4 Jak wyglądały rozmowy z pierwszymi AI? Były...dziwne. Przeczytaj rozmowy pierwszych AI (materiał w języku angielskim):
\n", + "
https://web.archive.org/web/20130120161839/http://www.stanford.edu/group/SHR/4-2/text/dialogues.html
\n", + "
\n", + "\n", + "
Zad. 5 Teraz spróbuj porozmawiać cleverbotem: https://www.cleverbot.com/
\n", + "
\n", + "
Zad.6 Aby określić stopień zaawansowania AI, stosuje się test Turinga. Przeczytaj i wykonaj wizualny test Turing (materiały w języku angielskim):
\n", + "https://www.newscientist.com/article/visual-turing-test/\n", + "\n", + "
\n", + " \n", + " Uzyskałem 75%\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Źródła:\n", + "\n", + "[1] https://www.ibm.com/watson/assets/duo/pdf/everydayethics.pdf\n", + "\n", + "[2] https://towardsdatascience.com/empathy-in-artificial-intelligence-eb167f62af99\n", + "\n", + "[3] https://www.oecd.org/going-digital/ai-intelligent-machines-smart-policies/conference-agenda/ai-intelligent-machines-smart-policies-oheigeartaigh.pdf\n", + "\n", + "[4] https://plato.stanford.edu/entries/turing-test/\n", + "\n", + "[5] https://encyklopedia.pwn.pl/haslo/etyka;3898956.html\n", + "\n", + "[6] Jobin, Anna; Ienca, Marcello; Vayena, Effy (2 September 2020). \"The global landscape of AI ethics guidelines\". Nature. 1 (9): 389–399. arXiv:1906.11668. doi:10.1038/s42256-019-0088-2. S2CID 201827642.\n", + "\n", + "[7] Asada, M. Towards Artificial Empathy. Int J of Soc Robotics 7, 19–33 (2015). https://doi.org/10.1007/s12369-014-0253-z\n", + "\n", + "[8] Özge Nilay Yalçın, 2020, Empathy framework for embodied conversational agents, Cognitive Systems Research, Volume 59, pp. 123-132, ISSN 1389-0417, https://doi.org/10.1016/j.cogsys.2019.09.016.\n", + "\n", + "[9] Yalçın, Ö.N., DiPaola, S. Modeling empathy: building a link between affective and cognitive processes. Artif Intell Rev 53, 2983–3006 (2020). https://doi.org/10.1007\n", + "\n", + "[10] https://en.wikipedia.org/wiki/Ethics_of_artificial_intelligence\n", + "\n", + "[11] https://en.wikipedia.org/wiki/Artificial_general_intelligence\n", + "\n", + "[12] https://www.infoworld.com/article/3606472/developing-a-turing-test-for-ethical-ai.html\n", + "\n", + "[13] Drigas, A.S.; Papoutsi, C. A New Layered Model on Emotional Intelligence. Behav. Sci. 2018, 8, 45. https://doi.org/10.3390/bs8050045\n", + "\n", + "[14] Minoru Asada,2015, Development of artificial empathy,Neuroscience Research, Vol. 90, pp. 41-50, ISSN 0168-0102, https://doi.org/10.1016/j.neures.2014.12.002." + ] + } + ], + "metadata": { + "author": "Joanna Siwek", + "email": "jsiwek@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "subtitle": "2. Empatia a prawdziwa Sztuczna Inteligencja", + "title": "Sztuczna empatia", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/SE4.ipynb b/SE4.ipynb new file mode 100644 index 0000000..17a78a3 --- /dev/null +++ b/SE4.ipynb @@ -0,0 +1,1581 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "![baner aitech](../grafiki/SE4/logo.jpg \"baner\")\n", + "\n", + "***\n", + "\n", + "# Sztuczna empatia 4\n", + "## Empatia w systemach dialogowych\n", + "### Joanna Siwek\n", + "\n", + "***\n", + "\n", + "### Spis treści\n", + "1. [Wstęp](#introduction)\n", + "2. [Analiza języka mówionego i pisanego](#paragraph1)\n", + "3. [Metody implementacji emocji w systemach dialogowych](#paragraph2)\n", + "4. [Chatboty i wirtualni asystenci](#paragraph3)\n", + "5. [Emocjonalni wirtualni rozmówcy](#paragraph4)\n", + "6. [Zadania](#paragraph5)\n", + "\n", + "***\n", + "\n", + "![baner ue](../grafiki/SE4/ae_ue.jpg \"baner\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wstęp \n", + "
\n", + "
Jednym z bardziej obiecujących zastosowań sztucznej empatii są szeroko rozumiane systemy dialogowe, w tym wirtualni asystenci tacy jak Alexa (Amazon) czy systemy pytająco-odpowiadające takie jak Watson (IBM). Systemy te są na bieżąco rozwijane, a badania wskazują, iż uwzględnienie w ich budowie emocji i zachowań empatycznych powoduje wzrost zadowolenia klienta z oferowanych usług.\n", + "
\n", + "
\n", + "
Pojęcie systemów dialogowych związane jest z kilkoma powiązanymi dziedzinami, takimi jak rozpoznawanie języka naturalnego, modele psychologiczne, rozpoznawanie emocji oraz lingwistka. Celem niniejszych zajęć, prócz przybliżenia wymienionych dziedzin, jest napisanie prostego chatbota na zadanym szkielecie, umożliwiającego przetwarzanie języka naturalnego oraz wyposażonego w podstawowe możliwości komunikacji emocjonalnej.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Analiza języka mówionego i pisanego\n", + "\n", + "\n", + "#### Przetwarzanie języka naturalnego\n", + "
\n", + "
Przetwarzanie języka naturalnego (Natural Language Processing NLP) to zdolność systemu komputerowego do rozumienia tekstu oraz mowy w sposób podobny do tego, jak robi to człowiek. NLP łączy lingwistykę komputerową (modelowanie języka ludzkiego oparte na regułach) z modelami statystycznymi, uczeniem maszynowym i deep learningiem. Razem, technologie te umożliwiają komputerom przetwarzanie języka ludzkiego w celu zrozumienia jego znaczenia, łącznie z nadawanym zamiarem i sentymentem użytkownika [3]. Programy NLP tłumaczą tekst pomiędzy językami, odpowiadają na komendy głosowe oraz analizują duże wolumeny tekstu, nawet w czasie rzeczywistym.
\n", + "
\n", + "
Zagadnienia przetwarzanie jezyka naturalnego dzielimy na [4]:
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Składowe przetwarzania języka naturalnego, Autor: Joanna Siwek, Źródło: Opracowanie własne](../grafiki/SE4/se4_1.png \"NLP\")\n", + "
Składowe przetwarzania języka naturalnego. Źródło: Opracowanie własne
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Głównymi zadaniami systemów NLP jest [3]:
\n", + "\n", + " * Rozpoznawanie mowy\n", + " * Tagowanie gramatyczne\n", + " * Rozpoznawanie znaczenia wyrazów\n", + " * Rozpoznawanie nazwanych obiektów\n", + " * Rozpoznawanie ko-referencji\n", + " * Analiza uczuć\n", + " * Tworzenie języka naturalnego\n", + "\n", + "
Wyróżniamy dwie główne metody przetwarzania języka naturalnego
\n", + "\n", + " * Metody reguł symbolicznych\n", + " * Deep learning\n", + " \n", + "
Metody regułowe polegają na ręcznym wypisywaniu reguł, według krórych prowadzone ma być rozumowanie w systemie. Jest to metoda historycznie starsza, posiadająca silne wady. Przede wszystkim, system działa jedynie w takim zakresie, w jakim zdefiniowane zostały reguły. Oznacza to, iż twórca musi dokładnie rozważyć wszystkie możliwe stany i aktywności systemu jeszcze przed jego stworzeniem. System nie będzie również w stanie zareagowac na sytuację, która nie została wcześniej zdefiniowana.
\n", + "
\n", + "
W odróżnieniu do systemów regułowych, systemy wykorzystujące deep learning same wywnioskowują reguły z dużych zbiorów danych. Im więcej danych jest dostarczonych, tym dokładniejszy jest system. Co więcej, systemy te wykorzystują statystykę, aby ominąć problemy z nieprawidłowo wprowadzonym tekstem czy niezrozumiałą mową - sygnał jest porównywany ze statystycznie najczęściej występującymi wejściami. Podobnie, uczenie maszynowe skupia się na najczęściej występujących sytuacjach i znaczeniach.
\n", + "
\n", + "
Pomimo wielu zalet modeli opartych na deep learningu, modele regułowe nadal są wykorzystywane, np. wtedy kiedy dostęp do dużych zbiorów danych jest niemożliwy.
\n", + "
\n", + "
Podstawowe elementy silników NLP to [15]:
\n", + "\n", + " * zamiar - zadanie, które chce wykonać użytkownik\n", + " * instancja - miejsce, czas, data\n", + " * wypowiedź\n", + " * kontekst - parametry sesji\n", + " * sesja - oznaczona przez początek i koniec konwersacji\n", + " \n", + "
\n", + "
Można wymienić kilka powodów, dla których NLP przydaje się konkretnie w chatbotach [15]:
\n", + "\n", + " * Pozwala na dokładniejszą interpretację danych wprowadzanych przez użytkownika\n", + " * Pozwala wyeliminować \"literówki\"\n", + " * Pozwala na komunikację zrozumiałą dla szerszego grona użytkowników\n", + " * Pozwala na szybszą naukę\n", + " * Wymaga mniejszego zbioru danych uczących\n", + " * Pozwala na abstrahowanie od konkretnej dziedziny zastosowań\n", + " \n", + "
\n", + "
Warto tu wspomnieć o podmiotowości systemów konwersacyjnych. Aby system komputerowy był zdefiniowany jako podmiot, musi on mieć zdolnośc do samodzielnego podejmowania decyzji. Zgodnie z tą definicją, podmioty konwersacyjne nie mogę być prostymi systemami typu jeżeli x to y, ponieważ system taki nie zakłada automatycznego podejmowania decyzji o tym, w jaki sposób odpowiedzieć na dany sygnał od użytkownika.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Metody implementacji emocji w systemach dialogowych \n", + "
\n", + "
W podmiotach konwersacyjnych zaimplementowanych na systemach wbudowanych (ang. embodied conversational agents - podmioty posiadające dedykowaną fizyczną realizację) empatia może być przypisana do wielu zachowań, takich jak mimikra, dopasowanie afektywne (np. odruchy stadne), empatyczna troska, altruizm i przyjmowanie perspektywy [2]. Zachowania te możemy podzielić na następujące kategorie:
\n", + "\n", + " * Mechanizmy kominikacji emocjonalnej - podmiot musi umieć odebrać oraz wysłać sygnały emocjonalne, np. przez słowa, mimikę, gesty\n", + " * Mechanizmy regulacji emocjonalnej - podmiot musi potrafić zareagować w odpowiedni sposób na sygnał emocjonalny\n", + " * Mechanizmy kognitywne - podmiot musi znać podstawowe zasady przyczynowo-skutkowe zachowań emocjonalnych oraz mieć możliwość pozyskania nowej wiedzy na ich temat\n", + " \n", + "
Każdy z tych poziomów zachowania posiada pewne swoje składowe, zależne od poziomu empatii - od bardziej podstawowych, instynktownych, do bardziej złożonych, związanych z inteligencją emocjonalną. Możemy zatem wyróżnić następujące zachowania:
\n", + " \n", + " * Komunikacja emocjonalna\n", + " * Rozpoznanie emocji np. system wizyjny\n", + " * Reprezentacja emocji np. mapa emocji\n", + " * Wyrażenie emocji np. zmiana tonu głosu\n", + " * Regulacja emocjonalna\n", + " * Samoregulacja wewnętrzna\n", + " * Humor\n", + " * Osobowość\n", + " * Regulacja międzypodmiotowa\n", + " * Podobieństwo\n", + " * Powiązanie emocjonalne\n", + " * Sympatia\n", + " * Mechanizmy kognitywne\n", + " * Ocena\n", + " * Re-ewaluacja\n", + " * Teoria umysłu - przyjmowanie perspektywy\n", + " \n", + "
Można wyróżnić dwa rodzaje emocjonalnych podmiotów konwersacyjnych, zaimplementowanych na systemach wbudowanych [2]:
\n", + "\n", + " * Sensitive Artificial Listener (SAL) - wrażliwy sztuczny słuchacz\n", + "
Jest to multimodalny system dialogowy, zdolny do niewerbalnej interakcji opartej na mowie, poruszaniu głową i mimice użytkownika. Bierze pod uwagę emocje rozmówcy i reaguje przy pomocy mimikry, opartej na rozpoznanym wyrazie twarzy.
\n", + "
\n", + " * Affective Listener - uczuciowy słuchacz\n", + "
Systemy takie wykrywają uczucia w odpowiedziach, dokonują rozumowania oraz odpowiadają. Jednakże system i jego ewaluacja są oparte na wcześniej określonych, wyspecyfikowanych scenariuszach, dotyczących konkretnych czynności. Ich celem jest zwiększenie użyteczności i i zadowolenia użytkownika.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Chatboty i wirtualni asystenci \n", + "
\n", + "
Chatboty możemy podzielić na dwie główne grupy [4]:
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Rodzaje chatbotów, Autor: Joanna Siwek, Źródło: Opracowanie własne](../grafiki/SE4/se4_2.png \"Rodzaje chatbotów\")\n", + "
Rodzaje chatbotów. Źródło: Opracowanie własne
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
Chatboty oparte na regułach nie są w stanie zareagować na sytuację, która nie została przewidziana w scenariuszu. Chatboty oparte na AI wykorzystują NLP oraz uczą się na podstawie interakcji z użytkownikiem.
\n", + "
\n", + "
Stworzenie chatbota, umożliwiającego rozmowę na dowolny temat, prowadzoną w języku naturalnym, nie jest proste. Główne wyzwania, z którymi należy się zmierzyć, to [4, 11]:
\n", + "\n", + " * synonimy, homonimy i slang\n", + " * \"literówki\"\n", + " * skróty\n", + " * pominięta interpunkcja\n", + " * różne akcenty\n", + " * pozostawanie w temacie\n", + " * unikanie powtarzalności\n", + " * generowanie odpowiedzi adekwatnych do emocji\n", + " \n", + "
W praktyce możliwe są dwa podejścia do tworzenia chatbotów. Pierwsze z nich polega na wykorzystaniu gotowych szkieletów. Jest to rozwiązanie prostsze, szybsze i tańsze, jednakże często nie jest ono wystarczająco dopasowane do wymagań użytkownika oraz trudne w dopasowaniu do konkretnej realizacji. Przykładami gotowych rozwiązań są np.: Botsify, Chatterbot, RASA, Wit.ai, Botkit, TARS.
\n", + "
\n", + "
Drugie rozwiązanie polega na stworzeniu bota od podstaw. Jest to rozwiązanie zdecydowanie dużo bardziej kosztowne i czasochłonne, jednakże pozwala ono otrzymać produkt w większym stopniu dopasowany do wymogów użytkownika. Niestety, rozwiązanie to wymaga sporego doświadczenia.
\n", + "
\n", + "
Ogólnie, kroki które należy wykonać przed przystąpieniem do budowy własnego chatbota są następujące [4]:
\n", + "\n", + " * Analiza logiki biznesowej\n", + " * Faza rozpoznania\n", + " * Analiza rynku konkurencyjnego\n", + " * Określenie głownych zadań i cech systemu\n", + " * Stworzenie logiki biznesowej produktu\n", + "\n", + "
Kolejnym zagadnieniem jest ocena działania chatbota. Istnieją dwa możliwe podejścia - ocena rozmowy przez człowieka oraz ocena automatyczna. Ocena przez człowieka daje dużo bardziej wiarygodne rezultaty, jest niestety zdecydowanie droższa od metody automatycznej. Metody automatyczne to na przykład współczynnik BLEU czy też metody oparte na odległości od \"złotej odpowiedzi\". Metody te są niestety mniej dokładne oraz nie nadają się do oceny chatbotów we wszystkich dziedzinach (np. open-domain chatbots) [11].
\n", + "\n", + "
Ale jak tak naprawdę działa inteligentny chatbot? Możemy wyróżnić kolejne fazy jego działania [16]:
\n", + " \n", + " * tokenizacja - chatbot rozpoczyna pracę poprzez pocięcie tekstu na kawałki i usunięcie interpunkcji\n", + " * normalizacja - następnie bot poszukuje najczęstszych literówek i błędów oraz je naprawia\n", + " * rozpoznanie jednostek - chatbot próbuje określić, jaki typ obiektu jest opisywany\n", + " * analiza zależności - bot dzieli zdanie na rzeczowniki, czasowniki, podmiot, interpunkcję i powszechnie stosowane wyrażenia\n", + " * generowanie - bot generuje pewną liczbę odpowiedzi przy pomocy wszystkich zebranych informacji i wybiera najbardziej odpowiednią do sytuacji, którą wysyła do użytkownika." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Emocjonalni wirtualni rozmówcy\n", + "
\n", + "
Istnieją dwa sposoby patrzenia na empatię w kontekście wirtualnych (i robotycznych) rozmówców [13]:
\n", + "\n", + " * sztuczne podmioty wchodzą w interakcję ze sobą lub otoczeniem, a obserwator (człowiek) odczuwa empatię\n", + " * użytkownicy (ludzie) wchodzą w interakcję ze sobą bądź otoczeniem, a sztuczny podmiot odczuwa empatię.\n", + " \n", + "
Tym samym podmioty empatyczne definiujemy jako [13]:
\n", + " \n", + " * Podmioty, które reagują emocjonalnie na sytuacje, które są bardziej zgodne z sytuacją emocjonalną innego podmiotu lub\n", + " * Podmioty, które poprzez swój projekt i zachowania powodują u użytkowników odpowiedzi, które są bardziej zgodne z sytuacją emocjonalną podmiotu.\n", + " \n", + "
Procesy umożliwiające podmiotowi bycie postrzeganym jako cel empatii to [13]:
\n", + "\n", + " * sytuacja/kontekst\n", + " * cechy obserwatora\n", + " * mechanizmy empatii\n", + " * cechy obiektu empatii\n", + " * modulacja empatii\n", + " \n", + "
\n", + "
Wyróżnić można dwa główne typy modeli implementacji empatii [13]:
\n", + "\n", + " * Analityczne - modele te powstają bezpośrednio z modeli teoretycznych i są bardziej adekwatne. Z drugiej strony, modele te są często bardzo ogólne, i nie zawierają wystarczającej ilości informacji do stworzenia praktycznej implementacji modelu. W związku z tym mogą powstawać problemy, z niedokładnością odtowrzenia procesu myślowego twórcy modelu oraz problemu pomyłek w translacji modelu.\n", + " * Empiryczne - modele te powstają na podstawie danych zebranych na podstawie interakcji emocjonalnych ludzi w sytuacjach empatycznych. Modele są odporne na problem pomyłek w translacji, jednakże zależą w bardzo dużym stopniu od samych danych, na których się opierają. Z tego powodu, są one bardzo trudne do uogólnienia.\n", + "\n", + "
\n", + "
Przykłady systemów, wykorzystujących empatię to np.:
\n", + "\n", + " * FearNot!\n", + " * Carmen's Bright IDEAS\n", + " * SimSensei Kiosk\n", + " \n", + "
\n", + "
Pytania, na które należy odpowiedzieć sobie, tworząc empatycznego wirtualnego rozmówce, to [13]:
\n", + " \n", + " * Jaki typ zachowania powinien wywoływac empatię? \n", + " * Jaki wygląd i cechy będą wpływać na wywoływanie empatii? (np. wygląd dziecka)\n", + " * Jak ważny jest kontekst i sytuacja?\n", + " * Jakie systemy mediacyjne powinny być zastosowane i w jakich sytuacjach?\n", + " * Jak możemy zmierzyć efekt, jaki obiekt empatii wywiera na użytkowniku?\n", + "\n", + "
Ostatnie dwa-trzy lata cechują się gwałtownym rozwojem systemów dialogowych wzbogaconych o elementy empatyczne czy emocjonalne. Systemy te są głownie oparte o deep learning i wykorzystują duże korpusy danych z takich źródeł jak Twitter, Redit czy Amazon. Ponieważ najłatwiej systemy dialogowe uczy się przy pomocy etykietowanych danych, bardzo często jako etykiety wykorzystuje się tagi bądź też emotikony [7]. Wzbogacenie istniejących systemów dialogowych o emocje sprzyja zwiększeniu ich dokładności. Przykładowo, szukając najbliższych sąsiadów w systemie pozbawionym emocji, jako najbliższych sąsiadów słowa \"headache\" określono słowa \"vomit\" i \"cough\". Natomiast kiedy wzbogacono system o emocje, jako najbliźsi sąsiedzi tegoż samego słowa zostały wskazane pojęcia \"irritation\" i \"anger' [7].
\n", + "
\n", + "
Istnieją trzy możliwości implementacji emocji [12]:
\n", + "\n", + " * podejście wielowymiarowe - określenie emocji jako wektorów\n", + " * podejście dyskretne - wcześniejsze określenie kategorii emocji i klasyfikacja\n", + " * modele oceniające - określenie warunkowych rozkładów prawdopodobieństwa występowania danych emocji.\n", + " \n", + "
\n", + "
Modele empatycznych systemów dialogowych w znacznej większości są oparte na konwolucyjnych bądź rekurencyjnych sieciach neuronowych. Najczęściej stosowanym rozwiązaniem jest rozwiązanie enkoder-dekoder, gdzie dane wejściowe są najpierw kodowane, następnie trafiają do dwóch/trzech sieci neuronowych - odpowiedzialnych za przetwarzanie treści, przetwarzanie kontekstu i przetwarzanie emocji, a następnie odpowiedzi sieci są ze sobą łączone i dekodowane, oraz generowana jest odpowiedź dla użytkownika. Szczegółowy i bardzo dobrze opisany model można znaleźć w [8]. W modelu tym oblicza się rozkład prawdopodobieństwa wystąpienia danej emocji w odpowiedzi na sygnał nadany przez użytkownika. Emocje przekazywane są do systemu przez etykiety. Rozwiązania, które często znajdują zastosowanie w modelach emocjonalnych to GRU (gated recurrent unit), LSTM (long short-term memory), sequence2sequence, memory networks.
\n", + "
\n", + "
Enkodery uwzględniające emocje różnią się od ogólnych enkoderów tym, iz kontekst który zwracają zawiera również informacje związane z emocjami [12]:
\n", + "\n", + " * Jeżeli dostępne są etykiety emocji dla kontekstu lub danych podanych przez użytkownika, świadomość emocji może zostać łatwo osiągnięta poprzez podanie etykiet jako dodatkowych informacji do enkodera.\n", + " * Jeżeli etykiety nie są dostępne, konieczne jest zastosowanie dodatkowego detektora emocji w celu przypisania etykiet.\n", + " \n", + "
\n", + "
Problemy, z którymi borykają się emocjonalne systemy dialogowe to [12]:
\n", + "\n", + " * braki etykiet\n", + " * ewaluacja emocji\n", + " * problem z niespójnością celu uwzględnienia emocji z innymi celami, np. poprawnością gramatyczną\n", + " * nie wszystkie wyrazy w wypowiedzi powinny być nacechowane emocjonalnie\n", + " \n", + "
\n", + "
Przykładowe modele empatycznych rozmówców można znaleźć np. w [10] (jest to jeden z bardziej znanych modeli), czy [9] (oparty na poprzednim modelu, nowszy model z grudnia 2020).
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Zadania \n", + "\n", + "Stwórzmy prosty czatbot oparty na przetwarzaniu języka naturalnego i zbiórze reguł. Wykorzystamy do tego framework RASA [1], który jest open source. Zacznijmy od zainstalowania rasy i wszystkich zależności." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Kod Rasa jest asynchroniczny, dlatego potrzemujemy biblioteki asyncio..." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: nest_asyncio==1.5.* in /usr/local/lib/python3.9/dist-packages (1.5.5)\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 177, in emit\n", + " self.console.print(renderable, overflow=\"ignore\", crop=False, style=style)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1673, in print\n", + " extend(render(renderable, render_options))\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1305, in render\n", + " for render_output in iter_render:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 134, in __rich_console__\n", + " for line in lines:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/segment.py\", line 249, in split_lines\n", + " for segment in segments:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1283, in render\n", + " renderable = rich_cast(renderable)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/protocol.py\", line 36, in rich_cast\n", + " renderable = cast_method()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 130, in __rich__\n", + " pip_cmd = get_best_invocation_for_this_pip()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/entrypoints.py\", line 58, in get_best_invocation_for_this_pip\n", + " if found_executable and os.path.samefile(\n", + " File \"/usr/lib/python3.9/genericpath.py\", line 101, in samefile\n", + " s2 = os.stat(f2)\n", + "FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.9'\n", + "Call stack:\n", + " File \"/usr/lib/python3.9/runpy.py\", line 197, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/__main__.py\", line 31, in \n", + " sys.exit(_main())\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/main.py\", line 70, in main\n", + " return command.main(cmd_args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 101, in main\n", + " return self._main(args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 223, in _main\n", + " self.handle_pip_version_check(options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py\", line 190, in handle_pip_version_check\n", + " pip_self_version_check(session, options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 236, in pip_self_version_check\n", + " logger.warning(\"[present-rich] %s\", upgrade_prompt)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1454, in warning\n", + " self._log(WARNING, msg, args, **kwargs)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1585, in _log\n", + " self.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1595, in handle\n", + " self.callHandlers(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1657, in callHandlers\n", + " hdlr.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 948, in handle\n", + " self.emit(record)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n", + " self.handleError(record)\n", + "Message: '[present-rich] %s'\n", + "Arguments: (UpgradePrompt(old='22.2.2', new='23.0.1'),)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install nest_asyncio==1.5.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "...którą importujemy i stosujemy." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import nest_asyncio\n", + "nest_asyncio.apply()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rozwiązujemy problemy z zależnościami:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: fbmessenger==6.0.* in /home/students/s444341/.local/lib/python3.9/site-packages (6.0.0)\n", + "Requirement already satisfied: requests>=2.0 in /usr/local/lib/python3.9/dist-packages (from fbmessenger==6.0.*) (2.28.1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests>=2.0->fbmessenger==6.0.*) (2022.9.14)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.9/dist-packages (from requests>=2.0->fbmessenger==6.0.*) (2.1.1)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests>=2.0->fbmessenger==6.0.*) (1.26.12)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests>=2.0->fbmessenger==6.0.*) (3.4)\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 177, in emit\n", + " self.console.print(renderable, overflow=\"ignore\", crop=False, style=style)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1673, in print\n", + " extend(render(renderable, render_options))\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1305, in render\n", + " for render_output in iter_render:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 134, in __rich_console__\n", + " for line in lines:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/segment.py\", line 249, in split_lines\n", + " for segment in segments:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1283, in render\n", + " renderable = rich_cast(renderable)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/protocol.py\", line 36, in rich_cast\n", + " renderable = cast_method()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 130, in __rich__\n", + " pip_cmd = get_best_invocation_for_this_pip()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/entrypoints.py\", line 58, in get_best_invocation_for_this_pip\n", + " if found_executable and os.path.samefile(\n", + " File \"/usr/lib/python3.9/genericpath.py\", line 101, in samefile\n", + " s2 = os.stat(f2)\n", + "FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.9'\n", + "Call stack:\n", + " File \"/usr/lib/python3.9/runpy.py\", line 197, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/__main__.py\", line 31, in \n", + " sys.exit(_main())\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/main.py\", line 70, in main\n", + " return command.main(cmd_args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 101, in main\n", + " return self._main(args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 223, in _main\n", + " self.handle_pip_version_check(options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py\", line 190, in handle_pip_version_check\n", + " pip_self_version_check(session, options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 236, in pip_self_version_check\n", + " logger.warning(\"[present-rich] %s\", upgrade_prompt)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1454, in warning\n", + " self._log(WARNING, msg, args, **kwargs)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1585, in _log\n", + " self.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1595, in handle\n", + " self.callHandlers(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1657, in callHandlers\n", + " hdlr.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 948, in handle\n", + " self.emit(record)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n", + " self.handleError(record)\n", + "Message: '[present-rich] %s'\n", + "Arguments: (UpgradePrompt(old='22.2.2', new='23.0.1'),)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install fbmessenger==6.0.*" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: pykwalify==1.8.* in /home/students/s444341/.local/lib/python3.9/site-packages (1.8.0)\n", + "Requirement already satisfied: python-dateutil>=2.8.0 in /usr/local/lib/python3.9/dist-packages (from pykwalify==1.8.*) (2.8.2)\n", + "Requirement already satisfied: docopt>=0.6.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from pykwalify==1.8.*) (0.6.2)\n", + "Requirement already satisfied: ruamel.yaml>=0.16.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from pykwalify==1.8.*) (0.16.13)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.0->pykwalify==1.8.*) (1.16.0)\n", + "Requirement already satisfied: ruamel.yaml.clib>=0.1.2 in /usr/local/lib/python3.9/dist-packages (from ruamel.yaml>=0.16.0->pykwalify==1.8.*) (0.2.6)\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 177, in emit\n", + " self.console.print(renderable, overflow=\"ignore\", crop=False, style=style)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1673, in print\n", + " extend(render(renderable, render_options))\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1305, in render\n", + " for render_output in iter_render:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 134, in __rich_console__\n", + " for line in lines:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/segment.py\", line 249, in split_lines\n", + " for segment in segments:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1283, in render\n", + " renderable = rich_cast(renderable)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/protocol.py\", line 36, in rich_cast\n", + " renderable = cast_method()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 130, in __rich__\n", + " pip_cmd = get_best_invocation_for_this_pip()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/entrypoints.py\", line 58, in get_best_invocation_for_this_pip\n", + " if found_executable and os.path.samefile(\n", + " File \"/usr/lib/python3.9/genericpath.py\", line 101, in samefile\n", + " s2 = os.stat(f2)\n", + "FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.9'\n", + "Call stack:\n", + " File \"/usr/lib/python3.9/runpy.py\", line 197, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/__main__.py\", line 31, in \n", + " sys.exit(_main())\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/main.py\", line 70, in main\n", + " return command.main(cmd_args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 101, in main\n", + " return self._main(args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 223, in _main\n", + " self.handle_pip_version_check(options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py\", line 190, in handle_pip_version_check\n", + " pip_self_version_check(session, options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 236, in pip_self_version_check\n", + " logger.warning(\"[present-rich] %s\", upgrade_prompt)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1454, in warning\n", + " self._log(WARNING, msg, args, **kwargs)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1585, in _log\n", + " self.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1595, in handle\n", + " self.callHandlers(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1657, in callHandlers\n", + " hdlr.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 948, in handle\n", + " self.emit(record)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n", + " self.handleError(record)\n", + "Message: '[present-rich] %s'\n", + "Arguments: (UpgradePrompt(old='22.2.2', new='23.0.1'),)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install pykwalify==1.8.*" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: keras==2.8.* in /home/students/s444341/.local/lib/python3.9/site-packages (2.8.0)\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 177, in emit\n", + " self.console.print(renderable, overflow=\"ignore\", crop=False, style=style)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1673, in print\n", + " extend(render(renderable, render_options))\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1305, in render\n", + " for render_output in iter_render:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 134, in __rich_console__\n", + " for line in lines:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/segment.py\", line 249, in split_lines\n", + " for segment in segments:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1283, in render\n", + " renderable = rich_cast(renderable)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/protocol.py\", line 36, in rich_cast\n", + " renderable = cast_method()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 130, in __rich__\n", + " pip_cmd = get_best_invocation_for_this_pip()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/entrypoints.py\", line 58, in get_best_invocation_for_this_pip\n", + " if found_executable and os.path.samefile(\n", + " File \"/usr/lib/python3.9/genericpath.py\", line 101, in samefile\n", + " s2 = os.stat(f2)\n", + "FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.9'\n", + "Call stack:\n", + " File \"/usr/lib/python3.9/runpy.py\", line 197, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/__main__.py\", line 31, in \n", + " sys.exit(_main())\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/main.py\", line 70, in main\n", + " return command.main(cmd_args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 101, in main\n", + " return self._main(args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 223, in _main\n", + " self.handle_pip_version_check(options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py\", line 190, in handle_pip_version_check\n", + " pip_self_version_check(session, options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 236, in pip_self_version_check\n", + " logger.warning(\"[present-rich] %s\", upgrade_prompt)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1454, in warning\n", + " self._log(WARNING, msg, args, **kwargs)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1585, in _log\n", + " self.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1595, in handle\n", + " self.callHandlers(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1657, in callHandlers\n", + " hdlr.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 948, in handle\n", + " self.emit(record)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n", + " self.handleError(record)\n", + "Message: '[present-rich] %s'\n", + "Arguments: (UpgradePrompt(old='22.2.2', new='23.0.1'),)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install keras==2.8.*" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Collecting tensorflow==2.7.*\n", + " Using cached tensorflow-2.7.4-cp39-cp39-manylinux2010_x86_64.whl (496.1 MB)\n", + "Requirement already satisfied: gast<0.5.0,>=0.2.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (0.4.0)\n", + "Requirement already satisfied: tensorboard~=2.6 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (2.8.0)\n", + "Collecting tensorflow-estimator<2.8,~=2.7.0rc0\n", + " Using cached tensorflow_estimator-2.7.0-py2.py3-none-any.whl (463 kB)\n", + "Requirement already satisfied: numpy>=1.14.5 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (1.23.5)\n", + "Requirement already satisfied: absl-py>=0.4.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (1.2.0)\n", + "Requirement already satisfied: termcolor>=1.1.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (2.2.0)\n", + "Requirement already satisfied: typing-extensions>=3.6.6 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (4.5.0)\n", + "Requirement already satisfied: six>=1.12.0 in /usr/lib/python3/dist-packages (from tensorflow==2.7.*) (1.16.0)\n", + "Requirement already satisfied: opt-einsum>=2.3.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (3.3.0)\n", + "Requirement already satisfied: keras-preprocessing>=1.1.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (1.1.2)\n", + "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.21.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (0.32.0)\n", + "Requirement already satisfied: h5py>=2.9.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (3.8.0)\n", + "Requirement already satisfied: wheel<1.0,>=0.32.0 in /usr/lib/python3/dist-packages (from tensorflow==2.7.*) (0.34.2)\n", + "Requirement already satisfied: google-pasta>=0.1.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (0.2.0)\n", + "Requirement already satisfied: protobuf<3.20,>=3.9.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (3.19.6)\n", + "Requirement already satisfied: wrapt>=1.11.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (1.15.0)\n", + "Requirement already satisfied: astunparse>=1.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (1.6.3)\n", + "Collecting keras<2.8,>=2.7.0rc0\n", + " Using cached keras-2.7.0-py2.py3-none-any.whl (1.3 MB)\n", + "Requirement already satisfied: flatbuffers<3.0,>=1.12 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (2.0.7)\n", + "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (1.53.0)\n", + "Requirement already satisfied: libclang>=9.0.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow==2.7.*) (16.0.0)\n", + "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard~=2.6->tensorflow==2.7.*) (1.8.1)\n", + "Requirement already satisfied: google-auth<3,>=1.6.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard~=2.6->tensorflow==2.7.*) (1.35.0)\n", + "Requirement already satisfied: werkzeug>=0.11.15 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard~=2.6->tensorflow==2.7.*) (2.2.3)\n", + "Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard~=2.6->tensorflow==2.7.*) (0.6.1)\n", + "Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard~=2.6->tensorflow==2.7.*) (0.4.6)\n", + "Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.9/dist-packages (from tensorboard~=2.6->tensorflow==2.7.*) (2.28.1)\n", + "Requirement already satisfied: markdown>=2.6.8 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard~=2.6->tensorflow==2.7.*) (3.4.3)\n", + "Requirement already satisfied: setuptools>=41.0.0 in /usr/lib/python3/dist-packages (from tensorboard~=2.6->tensorflow==2.7.*) (52.0.0)\n", + "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard~=2.6->tensorflow==2.7.*) (4.2.4)\n", + "Requirement already satisfied: rsa<5,>=3.1.4 in /home/students/s444341/.local/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard~=2.6->tensorflow==2.7.*) (4.9)\n", + "Requirement already satisfied: pyasn1-modules>=0.2.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from google-auth<3,>=1.6.3->tensorboard~=2.6->tensorflow==2.7.*) (0.2.8)\n", + "Requirement already satisfied: requests-oauthlib>=0.7.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.6->tensorflow==2.7.*) (1.3.1)\n", + "Requirement already satisfied: importlib-metadata>=4.4 in /usr/local/lib/python3.9/dist-packages (from markdown>=2.6.8->tensorboard~=2.6->tensorflow==2.7.*) (4.12.0)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.9/dist-packages (from requests<3,>=2.21.0->tensorboard~=2.6->tensorflow==2.7.*) (2.1.1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests<3,>=2.21.0->tensorboard~=2.6->tensorflow==2.7.*) (2022.9.14)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests<3,>=2.21.0->tensorboard~=2.6->tensorflow==2.7.*) (3.4)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests<3,>=2.21.0->tensorboard~=2.6->tensorflow==2.7.*) (1.26.12)\n", + "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.9/dist-packages (from werkzeug>=0.11.15->tensorboard~=2.6->tensorflow==2.7.*) (2.1.1)\n", + "Requirement already satisfied: zipp>=0.5 in /usr/lib/python3/dist-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard~=2.6->tensorflow==2.7.*) (1.0.0)\n", + "Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /home/students/s444341/.local/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard~=2.6->tensorflow==2.7.*) (0.4.8)\n", + "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.9/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.6->tensorflow==2.7.*) (3.2.1)\n", + "Installing collected packages: tensorflow-estimator, keras, tensorflow\n", + " Attempting uninstall: tensorflow-estimator\n", + " Found existing installation: tensorflow-estimator 2.8.0\n", + " Uninstalling tensorflow-estimator-2.8.0:\n", + " Successfully uninstalled tensorflow-estimator-2.8.0\n", + " Attempting uninstall: keras\n", + " Found existing installation: keras 2.8.0\n", + " Uninstalling keras-2.8.0:\n", + " Successfully uninstalled keras-2.8.0\n", + " Attempting uninstall: tensorflow\n", + " Found existing installation: tensorflow 2.8.4\n", + " Uninstalling tensorflow-2.8.4:\n", + " Successfully uninstalled tensorflow-2.8.4\n", + "\u001b[33m WARNING: The scripts estimator_ckpt_converter, import_pb_to_tensorboard, saved_model_cli, tensorboard, tf_upgrade_v2, tflite_convert, toco and toco_from_protos are installed in '/home/students/s444341/.local/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "tensorflow-text 2.8.2 requires tensorflow<2.9,>=2.8.0; platform_machine != \"arm64\" or platform_system != \"Darwin\", but you have tensorflow 2.7.4 which is incompatible.\n", + "rasa 3.3.6 requires tensorflow<2.9.0,>=2.8.4; sys_platform != \"darwin\" or platform_machine != \"arm64\", but you have tensorflow 2.7.4 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed keras-2.7.0 tensorflow-2.7.4 tensorflow-estimator-2.7.0\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 177, in emit\n", + " self.console.print(renderable, overflow=\"ignore\", crop=False, style=style)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1673, in print\n", + " extend(render(renderable, render_options))\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1305, in render\n", + " for render_output in iter_render:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 134, in __rich_console__\n", + " for line in lines:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/segment.py\", line 249, in split_lines\n", + " for segment in segments:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1283, in render\n", + " renderable = rich_cast(renderable)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/protocol.py\", line 36, in rich_cast\n", + " renderable = cast_method()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 130, in __rich__\n", + " pip_cmd = get_best_invocation_for_this_pip()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/entrypoints.py\", line 58, in get_best_invocation_for_this_pip\n", + " if found_executable and os.path.samefile(\n", + " File \"/usr/lib/python3.9/genericpath.py\", line 101, in samefile\n", + " s2 = os.stat(f2)\n", + "FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.9'\n", + "Call stack:\n", + " File \"/usr/lib/python3.9/runpy.py\", line 197, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/__main__.py\", line 31, in \n", + " sys.exit(_main())\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/main.py\", line 70, in main\n", + " return command.main(cmd_args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 101, in main\n", + " return self._main(args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 223, in _main\n", + " self.handle_pip_version_check(options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py\", line 190, in handle_pip_version_check\n", + " pip_self_version_check(session, options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 236, in pip_self_version_check\n", + " logger.warning(\"[present-rich] %s\", upgrade_prompt)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1454, in warning\n", + " self._log(WARNING, msg, args, **kwargs)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1585, in _log\n", + " self.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1595, in handle\n", + " self.callHandlers(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1657, in callHandlers\n", + " hdlr.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 948, in handle\n", + " self.emit(record)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n", + " self.handleError(record)\n", + "Message: '[present-rich] %s'\n", + "Arguments: (UpgradePrompt(old='22.2.2', new='23.0.1'),)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install tensorflow==2.7.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Teraz powinno już nie być problemów z zainstalowaniem Rasa." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: matplotlib==3.4.0 in /home/students/s444341/.local/lib/python3.9/site-packages (3.4.0)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.9/dist-packages (from matplotlib==3.4.0) (2.8.2)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/lib/python3/dist-packages (from matplotlib==3.4.0) (0.10.0)\n", + "Requirement already satisfied: numpy>=1.16 in /home/students/s444341/.local/lib/python3.9/site-packages (from matplotlib==3.4.0) (1.23.5)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib==3.4.0) (8.1.2)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/lib/python3/dist-packages (from matplotlib==3.4.0) (1.3.1)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib==3.4.0) (2.4.7)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib==3.4.0) (1.16.0)\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 177, in emit\n", + " self.console.print(renderable, overflow=\"ignore\", crop=False, style=style)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1673, in print\n", + " extend(render(renderable, render_options))\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1305, in render\n", + " for render_output in iter_render:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 134, in __rich_console__\n", + " for line in lines:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/segment.py\", line 249, in split_lines\n", + " for segment in segments:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1283, in render\n", + " renderable = rich_cast(renderable)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/protocol.py\", line 36, in rich_cast\n", + " renderable = cast_method()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 130, in __rich__\n", + " pip_cmd = get_best_invocation_for_this_pip()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/entrypoints.py\", line 58, in get_best_invocation_for_this_pip\n", + " if found_executable and os.path.samefile(\n", + " File \"/usr/lib/python3.9/genericpath.py\", line 101, in samefile\n", + " s2 = os.stat(f2)\n", + "FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.9'\n", + "Call stack:\n", + " File \"/usr/lib/python3.9/runpy.py\", line 197, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/__main__.py\", line 31, in \n", + " sys.exit(_main())\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/main.py\", line 70, in main\n", + " return command.main(cmd_args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 101, in main\n", + " return self._main(args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 223, in _main\n", + " self.handle_pip_version_check(options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py\", line 190, in handle_pip_version_check\n", + " pip_self_version_check(session, options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 236, in pip_self_version_check\n", + " logger.warning(\"[present-rich] %s\", upgrade_prompt)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1454, in warning\n", + " self._log(WARNING, msg, args, **kwargs)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1585, in _log\n", + " self.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1595, in handle\n", + " self.callHandlers(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1657, in callHandlers\n", + " hdlr.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 948, in handle\n", + " self.emit(record)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n", + " self.handleError(record)\n", + "Message: '[present-rich] %s'\n", + "Arguments: (UpgradePrompt(old='22.2.2', new='23.0.1'),)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install matplotlib==3.4.0" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: rasa[full]==3.3.* in /home/students/s444341/.local/lib/python3.9/site-packages (3.3.6)\n", + "Requirement already satisfied: SQLAlchemy<1.5.0,>=1.4.0 in /usr/local/lib/python3.9/dist-packages (from rasa[full]==3.3.*) (1.4.41)\n", + "Requirement already satisfied: colorclass<2.3,>=2.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.2.2)\n", + "Requirement already satisfied: boto3<2.0,>=1.12 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.26.101)\n", + "Requirement already satisfied: twilio<7.15,>=6.26 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (6.50.1)\n", + "Requirement already satisfied: absl-py<1.3,>=0.9 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.2.0)\n", + "Requirement already satisfied: pydot<1.5,>=1.4 in /usr/local/lib/python3.9/dist-packages (from rasa[full]==3.3.*) (1.4.2)\n", + "Requirement already satisfied: setuptools>=41.0.0 in /usr/lib/python3/dist-packages (from rasa[full]==3.3.*) (52.0.0)\n", + "Requirement already satisfied: apscheduler<3.10,>=3.6 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.7.0)\n", + "Requirement already satisfied: CacheControl<0.13.0,>=0.12.9 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.12.11)\n", + "Requirement already satisfied: sklearn-crfsuite<0.4,>=0.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.3.6)\n", + "Requirement already satisfied: pluggy<2.0.0,>=1.0.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.0.0)\n", + "Requirement already satisfied: requests<3.0,>=2.23 in /usr/local/lib/python3.9/dist-packages (from rasa[full]==3.3.*) (2.28.1)\n", + "Requirement already satisfied: typing-extensions<5.0.0,>=3.7.4 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (4.5.0)\n", + "Requirement already satisfied: prompt-toolkit<3.0.29,>=3.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.0.28)\n", + "Requirement already satisfied: protobuf<3.20,>=3.9.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.19.6)\n", + "Requirement already satisfied: ujson<6.0,>=1.35 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (5.7.0)\n", + "Requirement already satisfied: questionary<1.11.0,>=1.5.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.10.0)\n", + "Requirement already satisfied: terminaltables<3.2.0,>=3.1.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.1.10)\n", + "Requirement already satisfied: kafka-python<3.0,>=1.4 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.0.2)\n", + "Requirement already satisfied: packaging<21.0,>=20.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (20.9)\n", + "Requirement already satisfied: slackclient<3.0.0,>=2.0.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.9.4)\n", + "Requirement already satisfied: pykwalify<1.9,>=1.7 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.8.0)\n", + "Requirement already satisfied: tensorflow-addons<0.18.0,>=0.17.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.17.1)\n", + "Requirement already satisfied: tensorflow-text<2.9.0,>=2.8.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.8.2)\n", + "Requirement already satisfied: dask==2022.2.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2022.2.0)\n", + "Requirement already satisfied: google-auth<3 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.35.0)\n", + "Requirement already satisfied: sanic-cors<2.1.0,>=2.0.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.0.1)\n", + "Requirement already satisfied: mattermostwrapper<2.3,>=2.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.2)\n", + "Requirement already satisfied: python-socketio<6,>=4.4 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (5.8.0)\n", + "Requirement already satisfied: sanic-jwt<2.0.0,>=1.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.8.0)\n", + "Requirement already satisfied: scipy<1.9.0,>=1.4.1 in /usr/lib/python3/dist-packages (from rasa[full]==3.3.*) (1.6.0)\n", + "Requirement already satisfied: typing-utils<0.2.0,>=0.1.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.1.0)\n", + "Requirement already satisfied: webexteamssdk<1.7.0,>=1.1.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.6.1)\n", + "Requirement already satisfied: matplotlib<3.6,>=3.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.4.0)\n", + "Requirement already satisfied: joblib<1.3.0,>=0.15.1 in /usr/lib/python3/dist-packages (from rasa[full]==3.3.*) (0.17.0)\n", + "Requirement already satisfied: rasa-sdk<3.4.0,>=3.3.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.3.1)\n", + "Requirement already satisfied: sanic<21.13,>=21.12 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (21.12.2)\n", + "Requirement already satisfied: pymongo[srv,tls]<3.11,>=3.8 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.10.1)\n", + "Requirement already satisfied: colorhash<1.2.0,>=1.0.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.0.4)\n", + "Requirement already satisfied: coloredlogs<16,>=10 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (15.0.1)\n", + "Requirement already satisfied: randomname<0.2.0,>=0.1.5 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.1.5)\n", + "Requirement already satisfied: tarsafe<0.0.4,>=0.0.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.0.3)\n", + "Requirement already satisfied: jsonschema<4.17,>=3.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (4.4.0)\n", + "Requirement already satisfied: sentry-sdk<1.10.0,>=0.17.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.3.1)\n", + "Requirement already satisfied: tqdm<5.0,>=4.31 in /usr/local/lib/python3.9/dist-packages (from rasa[full]==3.3.*) (4.64.1)\n", + "Requirement already satisfied: psycopg2-binary<2.10.0,>=2.8.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.9.5)\n", + "Requirement already satisfied: PyJWT[crypto]<3.0.0,>=2.0.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.6.0)\n", + "Requirement already satisfied: aiogram<2.20 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.15)\n", + "Requirement already satisfied: python-engineio!=5.0.0,<6,>=4 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (4.4.0)\n", + "Requirement already satisfied: python-dateutil<2.9,>=2.8 in /usr/local/lib/python3.9/dist-packages (from rasa[full]==3.3.*) (2.8.2)\n", + "Requirement already satisfied: aiohttp!=3.7.4.post0,<3.9,>=3.6 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.7.4)\n", + "Requirement already satisfied: cloudpickle<2.3,>=1.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.6.0)\n", + "Requirement already satisfied: networkx<2.7,>=2.4 in /usr/lib/python3/dist-packages (from rasa[full]==3.3.*) (2.5)\n", + "Requirement already satisfied: redis<5.0,>=3.4 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.5.3)\n", + "Collecting tensorflow<2.9.0,>=2.8.4\n", + " Using cached tensorflow-2.8.4-cp39-cp39-manylinux2010_x86_64.whl (498.1 MB)\n", + "Requirement already satisfied: pytz<2023.0,>=2019.1 in /usr/lib/python3/dist-packages (from rasa[full]==3.3.*) (2021.1)\n", + "Requirement already satisfied: aio-pika<9.0.0,>=6.7.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (8.3.0)\n", + "Requirement already satisfied: numpy<1.24.0,>=1.19.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.23.5)\n", + "Requirement already satisfied: regex<2022.10,>=2020.6 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2022.4.24)\n", + "Requirement already satisfied: attrs<22.2,>=19.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (21.2.0)\n", + "Requirement already satisfied: fbmessenger<6.1.0,>=6.0.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (6.0.0)\n", + "Requirement already satisfied: rocketchat_API<1.27.0,>=0.6.31 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (1.25.0)\n", + "Requirement already satisfied: sanic-routing<0.8.0,>=0.7.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.7.2)\n", + "Requirement already satisfied: scikit-learn<1.2,>=0.22 in /usr/lib/python3/dist-packages (from rasa[full]==3.3.*) (0.23.2)\n", + "Requirement already satisfied: spacy<3.5,>=3.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (3.2.5)\n", + "Requirement already satisfied: jsonpickle<2.3,>=1.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (2.0.0)\n", + "Requirement already satisfied: tensorflow_hub<0.13.0,>=0.12.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.12.0)\n", + "Requirement already satisfied: ruamel.yaml<0.18.0,>=0.16.5 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.16.13)\n", + "Requirement already satisfied: transformers<4.14.0,>=4.13.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (4.13.0)\n", + "Requirement already satisfied: sentencepiece[sentencepiece]<0.2.0,>=0.1.96 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.1.97)\n", + "Requirement already satisfied: jieba<0.43,>=0.39 in /home/students/s444341/.local/lib/python3.9/site-packages (from rasa[full]==3.3.*) (0.42.1)\n", + "Requirement already satisfied: pyyaml>=5.3.1 in /usr/lib/python3/dist-packages (from dask==2022.2.0->rasa[full]==3.3.*) (5.3.1)\n", + "Requirement already satisfied: partd>=0.3.10 in /home/students/s444341/.local/lib/python3.9/site-packages (from dask==2022.2.0->rasa[full]==3.3.*) (1.3.0)\n", + "Requirement already satisfied: toolz>=0.8.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from dask==2022.2.0->rasa[full]==3.3.*) (0.12.0)\n", + "Requirement already satisfied: fsspec>=0.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from dask==2022.2.0->rasa[full]==3.3.*) (2023.3.0)\n", + "Requirement already satisfied: yarl in /home/students/s444341/.local/lib/python3.9/site-packages (from aio-pika<9.0.0,>=6.7.1->rasa[full]==3.3.*) (1.8.2)\n", + "Requirement already satisfied: aiormq~=6.6.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from aio-pika<9.0.0,>=6.7.1->rasa[full]==3.3.*) (6.6.4)\n", + "Requirement already satisfied: Babel>=2.8.0 in /usr/local/lib/python3.9/dist-packages (from aiogram<2.20->rasa[full]==3.3.*) (2.10.3)\n", + "Requirement already satisfied: certifi>=2020.6.20 in /usr/local/lib/python3.9/dist-packages (from aiogram<2.20->rasa[full]==3.3.*) (2022.9.14)\n", + "Requirement already satisfied: chardet<4.0,>=2.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from aiohttp!=3.7.4.post0,<3.9,>=3.6->rasa[full]==3.3.*) (3.0.4)\n", + "Requirement already satisfied: async-timeout<4.0,>=3.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from aiohttp!=3.7.4.post0,<3.9,>=3.6->rasa[full]==3.3.*) (3.0.1)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /home/students/s444341/.local/lib/python3.9/site-packages (from aiohttp!=3.7.4.post0,<3.9,>=3.6->rasa[full]==3.3.*) (5.2.0)\n", + "Requirement already satisfied: six>=1.4.0 in /usr/lib/python3/dist-packages (from apscheduler<3.10,>=3.6->rasa[full]==3.3.*) (1.16.0)\n", + "Requirement already satisfied: tzlocal~=2.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from apscheduler<3.10,>=3.6->rasa[full]==3.3.*) (2.1)\n", + "Requirement already satisfied: botocore<1.30.0,>=1.29.101 in /home/students/s444341/.local/lib/python3.9/site-packages (from boto3<2.0,>=1.12->rasa[full]==3.3.*) (1.29.101)\n", + "Requirement already satisfied: s3transfer<0.7.0,>=0.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from boto3<2.0,>=1.12->rasa[full]==3.3.*) (0.6.0)\n", + "Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from boto3<2.0,>=1.12->rasa[full]==3.3.*) (1.0.1)\n", + "Requirement already satisfied: msgpack>=0.5.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from CacheControl<0.13.0,>=0.12.9->rasa[full]==3.3.*) (1.0.5)\n", + "Requirement already satisfied: humanfriendly>=9.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from coloredlogs<16,>=10->rasa[full]==3.3.*) (10.0)\n", + "Requirement already satisfied: rsa<5,>=3.1.4 in /home/students/s444341/.local/lib/python3.9/site-packages (from google-auth<3->rasa[full]==3.3.*) (4.9)\n", + "Requirement already satisfied: pyasn1-modules>=0.2.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from google-auth<3->rasa[full]==3.3.*) (0.2.8)\n", + "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from google-auth<3->rasa[full]==3.3.*) (4.2.4)\n", + "Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/lib/python3.9/dist-packages (from jsonschema<4.17,>=3.2->rasa[full]==3.3.*) (0.18.1)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib<3.6,>=3.1->rasa[full]==3.3.*) (2.4.7)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/lib/python3/dist-packages (from matplotlib<3.6,>=3.1->rasa[full]==3.3.*) (0.10.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/lib/python3/dist-packages (from matplotlib<3.6,>=3.1->rasa[full]==3.3.*) (1.3.1)\n", + "Requirement already satisfied: pillow>=6.2.0 in /usr/lib/python3/dist-packages (from matplotlib<3.6,>=3.1->rasa[full]==3.3.*) (8.1.2)\n", + "Requirement already satisfied: wcwidth in /usr/local/lib/python3.9/dist-packages (from prompt-toolkit<3.0.29,>=3.0->rasa[full]==3.3.*) (0.2.5)\n", + "Requirement already satisfied: cryptography>=3.4.0 in /usr/local/lib/python3.9/dist-packages (from PyJWT[crypto]<3.0.0,>=2.0.0->rasa[full]==3.3.*) (38.0.1)\n", + "Requirement already satisfied: docopt>=0.6.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from pykwalify<1.9,>=1.7->rasa[full]==3.3.*) (0.6.2)\n", + "Requirement already satisfied: dnspython<2.0.0,>=1.16.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from pymongo[srv,tls]<3.11,>=3.8->rasa[full]==3.3.*) (1.16.0)\n", + "Requirement already satisfied: bidict>=0.21.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from python-socketio<6,>=4.4->rasa[full]==3.3.*) (0.22.1)\n", + "Requirement already satisfied: fire in /home/students/s444341/.local/lib/python3.9/site-packages (from randomname<0.2.0,>=0.1.5->rasa[full]==3.3.*) (0.5.0)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests<3.0,>=2.23->rasa[full]==3.3.*) (1.26.12)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests<3.0,>=2.23->rasa[full]==3.3.*) (3.4)\n", + "Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.9/dist-packages (from requests<3.0,>=2.23->rasa[full]==3.3.*) (2.1.1)\n", + "Requirement already satisfied: ruamel.yaml.clib>=0.1.2 in /usr/local/lib/python3.9/dist-packages (from ruamel.yaml<0.18.0,>=0.16.5->rasa[full]==3.3.*) (0.2.6)\n", + "Requirement already satisfied: httptools>=0.0.10 in /home/students/s444341/.local/lib/python3.9/site-packages (from sanic<21.13,>=21.12->rasa[full]==3.3.*) (0.5.0)\n", + "Requirement already satisfied: aiofiles>=0.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from sanic<21.13,>=21.12->rasa[full]==3.3.*) (23.1.0)\n", + "Requirement already satisfied: websockets>=10.0 in /usr/local/lib/python3.9/dist-packages (from sanic<21.13,>=21.12->rasa[full]==3.3.*) (10.3)\n", + "Requirement already satisfied: uvloop>=0.5.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from sanic<21.13,>=21.12->rasa[full]==3.3.*) (0.17.0)\n", + "\u001b[33mWARNING: sentencepiece 0.1.97 does not provide the extra 'sentencepiece'\u001b[0m\u001b[33m\n", + "\u001b[0mRequirement already satisfied: tabulate in /home/students/s444341/.local/lib/python3.9/site-packages (from sklearn-crfsuite<0.4,>=0.3->rasa[full]==3.3.*) (0.9.0)\n", + "Requirement already satisfied: python-crfsuite>=0.8.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from sklearn-crfsuite<0.4,>=0.3->rasa[full]==3.3.*) (0.9.9)\n", + "Requirement already satisfied: pathy>=0.3.5 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (0.6.2)\n", + "Requirement already satisfied: pydantic!=1.8,!=1.8.1,<1.9.0,>=1.7.4 in /home/students/s444341/.local/lib/python3.9/site-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (1.8.2)\n", + "Requirement already satisfied: thinc<8.1.0,>=8.0.12 in /home/students/s444341/.local/lib/python3.9/site-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (8.0.17)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (3.1.2)\n", + "Requirement already satisfied: typer<0.5.0,>=0.3.0 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (0.4.2)\n", + "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (2.0.6)\n", + "Requirement already satisfied: spacy-legacy<3.1.0,>=3.0.8 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (3.0.10)\n", + "Requirement already satisfied: wasabi<1.1.0,>=0.8.1 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (0.10.1)\n", + "Requirement already satisfied: blis<0.8.0,>=0.4.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (0.7.9)\n", + "Requirement already satisfied: catalogue<2.1.0,>=2.0.6 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (2.0.8)\n", + "Requirement already satisfied: spacy-loggers<2.0.0,>=1.0.0 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (1.0.3)\n", + "Requirement already satisfied: smart-open<7.0.0,>=5.2.1 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (5.2.1)\n", + "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (1.0.8)\n", + "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (3.0.7)\n", + "Requirement already satisfied: langcodes<4.0.0,>=3.2.0 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (3.3.0)\n", + "Requirement already satisfied: srsly<3.0.0,>=2.4.1 in /usr/local/lib/python3.9/dist-packages (from spacy<3.5,>=3.1->rasa[full]==3.3.*) (2.4.4)\n", + "Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.9/dist-packages (from SQLAlchemy<1.5.0,>=1.4.0->rasa[full]==3.3.*) (1.1.3)\n", + "Requirement already satisfied: termcolor>=1.1.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (2.2.0)\n", + "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (1.53.0)\n", + "Requirement already satisfied: opt-einsum>=2.3.2 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (3.3.0)\n", + "Collecting tensorflow-estimator<2.9,>=2.8\n", + " Using cached tensorflow_estimator-2.8.0-py2.py3-none-any.whl (462 kB)\n", + "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (0.32.0)\n", + "Requirement already satisfied: tensorboard<2.9,>=2.8 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (2.8.0)\n", + "Collecting keras<2.9,>=2.8.0rc0\n", + " Using cached keras-2.8.0-py2.py3-none-any.whl (1.4 MB)\n", + "Requirement already satisfied: flatbuffers>=1.12 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (2.0.7)\n", + "Requirement already satisfied: h5py>=2.9.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (3.8.0)\n", + "Requirement already satisfied: libclang>=9.0.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (16.0.0)\n", + "Requirement already satisfied: keras-preprocessing>=1.1.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (1.1.2)\n", + "Requirement already satisfied: astunparse>=1.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (1.6.3)\n", + "Requirement already satisfied: wrapt>=1.11.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (1.15.0)\n", + "Requirement already satisfied: google-pasta>=0.1.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (0.2.0)\n", + "Requirement already satisfied: gast>=0.2.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (0.4.0)\n", + "Requirement already satisfied: typeguard>=2.7 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorflow-addons<0.18.0,>=0.17.0->rasa[full]==3.3.*) (2.13.3)\n", + "Requirement already satisfied: tokenizers<0.11,>=0.10.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from transformers<4.14.0,>=4.13.0->rasa[full]==3.3.*) (0.10.3)\n", + "Requirement already satisfied: filelock in /usr/lib/python3/dist-packages (from transformers<4.14.0,>=4.13.0->rasa[full]==3.3.*) (3.0.12)\n", + "Requirement already satisfied: sacremoses in /home/students/s444341/.local/lib/python3.9/site-packages (from transformers<4.14.0,>=4.13.0->rasa[full]==3.3.*) (0.0.53)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.1.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from transformers<4.14.0,>=4.13.0->rasa[full]==3.3.*) (0.13.3)\n", + "Requirement already satisfied: future in /home/students/s444341/.local/lib/python3.9/site-packages (from webexteamssdk<1.7.0,>=1.1.1->rasa[full]==3.3.*) (0.18.3)\n", + "Requirement already satisfied: requests-toolbelt in /home/students/s444341/.local/lib/python3.9/site-packages (from webexteamssdk<1.7.0,>=1.1.1->rasa[full]==3.3.*) (0.10.1)\n", + "Requirement already satisfied: pamqp==3.2.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from aiormq~=6.6.3->aio-pika<9.0.0,>=6.7.1->rasa[full]==3.3.*) (3.2.1)\n", + "Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/lib/python3/dist-packages (from astunparse>=1.6.0->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (0.34.2)\n", + "Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.9/dist-packages (from cryptography>=3.4.0->PyJWT[crypto]<3.0.0,>=2.0.0->rasa[full]==3.3.*) (1.15.1)\n", + "Requirement already satisfied: locket in /home/students/s444341/.local/lib/python3.9/site-packages (from partd>=0.3.10->dask==2022.2.0->rasa[full]==3.3.*) (1.0.0)\n", + "Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /home/students/s444341/.local/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth<3->rasa[full]==3.3.*) (0.4.8)\n", + "Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (0.6.1)\n", + "Requirement already satisfied: markdown>=2.6.8 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (3.4.3)\n", + "Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (0.4.6)\n", + "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (1.8.1)\n", + "Requirement already satisfied: werkzeug>=0.11.15 in /home/students/s444341/.local/lib/python3.9/site-packages (from tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (2.2.3)\n", + "Requirement already satisfied: click<9.0.0,>=7.1.1 in /usr/local/lib/python3.9/dist-packages (from typer<0.5.0,>=0.3.0->spacy<3.5,>=3.1->rasa[full]==3.3.*) (8.1.3)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.9/dist-packages (from jinja2->spacy<3.5,>=3.1->rasa[full]==3.3.*) (2.1.1)\n", + "Requirement already satisfied: pycparser in /usr/local/lib/python3.9/dist-packages (from cffi>=1.12->cryptography>=3.4.0->PyJWT[crypto]<3.0.0,>=2.0.0->rasa[full]==3.3.*) (2.21)\n", + "Requirement already satisfied: requests-oauthlib>=0.7.0 in /home/students/s444341/.local/lib/python3.9/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (1.3.1)\n", + "Requirement already satisfied: importlib-metadata>=4.4 in /usr/local/lib/python3.9/dist-packages (from markdown>=2.6.8->tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (4.12.0)\n", + "Requirement already satisfied: zipp>=0.5 in /usr/lib/python3/dist-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (1.0.0)\n", + "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.9/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard<2.9,>=2.8->tensorflow<2.9.0,>=2.8.4->rasa[full]==3.3.*) (3.2.1)\n", + "Installing collected packages: tensorflow-estimator, keras, tensorflow\n", + " Attempting uninstall: tensorflow-estimator\n", + " Found existing installation: tensorflow-estimator 2.7.0\n", + " Uninstalling tensorflow-estimator-2.7.0:\n", + " Successfully uninstalled tensorflow-estimator-2.7.0\n", + " Attempting uninstall: keras\n", + " Found existing installation: keras 2.7.0\n", + " Uninstalling keras-2.7.0:\n", + " Successfully uninstalled keras-2.7.0\n", + " Attempting uninstall: tensorflow\n", + " Found existing installation: tensorflow 2.7.4\n", + " Uninstalling tensorflow-2.7.4:\n", + " Successfully uninstalled tensorflow-2.7.4\n", + "\u001b[33m WARNING: The scripts estimator_ckpt_converter, import_pb_to_tensorboard, saved_model_cli, tensorboard, tf_upgrade_v2, tflite_convert, toco and toco_from_protos are installed in '/home/students/s444341/.local/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0mSuccessfully installed keras-2.8.0 tensorflow-2.8.4 tensorflow-estimator-2.8.0\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 177, in emit\n", + " self.console.print(renderable, overflow=\"ignore\", crop=False, style=style)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1673, in print\n", + " extend(render(renderable, render_options))\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1305, in render\n", + " for render_output in iter_render:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 134, in __rich_console__\n", + " for line in lines:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/segment.py\", line 249, in split_lines\n", + " for segment in segments:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1283, in render\n", + " renderable = rich_cast(renderable)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/protocol.py\", line 36, in rich_cast\n", + " renderable = cast_method()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 130, in __rich__\n", + " pip_cmd = get_best_invocation_for_this_pip()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/entrypoints.py\", line 58, in get_best_invocation_for_this_pip\n", + " if found_executable and os.path.samefile(\n", + " File \"/usr/lib/python3.9/genericpath.py\", line 101, in samefile\n", + " s2 = os.stat(f2)\n", + "FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.9'\n", + "Call stack:\n", + " File \"/usr/lib/python3.9/runpy.py\", line 197, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/__main__.py\", line 31, in \n", + " sys.exit(_main())\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/main.py\", line 70, in main\n", + " return command.main(cmd_args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 101, in main\n", + " return self._main(args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 223, in _main\n", + " self.handle_pip_version_check(options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py\", line 190, in handle_pip_version_check\n", + " pip_self_version_check(session, options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 236, in pip_self_version_check\n", + " logger.warning(\"[present-rich] %s\", upgrade_prompt)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1454, in warning\n", + " self._log(WARNING, msg, args, **kwargs)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1585, in _log\n", + " self.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1595, in handle\n", + " self.callHandlers(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1657, in callHandlers\n", + " hdlr.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 948, in handle\n", + " self.emit(record)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n", + " self.handleError(record)\n", + "Message: '[present-rich] %s'\n", + "Arguments: (UpgradePrompt(old='22.2.2', new='23.0.1'),)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install rasa[full]==3.3.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Importujemy ją." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'3.3.6'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import rasa\n", + "rasa.__version__" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "Tworzymy nowy projekt we frameworku RASA." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "from rasa.cli.scaffold import create_initial_project\n", + "\n", + "project_dir = \"Projekt_AE\"\n", + "create_initial_project(project_dir)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Przejdź do katalogu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Definiujemy zmienne dla funckji train, którą będziemy trenować model." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "config = project_dir + \"/config.yml\"\n", + "training_files = project_dir + \"/data/\"\n", + "domain = project_dir + \"/domain.yml\"\n", + "output = project_dir + \"/models/\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Requirement already satisfied: pyspark==2.4.* in /home/students/s444341/.local/lib/python3.9/site-packages (2.4.8)\n", + "Requirement already satisfied: py4j==0.10.7 in /home/students/s444341/.local/lib/python3.9/site-packages (from pyspark==2.4.*) (0.10.7)\n", + "--- Logging error ---\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 177, in emit\n", + " self.console.print(renderable, overflow=\"ignore\", crop=False, style=style)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1673, in print\n", + " extend(render(renderable, render_options))\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1305, in render\n", + " for render_output in iter_render:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 134, in __rich_console__\n", + " for line in lines:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/segment.py\", line 249, in split_lines\n", + " for segment in segments:\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/console.py\", line 1283, in render\n", + " renderable = rich_cast(renderable)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_vendor/rich/protocol.py\", line 36, in rich_cast\n", + " renderable = cast_method()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 130, in __rich__\n", + " pip_cmd = get_best_invocation_for_this_pip()\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/entrypoints.py\", line 58, in get_best_invocation_for_this_pip\n", + " if found_executable and os.path.samefile(\n", + " File \"/usr/lib/python3.9/genericpath.py\", line 101, in samefile\n", + " s2 = os.stat(f2)\n", + "FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.9'\n", + "Call stack:\n", + " File \"/usr/lib/python3.9/runpy.py\", line 197, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/usr/lib/python3.9/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/__main__.py\", line 31, in \n", + " sys.exit(_main())\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/main.py\", line 70, in main\n", + " return command.main(cmd_args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 101, in main\n", + " return self._main(args)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/base_command.py\", line 223, in _main\n", + " self.handle_pip_version_check(options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/cli/req_command.py\", line 190, in handle_pip_version_check\n", + " pip_self_version_check(session, options)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/self_outdated_check.py\", line 236, in pip_self_version_check\n", + " logger.warning(\"[present-rich] %s\", upgrade_prompt)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1454, in warning\n", + " self._log(WARNING, msg, args, **kwargs)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1585, in _log\n", + " self.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1595, in handle\n", + " self.callHandlers(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 1657, in callHandlers\n", + " hdlr.handle(record)\n", + " File \"/usr/lib/python3.9/logging/__init__.py\", line 948, in handle\n", + " self.emit(record)\n", + " File \"/usr/local/lib/python3.9/dist-packages/pip/_internal/utils/logging.py\", line 179, in emit\n", + " self.handleError(record)\n", + "Message: '[present-rich] %s'\n", + "Arguments: (UpgradePrompt(old='22.2.2', new='23.0.1'),)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install pyspark==2.4.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nareszcie, uczymy model:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[94mThe configuration for policies and pipeline was chosen automatically. It was written into the config file at 'Projekt_AE/config.yml'.\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processed story blocks: 100%|██████████| 2/2 [00:00<00:00, 466.84it/s, # trackers=1]\n", + "Processed story blocks: 100%|██████████| 2/2 [00:00<00:00, 1114.47it/s, # trackers=1]\n", + "Processed story blocks: 100%|██████████| 2/2 [00:00<00:00, 812.85it/s, # trackers=2]\n", + "Processed story blocks: 100%|██████████| 2/2 [00:00<00:00, 454.27it/s, # trackers=3]\n", + "Processed rules: 100%|██████████| 2/2 [00:00<00:00, 1263.73it/s, # trackers=1]\n", + "Processed trackers: 100%|██████████| 1/1 [00:00<00:00, 212.46it/s, # action=5]\n", + "Processed actions: 5it [00:00, 1242.76it/s, # examples=5]\n", + "Processed trackers: 100%|██████████| 1/1 [00:00<00:00, 428.03it/s, # action=3]\n", + "Processed actions: 3it [00:00, 2160.16it/s, # examples=2]\n", + "Processed trackers: 100%|██████████| 1/1 [00:00<00:00, 209.80it/s, # action=5]\n", + "Processed trackers: 100%|██████████| 1/1 [00:00<00:00, 813.01it/s]\n", + "Processed trackers: 100%|██████████| 2/2 [00:00<00:00, 1010.43it/s]\n", + "Processed trackers: 100%|██████████| 4/4 [00:00<00:00, 353.71it/s, # action=9]\n", + "Epochs: 100%|██████████| 100/100 [00:13<00:00, 7.39it/s, t_loss=0.181, loss=0.0286, acc=1]\n", + "Processed trackers: 100%|██████████| 4/4 [00:00<00:00, 1050.81it/s, # intent=5]\n", + "Epochs: 100%|██████████| 100/100 [00:13<00:00, 7.37it/s, t_loss=0.124, loss=0.00663, acc=1] \n", + "/home/students/s444341/.local/lib/python3.9/site-packages/rasa/core/policies/unexpected_intent_policy.py:839: DeprecationWarning: the `interpolation=` argument to quantile was renamed to `method=`, which has additional options.\n", + "Users of the modes 'nearest', 'lower', 'higher', or 'midpoint' are encouraged to review the method they used. (Deprecated NumPy 1.22)\n", + " quantile_values = np.quantile( # type: ignore[call-overload]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[92mYour Rasa model is trained and saved at 'Projekt_AE/models/20230329-182617-upbeat-aggregate.tar.gz'.\u001b[0m\n" + ] + } + ], + "source": [ + "model = rasa.train(domain, config, [training_files], output)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wypisz ścieżkę do modelu:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TrainingResult(model='Projekt_AE/models/20230329-182617-upbeat-aggregate.tar.gz', code=0, dry_run_results=None)\n" + ] + } + ], + "source": [ + "print(model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Przeklej ścieżkę i porozmawiaj ze swoim botem:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:tensorflow:5 out of the last 104 calls to .train_function at 0x7fb4ff636b80> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n", + "WARNING:tensorflow:6 out of the last 105 calls to .train_function at 0x7fb4fe085820> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/guide/function#controlling_retracing and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n", + "Your bot is ready to talk! Type your messages here or send '/stop'.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Hi\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[92mHey! How are you?\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Good, are you tired?\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[92mI'm very tired, how are you?\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " /stop\n" + ] + } + ], + "source": [ + "from rasa.jupyter import chat\n", + "from rasa.core.utils import read_endpoints_from_path\n", + "# do ścieżki modelu wklej ścieżkę, która została zwrócona w poprzednim kroku\n", + "model_path = model.model\n", + "endpoints = read_endpoints_from_path(project_dir + \"/endpoints.yml\")\n", + "chat(model_path, endpoints)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Możliwości naszego Chatbota są mocno ograniczone - potrafi się przywitać i pożegnać oraz rozpoznać podstawowe emocje. Spróbujmy nauczyć go czegoś nowego. Wejdź na https://github.com/RasaHQ/NLU-training-data/blob/main/mood/nlu.yml\n", + "\n", + "\n", + "Skopiuj plik nlu.yml dla kategorii \"mood\". Przekopiuj jego treść do pliku nlu.yml w swoim folderze projektu (folder data).\n", + "\n", + "\n", + "Następnie dodaj (ręcznie) odpowiednie stories w pliku stories.yml.\n", + "\n", + "\n", + "Przejdź do pliku domain i dodaj nowe elementy, np. \"mood_nervous\" oraz \"utter_foo_bar\".\n", + "\n", + "\n", + "Wejdź do folderu projektu i usuń stworzony model.\n", + "\n", + "\n", + "Ponownie naucz swojego bota i z nim porozmawiaj. Zapytaj o nowo dodane emocje. (Konieczny może być restart kernela)\n", + "\n", + "```\n", + "Pliki z własnymi, prostymi zasadami są umieszczone na repozytorium \n", + "https://git.wmi.amu.edu.pl/s444341/Sztuczna_empatia\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Poniżej zamieszczona jest funkcja, która zbiera wszystkie pliki yml z nlu, stories i rules, oraz wrzuca je do dwóch tymczasowych katalogów." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Projekt_AE/data/stories.yml Projekt_AE/data/nlu.yml\n" + ] + } + ], + "source": [ + "nlu_data_directory = f'{project_dir}/data/nlu.yml'\n", + "stories_directory = f'{project_dir}/data/stories.yml'\n", + "print(stories_directory, nlu_data_directory)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Aby przetestować model, wywułaj funkcję call:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "rasa.test(model_path, stories_directory, nlu_data_directory)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Błędy NLU są eksportowane do errors.json." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Brak bledow NLU.\n" + ] + } + ], + "source": [ + "import os\n", + "if os.path.isfile(\"errors.json\"):\n", + " print(\"Bledy NLU:\")\n", + " print(open(\"errors.json\").read())\n", + "else:\n", + " print(\"Brak bledow NLU.\")\n", + "\n", + "if os.path.isdir(\"results\"):\n", + " print(\"\\n\")\n", + " print(\"Core Errors:\")\n", + " print(open(\"results/failed_test_stories.yml\").read())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Źródła:\n", + "
\n", + "[1] https://rasa.com/docs/rasa/jupyter-notebooks/\n", + "\n", + "[2] Yalçın, Ö. (2020). Empathy framework for embodied conversational agents. Cognitive Systems Research, 59, 123-132.\n", + "\n", + "[3] https://www.ibm.com/cloud/learn/natural-language-processing?mhsrc=ibmsearch_a&mhq=natural%20language\n", + "\n", + "[4] https://sloboda-studio.com/blog/how-to-use-nlp-for-building-a-chatbot/\n", + "\n", + "[5] Grosuleac, A., Budulan, S., & Rebedea, T. (2020). Seeking an Empathy-abled Conversational Agent. RoCHI.\n", + "\n", + "[6] Ӧzge Nilay Yalcin, Steve DiPaola, 2018, A computational model of empathy for interactive agents,\n", + "Biologically Inspired Cognitive Architectures, Volume 26, pp. 20-25, DOI: doi.org/10.1016/j.bica.2018.07.010.\n", + "\n", + "[7] Fung, P., Bertero, D., Xu, P., Park, J.H., Wu, C., & Madotto, A. (2018). Empathetic Dialog Systems.\n", + "\n", + "[8] Wei, W., Liu, J., Mao, X., Guo, G., Zhu, F., Zhou, P., & Hu, Y. (2019). Emotion-aware Chat Machine: Automatic Emotional Response Generation for Human-like Emotional Interaction. Proceedings of the 28th ACM International Conference on Information and Knowledge Management.\n", + "\n", + "[9] Li, Q., Chen, H., Ren, Z., Chen, Z., Tu, Z., & Ma, J. (2020). EmpDG: Multi-resolution Interactive Empathetic Dialogue Generation. COLING.\n", + "\n", + "[10] Rashkin, H., Smith, E.M., Li, M., & Boureau, Y. (2019). Towards Empathetic Open-domain Conversation Models: A New Benchmark and Dataset. ACL.\n", + "\n", + "[11] Ghandeharioun, A., Shen, J.H., Jaques, N., Ferguson, C., Jones, N.J., Lapedriza, À., & Picard, R.W. (2019). Approximating Interactive Human Evaluation with Self-Play for Open-Domain Dialog Systems. NeurIPS.\n", + "\n", + "[12] Ma, Y., Nguyen, K.L., Xing, F.Z., & Cambria, E. (2020). A survey on empathetic dialogue systems. Inf. Fusion, 64, 50-70.\n", + "\n", + "[13] Paiva, A., Leite, I., Boukricha, H., & Wachsmuth, I. (2017). Empathy in Virtual Agents and Robots. ACM Transactions on Interactive Intelligent Systems (TiiS), 7, 1 - 40.\n", + "\n", + "[14] https://forum.rasa.com/t/how-to-run-custom-action-in-jupyter-notebook/17109/5\n", + "\n", + "[15] https://towardsdatascience.com/5-reasons-why-your-chatbot-needs-natural-language-processing-ed20fb0a3655\n", + "\n", + "[16] https://www.ultimate.ai/blog/ai-automation/how-nlp-text-based-chatbots-work" + ] + } + ], + "metadata": { + "author": "Joanna Siwek", + "email": "jsiwek@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "subtitle": "4. Empatia w systemach dialogowych", + "title": "Sztuczna empatia", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/rasa_SE4/data/nlu.yml b/rasa_SE4/data/nlu.yml new file mode 100644 index 0000000..9c80fe8 --- /dev/null +++ b/rasa_SE4/data/nlu.yml @@ -0,0 +1,274 @@ +version: "2.0" +nlu: +- intent: goodbye + examples: | + - "Bye" +- intent: mood_happy + examples: | + - I am happy + - I feel great + - I'm fine + - I had a great day + - Me, wonderful! + - I am amazed + - You are too cool + - I am loving it + - I am starting to like this + - I am feeling great + - Doing fine + - Never better + - Feeling lucky + - All great here + - Fantastic day + - What a great day + - I'm inspired + - It's perfect + - amazing + - I feel wonderful + - I am feeling very good + - I am great + - I'm good + - I'm feeling awesome + - I'm feeling happy + - Today is an awesome day! + - I'm so glad + - I'm just really happy right now +- intent: mood_unhappy + examples: | + - I am sad + - I don't feel very well + - I am disappointed + - my day was horrible + - This is bad + - I am sick + - I am ill + - I am all low today + - Its dissapointing + - How irritating it is + - Am irritated + - I am not feeling well + - This sucks! + - I am feeling too bad + - Worst day ever! + - This feels bad + - I feel low + - Everything is bad today + - I feel very sad + - Feels horrible + - This is depressing + - I am depressed + - I feel bored + - I am feeling bored + - life is boring + - I am feeling empty + - I feel useless + - aweful + - depressed + - heavy + - I am feeling quite lost + - very sad + - unhappy + - bad + - very bad + - awful + - terrible + - not very good + - extremely sad + - so sad + - Im feeling down + - I'm feeling sad + - Im feeling sad + - Im not okay + - Im feeling low + - Not good + - I'm awful + - I'm feeling very sad + - I'm uneasy + - Actually I'm not fine + - I'm not good + - I am as lonely as can be + - I am going through a rather rough time + - I'm grieving +- intent: mood_angry + examples: | + - I am angry + - I am feeling so angry + - I am so annoyed + - It's annoying + - That's aggravating + - I'm furious + - That is infuriating + - I'm very mad + - Everything vexes me + - I am outraged + - That is outrageous! + - I feel hostile + - I am very frustrated + - It is irritating me + - I feel so offended + - I am full of fury + - I feel very belligerent + - I hate doing this + - I have no patience today + - I could not control my anger + - I’m annoyed + - I’m super annoyed + - I’m so mad. + - I'm enraged + - I’m straight up angry. + - This is maddening! + - I'm pissed off + - I'm pissed + - You bet I'm angry + - That made me angry + - U made me angry + - I'm still angry about that +- intent: mood_scared + examples: | + - I am scared + - I feel scared + - I'm worried + - I am terrified + - That is frightening + - I feel intimidated + - That is intimidating + - I am petrified + - I am afraid + - I feel anxious + - I'm having a bad feeling + - I'm fearful + - I panicked + - I shrank back in fear + - I am scared to death + - I broke out in a cold sweat + - That startled me! + - I'm spooked easily + - I'm trembling from fear + - I'm horrified +- intent: mood_nervous + examples: | + - I am nervous + - I am stressed out + - I feel nervous + - I am anxious + - I feel anxious + - This is nerveracking + - This is nervewracking + - This is nerve racking + - This is nerve wracking + - I feel like I am going to throw up + - I have a lump in my throat + - I have butterflies in my stomach + - I am a bundle of nerves + - I am breaking out in a cold sweat + - I am afraid of my own shadow + - I am like a cat on hot bricks + - I am jumping out of my skin + - I am at my wits' end + - I am tongue tied + - I am on edge + - I am very tense + - I feel uneasy + - I am alarmed + - I am troubled + - I'm tensed + - I'm stressed + - I'm under a lot of stress + - I'm constantly worried + - I feel constant tension + - I’m anxious. + - I’m suffering from anxiety. + - I’ve been feeling rather anxious lately. + - My anxiety is rather through the roof these days. + - I’m feeling rather restless + - I cannot concentrate as I'm worried constantly + - I'm under immense stress + - It's been a rough couple of days. VERY stressful + - I'm quite tensed. + - There's been quite a few changes in my life. I don't think I am handling them well. It's quite stressful. + - I find myself worrying about every little detail + - I am a chronic worrier. + - I’m feeling rather restless and a horde of worries is bothering me + - I cannot concentrate due to the whole number of worries that are bothering me +- intent: mood_bored + examples: | + - soo bored + - that was boring + - I'm bored + - bored + - boring + - I am getting bored + - Staying at home is boring + - very boring + - it bores me + - i had a slow day + - i am very bored + - Im kinda bored today + - I've never been more bored + - I was bored + - It's boring + - This is boring + - We're all bored + - It's very boring + - I'm already bored + - I'm bored out of my mind +- intent: mood_excited + examples: | + - I am excited + - I'm really excited + - I can't begin to say how excited I am + - I'm thrilled + - I'm damn excited + - I'm hyped + - I'm very excited + - I felt excited + - It was exciting + - That was exciting + - How exciting! + - This is so fun +- intent: mood_lonely + examples: | + - I am lonely + - I'm very lonely + - I'm so lonely + - I'm really lonely + - I am feeling lonely + - I feel lonely + - I am a loner + - I don't have any company + - I don't have anyone else + - I'm always alone + - I'm alone + - am all alone + - I live alone + - I'm all alone + - I've gotten used to living alone + - I think I've been living alone too long + - I have no one to talk to + - I am still alone + - I am used to living alone +- intent: mood_tired + examples: | + - I'm drained + - I've overworked + - I am tired + - I'm exhausted + - I grow weary + - I'm worn out + - I'm getting tired + - I feel tired + - I'm so tired + - I'm completely drained out + - I'm very tired + - i was tired + - i feel tired + - i'm dead tired + - I'm a bit tires + - I was very tired + - I am really tired + - i am awfully tired + - i am kind of so tired + - I am little tired +- intent: greet + examples: | + - Hello \ No newline at end of file diff --git a/rasa_SE4/data/rules.yml b/rasa_SE4/data/rules.yml new file mode 100644 index 0000000..19e4827 --- /dev/null +++ b/rasa_SE4/data/rules.yml @@ -0,0 +1,8 @@ +version: "3.1" + +rules: + +- rule: Say goodbye anytime the user says goodbye + steps: + - intent: goodbye + - action: utter_goodbye \ No newline at end of file diff --git a/rasa_SE4/data/stories.yml b/rasa_SE4/data/stories.yml new file mode 100644 index 0000000..642c453 --- /dev/null +++ b/rasa_SE4/data/stories.yml @@ -0,0 +1,10 @@ +version: "3.1" + +stories: + +- story: tired path + steps: + - intent: greet + - action: utter_greet + - intent: mood_tired + - action: utter_tired \ No newline at end of file diff --git a/rasa_SE4/domain.yml b/rasa_SE4/domain.yml new file mode 100644 index 0000000..5fde4c0 --- /dev/null +++ b/rasa_SE4/domain.yml @@ -0,0 +1,28 @@ +version: "3.1" + +intents: + - mood_happy + - mood_unhappy + - mood_angry + - mood_scared + - mood_nervous + - mood_bored + - mood_excited + - mood_lonely + - mood_tired + - goodbye + - greet + +responses: + utter_greet: + - text: "Hey! How are you?" + + utter_tired: + - text: "I'm very tired, how are you?" + + utter_goodbye: + - text: "Bye" + +session_config: + session_expiration_time: 60 + carry_over_slots_to_new_session: true diff --git a/rasa_SE4/models/20230329-182617-upbeat-aggregate.tar.gz b/rasa_SE4/models/20230329-182617-upbeat-aggregate.tar.gz new file mode 100644 index 0000000..18b08c7 Binary files /dev/null and b/rasa_SE4/models/20230329-182617-upbeat-aggregate.tar.gz differ diff --git a/rasa_SE4/tests/test_stories.yml b/rasa_SE4/tests/test_stories.yml new file mode 100644 index 0000000..8aa27da --- /dev/null +++ b/rasa_SE4/tests/test_stories.yml @@ -0,0 +1,10 @@ +#### This file contains tests to evaluate that your bot behaves as expected. +#### If you want to learn more, please see the docs: https://rasa.com/docs/rasa/testing-your-assistant + +stories: +- story: say goodbye + steps: + - user: | + Bye + intent: goodbye + - action: utter_goodbye \ No newline at end of file