# 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.**