Update 'project/documentation.md'

This commit is contained in:
Kacper Dudzic 2023-06-20 19:02:32 +02:00
parent 5f861f450a
commit 27f9cc650f

View File

@ -45,7 +45,9 @@ Przechodząc do specyficznych sytuacji konwersacyjnych, gdy np. gdy programista
System ma prostą architekturę. Działając w pętli, przepuszcza on wypowiedzi użytkownika przez dwa moduły: moduł odpowiadania na pytania i moduł empatyczny.
3.1. moduł odpowiadania na pytania
Do generacji odpowiedzi na pytania moduł ten wykorzystuje oparty na architekturze Transformer model [FLAN-T5](https://arxiv.org/pdf/2210.11416.pdf). Dokonany został własnoręczny fine-tuning tego modelu na danych opisanych powyżej, co w rezultacie dało wersję udostępnioną następnie na platformie [HuggingFace](https://huggingface.co/kedudzic/flan_ubuntu_v2). Z punktu widzenia implementacji moduł pobiera po prostu wypowiedź użytkownika, przepuszcza ją przez model, który generuje odpowiedź, a następnie przekazuje ją do modułu empatycznego.
3.2. moduł empatyczny
Celem modułu empatycznego jest wzbogacenie odpowiedzi na pytanie o wyrażenie empatyczne i emotkę pełniącą funkcję "avatara" bota. Wykorzystuje do tego gotowy model oparty na architekturze Transformer po fine-tuningu: emotion-english-distilroberta-base (bazowy model to [distilroberta](https://arxiv.org/abs/1910.01108)) dostępny na platformie [HuggingFace](https://huggingface.co/j-hartmann/emotion-english-distilroberta-base). Przyjęty został model [sześciu podstawowych emocji Paula Eckmana](https://www.paulekman.com/wp-content/uploads/2013/07/An-Argument-For-Basic-Emotions.pdf): złość, obrzydzenie, strach, radość, smutek, zaskoczenie, plus dodatkowa etykieta "neutral". Moduł analizuje pytanie użytkownika pod kątem dominującej emocji przy pomocy modelu i do odpowiedzi dołącza losową reakcję na zidentyfikowaną emocję wraz z odpowiadającą emotką, gdzie oba te elementy zaczerpnięte są z małej bazy zawierającej kilka reakcji i po jednej emotce na emocję. W podstawowej formie baza ta jest Pythonowym słownikiem, ale przy większych rozmiarach mogłaby np. być ładowana z pliku json. Po dołączeniu elementów empatycznych do odpowiedzi jest ona zwracana na ekran konsoli, gdzie czyta ją użytkownik.