# Lista 3 Zadania zrobione: 1, 2, 3, 4, 5 (nie jest zrobione, ale nie wiadomo o co chodzi z wyszukiwaniem informacji), 6, 7, 8 (można lepiej, ale jest git), 10 TODO Janek: 2 (ładnie spisać, dodać def itp) TODO Wojtek: 9 ## Zadanie 1 **Słowo tonie ma aż 4 różne znaczenia i cztery lematy. Wymień je wszystkie, a następnie napisz krótki tekst (najlepiej jedno zdanie), w którym to słowo występuje we wszystkich czterech znaczeniach. Sprawdź, czy ChatGPT jest w stanie poprawnie zinterpretować to zdanie, wypisując informacje o tych znaczeniach w kontekście tego zdania.** Słowo "tonie" ma cztery różne znaczenia i odpowiadające im lematy: * tonie (od czasownika „tonąć”): forma 3. osoby liczby pojedynczej czasu teraźniejszego, np. "On tonie w rzece." * tonie (od rzeczownika „tona”): miejscownik liczby pojedynczej, np. "Dużo zarobiliśmy na tej tonie węgla" * tonie (od rzeczownika „ton”): biernik liczby mnogiej, np. "Te tonie dźwięków są subtelne." * tonie (od rzeczownika „toń”): celownik liczby pojedynczej, np. "Krystaliczne tonie jeziora zachwycają." TODO: a co z dobry ton czegoś (to dźwięk)? TODO: a co z jeziorem Trzy Tonie? Zdanie: * "Marek słuchał sopranu o pięknym tonie i podziwiał krystaliczne tonie jeziora, gdy zauważył, że statek tonie..., myśląc przy tym o tej tonie węgla, którą kupił na zimę." * Inne zdanie: "Antoni tonie, z wagą równej tonie, patrząc w tonie jeziora i wykrzykujac dźwięki o wysokim tonie." Prompt do czata: "Zinterpretuj znaczenie powyższego zdania, wypisując informacje o znaczeniach słowa tonie w kontekście tego zdania" ChatGPT jest w stanie poprawnie zinterpretować to zdanie, wypisując informacje o tych znaczeniach w kontekście tego zdania. Również potrafi docenić grę słowną i humor za nią się kryjący (daje nawet emotki śmiechu). Interpretacja znaczeń w zdaniu przez ChatGPT: ``` W podanym zdaniu słowo "tonie" występuje w różnych znaczeniach, które zmieniają się w zależności od kontekstu. Oto interpretacja każdego użycia: 1. "słuchał sopranu o pięknym tonie" * W tym kontekście "tonie" odnosi się do tonu dźwięku, czyli barwy lub charakteru dźwięku wydawanego przez głos sopranowy. 2. "podziwiał krystaliczne tonie jeziora" * Tutaj "tonie" oznacza głębię wody lub przejrzystość jeziora, sugerując spokojną i czystą powierzchnię wody. 3. "zauważył, że statek tonie" * W tym fragmencie "tonie" jest czasownikiem w trzeciej osobie liczby pojedynczej, oznaczającym proces zatapiania się statku w wodzie. 4. "tej tonie węgla, którą kupił na zimę" * W tym przypadku "tonie" odnosi się do tony jako jednostki wagi, wskazując na ilość węgla zakupioną na zimę. Podsumowując, słowo "tonie" jest użyte w zdaniu w czterech różnych znaczeniach: jako ton dźwięku, głębia wody, proces zatonięcia oraz jednostka masy. ``` ## Zadanie 2 **Czym są rzadkie reprezentacje wektorowe słów (wykorzystujące TF-IDF i konteksty)? Dlaczego nie jest to rozwiązanie perfekcyjne (słaba wskazówka: piękna żaglówka; śliczny żaglowiec). Zaproponuj procedurę, która zawiera w sobie klasteryzację i działa potencjalnie lepiej, niż oryginalne reprezentacje (dodatkowo zwracając wektory o mniejszej liczbie wymiarów).** <!-- Czym są rzadkie reprezentacje wektorowe słów (wykorzystujące TF-IDF i konteksty)? --> <!-- TF-IDF (Term Frequency-Inverse Document Frequency) -> TODO: def --> <!-- konteksty -> TODO: def --> <!-- Rzadkie reprezentacje wektorowe słów -> TODO: def --> Rzadkie reprezentacje wektorowe, takie jak te oparte na TFIDF, reprezentują słowa jako wysokowymiarowe, rzadkie wektory. Każdy wymiar odpowiada konkretnemu słowu (cecha), a wartość w danym wymiarze wskazuje, jak istotne jest dane słowo w kontekście dokumentu i całego korpusu. Kluczowe cechy rzadkich reprezentacji: * TF-IDF: * Wartość w wektorze zależy od częstości występowania słowa w dokumencie (TF) oraz od jego rzadkości w całym korpusie (IDF). * Mniejsze wartości IDF przypisywane są słowom bardzo częstym (np. "i", "jest"), a wyższe słowom unikalnym dla danego dokumentu. * Konteksty: * Mogą uwzględniać współwystępowania słów w kontekście (np. okno sąsiadujących słów). <!-- Dlaczego nie jest to rozwiązanie perfekcyjne (słaba wskazówka: piękna żaglówka; śliczny żaglowiec). --> By Patryk TFIDF - https://pl.wikipedia.org/wiki/TFIDF rzadkie reprezentacji - https://en.wikipedia.org/wiki/Sparse_matrix wady: - synominów nierozpoznaje - brak infomracji o relacjach miedzy termami (cechami?) - potrzebna pamiec jest zalezna od wielkosci slwonika (przewaznie duza) - zla wrazliwosc na warianty tego samego slowa - ... na homografy (ta sama pisowani, inne zanczenie) zalety: - prostota - czasami sie nawet sprawdza (klasyfikacja dokumnetow) Redukcja wymiaru -> zawiera się w klasteryzacji (nie chcemy mieć po klasteryzacji czegoś co ma milion wymiarów) Propozycja procedury: wszsytkie slowa zameinic na lematy i moze ustawic jakis threshold na podobienstwo cosinusowe po przerobieniu ich przez CBOF na wektory o mneijszym wymiarze. Wtedy takei wektory nieprzekraczajacego thresholdu możemy traktowac jako reprezentacje tej samej rzeczy np. zamieniajac je na nowy usredniony wektor ablo pamietajac mapowanie ## Zadanie 3 **Będziemy rozważać zadanie Next Sentence Prediction (czyli zadanie, w którym na wejściu mamy dwa zdania i należy określić, czy są one kolejnymi zdaniami tekstu (czyli czy drugie zdanie jest w tekście bezpośrednio po pierwszym). Zadanie to występuje w dwóch wariantach: a) Przykłady negatywne są losowane z całego korpusu. b) Przykłady negatywne są kolejnymi zdaniami, w których zmieniliśmy kolejność. Oczywiście przykłady pozytywne, to po prostu pary kolejnych zdań z tekstu. Zaproponuj rozwiązanie obu tych wariantów, wykorzystujące model taki jak Papuga. Dodatkowo dla wybranego wariantu zaproponuj rozwiązanie niekorzystające z zaawansowanych sieci neuronowych (jak chcesz, możesz skorzystać z word2vec-a, lub podobnych modeli, ale nie jest to wymagane).** a) * liczę ppb zdania A, liczę ppb zdania B * robię średnią minus epsilon (dobieralny), otrzymując średnia_eps * licze ppb A concatinated z B (oczywiscie wszsytko znormalizowne) * sprawdzam czy srednia-eps >= concat(A, B) b) * liczymy ppb dwóch sklejeń: pierwsze z drugim i drugie z pierwsyzm * sprawdzamy, które jest bardziej ppb Wybieramy podpunkt a): * robimy jakąś macierz podobieństwa A z B i drugą B z A * działa to niby jak atencja (attention mechanism, który jest np w Transformersach) * pierwsze wartości z obu macierzy determinują rozwiązanie * liczymy sobie funkcję z tej macierzy i wartość tego podobieństwa będzie tym co nas interesuje Attension mechanism -> Idea jest prosta – to jest próba bezpośredniego modelowania interakcji, związków pomiędzy elementami w jakimś potencjalnie bardzo długim ciągu. TODO: nie do końa ## Zadanie 4 **Zaproponuj jakiś sposób do wyznaczania (bezkontekstowych) osadzeń węzłów w grafie (na przykład osób w sieciach społecznościowych, filmów i użytkowników Netlixa, ...). Twój sposób powienien korzystać z oryginalnego Word2Vec-a.** Deep Walk -> https://www.geeksforgeeks.org/deepwalk-algorithm/ By Patryk: Na grafie przeprowadzamy random walki tworząc tym samym sekwencje odpowiadające zdaniom w tradycyjnym tekstowym korpusie. Na tak wygenerowanych korpusach wykonujemy Word2Vec. ## Zadanie 5 **Jakaś część pytań z Pracowni 1 dotyczy przysłów, przykładowo:** * Z czym według przysłowia porywamy się na słońce? * Co według przysłowia kołem się toczy? * Który wyraz jest błędnie użyty w przysłowiu: „Co dwie głowy, to nie trzy” **Zaproponuj sposób rozwiązywania takich pytań z wykorzystaniem wyszukiwania informacji.** * Jeśli jest możliwość normalnego searcha -> to wtedy podobnie do zadania z wikipedią, bierzemy podzbiory słów przysłowia, wyszukujemy w SEARCH API Wikipedia, bierzemy kilka pierwszych artykułów i sprawdzamy jakie jest pokrycie tytułu * Tutaj można dużo rzeczy wymyślić By Patryk jakies shit z suma reprezentacji wektororych wrod2veca ## Zadanie 6 **Przeczytaj opis baseline solution dla zadania https://2021.poleval.pl/tasks/task4 (odpowiadania na pytania). Spróbuj uzasadnić, dlaczego to miałoby działać i zaproponuj jakąś, sensowną wg Ciebie, korektę tego algorytmu.** Opis, jest krótki -> można linka odpalić (potem przepiszę) * Na filmiku mówi, że 12-13% -> więc nie działa jakoś super * Idea to: * zrób tokeny z pytania, zignoruj jednoznakowe tokeny * wyślij tokeny oddzielone spacją do Search API Wikipedia * dla kanżdego z otrzymanych artykułów, split na tytule na tokeny -> jeśli żaden token tytułu nie ma 50% overlapu z tokenami zapytania, to usuń znaczki i wypluj odpowiedź * w p.p. sprawdź następny artykuł * jeśli po przejrzeniu wszystkich artykułów nic nie znaleźliśmy, to usuwamy pierwszy token zapytania i lecimy od nowa Intuicyjnie widać, że to może działać, słowa powiązane, API sobie jakoś wyszukuje -> Korekta tego algosa: lepszy sposob: * przejsc po podzbiorze pytania i zrobic to samo np jakby było "Czy autorem jest gosc1 czy gosc2?" to szuakajc gosc1 i gosc1 jest szansa ze trafimy a w baselinie nie ma xD * można robić podsumowanie tytułów jakiś Robertem czy czymś cos innego: * a moze jeszcze word2vec i dopasowac pytanie i tytuly wikiepdii?? ## Zadanie 7 **Omawiany na wykładzie algorytm BPE działał zwiększając liczbę tokenów do pożądanego progu. Zaproponuj algorytm działający w drugą stronę, to znaczy startujący od bardzo dużej liczby tokenów i zmniejszający ją, aż osiągniemy wymaganą liczbę. Algorytm powinien: * Być niezależny od języka (zatem nie może wykonywać żadnego wstępnego szukania wyrazów) * Pracować na dużym korpusie, pamiętając „bieżącą” tokenizację korpusu, wykonaną za pomocą dostępnych tokenów. * Wykonywać wiele kroków, stopniowo zbliżając się do docelowej wielkości słownika. * Usuwać mniej użyteczne tokeny (czyli „tokenizować tokeny” w korpusie) * Starać się maksymalizować unigramowe prawdopodobieństwo korpusu, czyli QN i=1 p(wi), gdzie wszysktie wi należą do bieżącego zbioru tokenów, a ich konkatenacja to cały korpus. Przy czym prawdopodobieństwa szacujemy na podstawie tokenizowanego korpusu. Zastanów się ponadto, dlaczego wymaganie z tego punktu jest sensowne.** Algos od Google'a (wygląda jakby miał wszystko co potrzeba) -> https://github.com/google/sentencepiece Dlaczego warunek -> poprawia naturalność, raczej każda metoda będzie poprawiać, jedne bardziej drugie mniej <!-- By Patryk --> <!-- nazwa algosa to "sentence peace algorithm"(?) --> ## Zadanie 8 **Zaproponuj 3 różne scenariusze augmentacji danych z recenzjami za pomocą Papugi.** 3 różne scenariusze augmentacji danych z recenzjami za pomocą Papugi: * Synonimizacja i parafraza zdań * Opis: * Narzędzie generuje alternatywne wersje zdań w recenzjach, zachowując ich znaczenie, ale zmieniając strukturę składniową lub dobór słów. * Przykład: * Oryginał: "Produkt spełnia moje oczekiwania, jest solidny i dobrze wykonany." * Zmiana: "To, co otrzymałem, odpowiada moim oczekiwaniom – trwałość i jakość wykonania są na wysokim poziomie." * Zastosowanie: * Zwiększenie różnorodności tekstów w zbiorze danych do trenowania modeli, np. klasyfikatorów opinii. * Testowanie odporności modelu na warianty językowe. * Generowanie recenzji z emocjami na różnych poziomach * Opis: * Papuga modyfikuje recenzje poprzez manipulację tonem emocjonalnym – zmniejszając lub zwiększając poziom entuzjazmu, negatywności czy neutralności. * Przykład: * Oryginał: "Usługa była w porządku, ale nie zachwyciła mnie." * Entuzjastyczna wersja: "Jestem pod wrażeniem jakości tej usługi – wszystko przebiegło idealnie!" * Negatywna wersja: "To była porażka – obsługa klienta pozostawia wiele do życzenia." * Zastosowanie: * Trenowanie modeli rozpoznawania emocji i tonacji w tekście. * Przygotowanie danych do analizy sentymentu w różnych kontekstach. * Dodawanie błędów językowych i stylizacji * Opis: * Recenzje są modyfikowane poprzez wprowadzanie literówek, skrótów, potocznych zwrotów lub nietypowych konstrukcji gramatycznych, aby odzwierciedlać rzeczywiste dane użytkowników. * Przykład: * Oryginał: "Doskonały produkt, działa bez zarzutu." * Zmiana z błędem: "Doskonały prodykt, działa bez zażutu." * Wersja potoczna: "Mega produkt, działa git!" * Zastosowanie: * Przygotowanie modelu do pracy z tekstami użytkowników zawierającymi błędy. * Symulacja danych z różnych rejestrów językowych (formalny vs nieformalny). * Każdy z tych scenariuszy można zaadaptować do specyficznych wymagań projektu i odpowiednio dostosować parametry Papugi, np. poziom synonimizacji czy stopień modyfikacji tonu. By Patryk: - przed losowaniem tokenow, mozna ich ppb zamienic na ppb z dolozonym POLECAM lub NIE POLECAM po potencjalnym tokenie i w zalezosci od eg ojaki jest label opinii i w ten sposob starac sie utrzymywac wydzwiek generowanych zmian - straszczac opienie typu dodac na koniec "To w skrócie: " - można mieszać długie zdania z opinii o tym saymm wydźwięku i sprawdzac ppb (? cos w te strone ale nwm) - Ucinanie opinii w pew2nym miejscu i kazanie modelowi kontynuowac recenzje - Wprowadzic model w kontekst parafrazowania i dac mu recenzje do zmienienia - Wprowadzić w konteskt tematu np. technologii i kazadnie zmienić recenzje w tym kierunku. - Kasować kropkę i dopisywać oraz i to co sie wygeneruje to bedzie nowa recenzja ## Zadanie 9 **Zaproponuj 3 scenariusze wykorzystania word2vec w zadaniu Riddles (z poprzednich list). Zakładamy, że mamy dostęp do wzorcowych definicji wyrazów, oraz do pewnej liczby przykładów 'zagadek'.** By Patryk 1. CBOW - Opis słowa traktujemy jako kontekst i przetwarzajac go, chcemy go upodomnic do wyrazu bedacego odpowiedzia. Potem evaluujac zwyczajnie zamieniamy opis na embedda i szukamy najblizszego slowa ze slownika. Podobnie ma sie rzecz z gotowymi przykladami, je tez uzywamy w treningu. 2. Dodatkowo mozemy stworzyc embedded reprezentacji opisow i traktowac je jako reprezentacje opisywanych wyrazow i kozystac z nich przy szukaniu odpowiedzi 3. Generujemy llmem odpowiedzi i porownujemy osadzenia odpowiedzi ze slowami ze slownika Co to młotek? -> Piszemy: młotek to... i generujemy słowo ## Zadanie 10 **Ocena wiarygodności generowanego tekstu w scenariuszu silnych więzów (na przykład wymagania, by wszystkie słowa były na 'p') za pomocą prawdopodobieństwa tego tekstu ma pewną wadę. Jaką? (wskazówka: rozważ słowo 'przede'). Jak łatwo wyeliminować tę wadę?** By Patryk Tokeny co generacje sa chyba filtrowane tak, aby spełniały więzy. W związku z tym w przypadku "przede" nie będzie naturalnej kontynuacji " wszsytkim", a jendynie tokeny z bardzo niskimi scorami, no bo "przede" raczej najczesciej jest przed " wszytkim". Dlatego możemy stosować top-p i sprawdzać, czy dla okreslonej masy ppb brane jest pod uwage wystaczająco mało tokenów. Jeżeli tak, to losujemy, a jeżeli nie to cofamy się w generacji, w przypadku "przede" odhaczamy je, żeby go drugi raz nie wylosować i powtarzamy procedurę, czyli sprawdzmy jak rozkłada się masa ppb. Jeżeli jest git to losujmy bez "przede" a jak nie to znowu sie cofamy skreslajac tym razem juz cos innego itd. ## Zadanie 11. (1-3p) **W zadaniu wrócimy do osadzeń słów testowanych za pomocą ABX i modelu typu BERT. Przyjmijmy, że wektorem osadzenia będzie wektor przypisany całej wypowiedzi (pierwszy wektor w Hubercie), niemniej wypowiedź nie będzie jednowyrazowa. Zaproponuj jakąś metodę konstruowania takiej wypowiedzi, wykorzystując korpus tekstowy (potencjalnie zawierający wystąpienia słów i/lub plik z lematami słów). Za zaproponowanie metody jest 1p, za jej zaimplemetowanie i powiedzenia, jaki ABX-score osiąga drugi, a jeżeli uda się w ten sposób otrzymać lepsze osadzenie niż przy użyciu tylko jednego słowa – trzeci.**