Projekt przedstawia bardzo dobre podejście do klasyfikacji danych tekstowych, czyli jednego z podstawowych problemów w obszarze przetwarzania języka naturalnego (ang. NLP – natural language processing). Rozważanym zagadnieniem jest wykrywanie mowy nienawiści (czyli klasyfikacja binarna: czy tekst zawiera mowę nienawiści) w tweetach. W projekcie pojawiają się proste metody klasyfikacji tekstów z obszaru “klasycznego” uczenia maszynowego, zaawansowane metody oparte o sieci neuronowe z transfer learning’iem (model BERT) i ciekawa augmentacja danych (tworzenie sztucznych przykładów uczących) polegające na dopisywaniu do tweetów dodatkowego fragmentu tekstu przy użyciu modelu językowego.
Link do projektu: https://github.com/laboratoriumdanetyki/hate_speech_detection_example_1
Zalety projektu
- proste i zaawansowane metody,
- augmenetacja danych,
- czytelność projektu.
Proste i zaawansowane metody
W projekcie zostały zastosowane zarówno proste metody, które ustanawiają pewien punkt odniesienia (baseline), jak i bardziej zaawansowane metody, które są bardziej skomplikowane i kosztowne, ale mają większy potencjał. Dobrze odzwierciedla to praktyczne postępowanie w tej dziedzinie – zaczynanie od prostych metod, żeby móc zweryfikować czy użycie bardziej złożonych jest opłacalne. Małym, ale atrakcyjnym dodatkiem jest pokazanie szybkości działania różnych wariantów, które obrazuje wspomniane różnice złożoności i dostarcza cennej informacji w kontekście potencjalnych zastosowań modeli na dużą skalę.
Augmentacja danych
Na szczególne wyróżnienie zasługuje zastosowanie augmentacji danych (ang. DA – Data augmentation), czyli tworzenie nowych sztucznych przykładów uczących. W danym przypadku to zdecydowanie podejście nieszablonowe. Jest to zrealizowane poprzez dogenerowywanie kilków słów na końcu tweeta i użycia tak rozszerzonej treści jako nowa obserwacja. Jest to rozsądne podejście, ponieważ można spodziewać, że wydłużenie tekstu będzie brzmiało naturalnie i może wyglądać tak, jakby ktoś naprawdę napisał takiego dłuższego tweeta. Jednocześnie taka modyfikacja nie wpłynie na “klasę” obserwacji – jeśli tekst zawierał mowę nienawiści, to dopisanie kilku słów nie zmienia tego faktu. Wykorzystanie takiego podejścia dowodzi wysokich kompetencji autora projektu w tej dziedzinie: świadczy to o wysokiej kreatywności (jeśli to był autorski pomysł) lub o szerokiej znajomości obszaru NLP czy umiejętnością wyszukiwania ciekawych rozwiązań (jeśli ten pomysł został zaczerpnięty z istniejących rozwiązań).
Czytelność projektu
Plusem projektu jest jego czytelność. Autor zadbał o jasne komentarze i wyjaśnienia, co ułatwia odbiorcom śledzenie logiki działań. Jest to ważny aspekt, który nierzadko bywa pomijany w projektach związanych z uczeniem maszynowym, a tutaj wyraźnie poprawia dostępność projektu dla innych użytkowników. W szczególności mamy dobrze skonstruowane README repozytorium, podział zawartości projektu na wiele plików i dość dobre komentarze w plikach.
Niedociągnięcia projektu
Brak wizualnej prezentacji efektów augmentacji danych
Zdecydowanie brakuje tutaj wizualnej prezentacji efektów augmentacji, która jest jednym z kluczowych elementów projektu – pokazania, jak wyglądają dane po tej operacji. Zobaczenie rozszerzonych tekstów umożliwiłoby ludzką ocenę jakości wygenerowanych przykładów, co mogłoby pomóc w dalszej optymalizacji rozwiązania. Być może jakość wygenerowanych przykładów jest niska, przez co zabieg nie poprawia wyników, a gdybyśmy to zauważyli, pozwoliłoby to na próbą polepszenia augmentacji. “Be close to your data” – to bardzo ważna zasada w pracy z uczeniem maszynowym, aby bardzo dokładnie wiedzieć co wkładamy do modeli, która tutaj nie jest zachowana (chyba, że autor to sprawdzał i wyglądało to dobrze, ale nie zostało zaprezentowane).
Estetyka
Projekt zawiera pewne niedoskonałości o charakterze “estetycznym”. Przykładem może być niespójność językowa — niektóre fragmenty są napisane po polsku, a inne po angielsku, co zdecydowanie nie powinno mieć miejsca. Warto również wyczyścić pojawiające się ostrzeżenia, gdy jest ich dużo, ponieważ zakłócają estetykę i czytelność.
Struktura kodu
Kolejnym aspektem, który można byłoby poprawić, to struktura kodu. Projekt mógłby zyskać na klarowności dzięki tworzeniu i wydzieleniu funkcji pomocniczych do osobnych modułów i unikaniu powtarzających się fragmentów kodu. Wprowadzenie plików konfiguracyjnych do obsługi zmiennych globalnych byłoby dobrym krokiem w stronę lepszego zarządzania projektem, zwłaszcza przy jego dalszej rozbudowie.
Uwagi dotyczące pracy z algorytmami uczenia maszynowego
W projekcie w ten specyficzny sposób generowane są sztuczne przykłady jedynie dla klasy mniejszościowej, co może rodzić pewne ryzyka. Jeśli rozszerzone teksty wyglądają istotnie inaczej od oryginalnych (np. poprzez specyficzne słownictwo lub niepoprawną strukturę tekstu), model może nauczyć się rozpoznawać nie nienawiść, ale właśnie sztuczność danych. Innymi słowy, może dojść do sytuacji, w której specyficzność rozszerzonych tekstów będzie dominującym czynnikiem i model zauważy zależność między nią a klasą obserwacji, a nie będzie dostrzegał zależności między klasą a występowaniem nienawiści w tekście. W tym przypadku właściwe wydaje się wygenerowanie również pewnej liczby sztucznych przykładów dla tekstów bez mowy nienawiści, czyli klasy 0.
Na marginesie, to samo w sobie rodzi ciekawe pytania badawcze: czy rzeczywiście model “zauważa” sztuczność obserwacji i jak to na niego wpływa? Ciekawym zagadnieniem byłoby zaprojektowanie eksperymentów, które na takie pytanie mógłby odpowiedzieć. Przykładowy wątek z tym związany może dotyczyć długości tekstów: teksty rozszerzone będą średnio rzecz biorąc dłuższe. W związku tym pewnym aspektem badawczym mogłaby być analiza tego, czy model typu BERT “wie” jakiej długości jest tekst.
Podsumowanie projektu wykrywania mowy nienawiści
Podsumowując, projekt jest ciekawy i ambitny, pokazuje szeroką wiedzę autora z zakresu uczenia maszynowego i NLP. Laboratorium Danetyki potwierdza posiadanie solidnych kompetencji w obszarze data science. Głównymi zaletami projektu jest uporządkowane i praktyczne podejście do problemu (od metod prostych do złożonych) i kreatywny zabieg potencjalnie wzmacniający jakość modelu (niezależnie od tego, że finalnie nie poprawił rozwiązania). Elementami do poprawy byłoby przede wszystkim zarządzanie kodem projektu.
Laboratorium Danetyki potwierdza posiadanie solidnych kompetencji w obszarze data science.