Klasyfikacja tekstów
Zadanie dotyczy klasyfikacji tekstów. Dany jest zbiór tekstów, wybranych z
notatek prasowych dotyczących kwestii Brexitu. Notatki są zaetykietowane w
trzech klasach: poparcie dla Brexitu (1), przeciwna Brexitowi (-1), albo
dotycząca Brexitu, ale neutralna (0).
Należy zbudować klasyfikator, poprawnie rozpoznający dowolną notatkę tekstową
jako jedną z powyższych trzech klas.
Pracę należy wykonać w dwóch etapach, które mogą być powtarzane: (1) wybór
reprezentacji danych i zdefiniowanie zbioru cech (features), na których będzie
się opierała praca klasyfikatora, oraz napisanie programu do konwersji zbioru
tekstów na zbiór wektorów cech, oraz (2) budowa klasyfikatora, i jego
optymalizacja.
Popularne schematy reprezentacji tekstów o zmiennej długości do celów
automatycznej klasyfikacji to BoW (Bag-of-Words), TF-IDF (Term
Frequency-Inverse Document Frequency), Word2Vec, plus dodatkowo wykorzystanie
modelu N-gram (np. bigram).
W budowie klasyfikatora można wykorzystać dowolne algorytmy maszynowego
uczenia. Warto wykonać kilka eksperymentów, zaczynając od różnych analiz
statystycznych zbioru danych, i następnie wykonując wstępny eksperyment
uczenia maszynowego z wykorzystaniem najprostszej reprezentacji danych oraz
naiwny klasyfikator bayesowski. Wyniki tego eksperymentu mogą służyć jako
referencyjne do oceny poprawności zastosowania bardziej zaawansowanych metod.
Mogą one obejmować inne modele reprezentacji danych, oraz inne algorytmy
uczenia maszynowego takie jak: drzewa decyzyjne, metoda najbliższych sąsiadów,
SVM, sieci neuronowe, podejścia hybrydowe typu ensemble, itp.
Wyniki każdego eksperymentu należy oceniać obliczając odpowiednie miary błędów
obejmujące (co najmniej) Dokładność obliczoną zarówno na zbiorze treningowym
jak i metodą walidacji krzyżowej, jako najprostszą metodę wykrywania
przeuczenia.
Optymalizacja wyników może koncentrować się na wyborze najlepszego algorytmu
maszynowego uczenia, dostrajania jego parametrów, jak również próbować
podejścia typu ensemble learning, budując klasyfikatory hybrydowe. Możliwe
jest również cofnięcie się do kroku poprzedniego - budowy reprezentacji, i
próby jej modyfikacji w celu osiągnięcia lepszej zdolności klasyfikacji.
Wyniki z ćwiczenia
Proszę opracować osiągnięte wyniki w postaci raportu opisującego wykonane
prace i otrzymane wyniki, oraz pakietu uruchomieniowego, pozwalającego
uruchomić opracowany(e) klasyfikator(y) i odtworzyć wyniki opisane w raporcie.
Raport powinien zawierać:
- Brak strony tytułowej, spisu treści, rysunków, tabel, ani nic takiego.
Zamiast tego jedynie zwarty nagłówek z: nazwą przedmiotu, prowadzącego,
tytułem projektu, nazwiskiem autora, i datą.
- Krótki ale precyzyjny opis wykonanych prac zarówno przy opracowaniu
danych, budowie wektora cech, kolejno testowanych algorytmów klasyfikacji,
otrzymanych wyników, interpretacji otrzymanych miar jakości, i prób ich
poprawienia.
- Otrzymane wyniki. Proszę powstrzymać się podawania w raporcie dużej
liczby wyników liczbowych z wieloma miejscami po przecinku, licząc na to, że
odbiorca raportu wyszuka sobie te wyniki, które go interesują, zinterpretuje
je sobie z taką dokładnością, którą uzna za właściwą, a resztę podanych
wyników liczbowych pominie. Należy podać tylko kluczowe wyniki, zaokrąglone
do sensownej dokładności. Forma tabelaryczna jest bardzo dobra, ale w
treści raportu najważniejsze/końcowe wyniki powinny być również podane i
omówione. Proszę unikać wklejania screenshotów tylko w celu pokazania
wyświetlanych tam wyników.
- Krótkie podsumowanie zawierające wybrane najważniejsze uzyskane wyniki i
wnioski autora na temat wykonanego zadania.
- Kluczowe pozycje literatury wykorzystane w pracy.
- Główne kryteria oceny raportu to: zwięzłość, jasność i czytelność opisu,
a także precyzja i kompletność (patrz formularz oceny zadania).
Pakiet uruchomieniowy powinien:
- dać się uruchomić na Linuksie,
- zawierać plik Readme.txt opisujący sposób jego uruchomienia, w tym
wymagane pakiety oprogramowania, ich wersje, i sposób ich zainstalowania,
- zawierać wytrenowany model(e) klasyfikatora pozwalające na klasyfikację
dowolnego zadanego zbioru testowego o takim samym formacie jak pierwotny
zbiór tekstów (uczący), i wyliczenie najważniejszych statystycznych ocen
jakości klasyfikacji,
- DODATKOWO pozwolić na ponowne wytrenowanie klasyfikatora na zadanym
zbiorze danych uczących (tekstów), i wykonanie klasyfikacji dowolnego
zadanego zbioru testowego,
- PONADTO pozwolić na wytrenowanie klasyfikatora na zadanym zbiorze danych
uczących w trybie walidacji krzyżowej i wyświetlić otrzymane wyniki,
- NIE POWINIEN zawierać pierwotnego zbioru danych uczących, ani żadnej
jego wersji (jeśli dane uczące potrzebne są w innym formacie to program
powinien dokonać ich niezbędnej konwersji).