Jakiś czas temu na naszym blogu opisaliśmy projekt Content Moderation Platform, nad którym pracowaliśmy jako partner technologiczny we współpracy z firmą Wirtualna Polska. Stworzyliśmy zautomatyzowany system oparty na przetwarzaniu języka naturalnego, który pomaga moderować komentarze pojawiające się na stronie naszego partnera. Projekt ten wzbudził duże zainteresowanie, dlatego w tym artykule chcielibyśmy przedstawić Wam więcej technicznych szczegółów. Jeśli interesuje Cię m.in. jakie narzędzia wykorzystaliśmy do stworzenia architektury modelu czy też w jaki sposób przygotowaliśmy zbiór danych do jego trenowania —  zapraszamy do lektury.

Konrad Krawczyk – Machine Learning Specialist w WEBSENSA

Niniejszy artykuł powstał na podstawie konsultacji z Konradem Krawczykiem – naszym Specjalistą Machine Learning w projekcie CMP.

Główny cel systemu CMP

Przygotowany przez nas model jest oparty na sztucznej inteligencji i wykorzystywany do zaawansowanego wykrywania mowy nienawiści w czasie rzeczywistym. Rozpoznaje on nie tylko obraźliwe słowa, ale także potrafi odczytać kontekst wypowiedzi i na jego podstawie odpowiednio zaklasyfikować dany komentarz. 

Jest częścią składową rozbudowanego i zintegrowanego systemu moderacji treści, który obejmuje także inne modele, służące m.in. do wykrywania robotów w ruchu internetowym na stronie.

System CMP walczący z mową nienawiści w sieci — Nasz model klasyfikuje komentarze do jednej z trzech grup

Nasz model klasyfikuje komentarze do jednej z trzech grup:

  1. zaakceptowany —  komentarz nie narusza zasad firmy Wirtualna Polska;
  2. odrzucony —  komentarz narusza zasady Wirtualnej Polski;
  3. niepewny — system nie jest pewien, gdzie zaklasyfikować dany komentarz, dlatego jest on wysyłany do dodatkowej weryfikacji przez osobę pracującą na stanowisku moderatora.

System CMP służy do zaawansowanego wykrywania mowy nienawiści w czasie rzeczywistym

Zapewne zastanawiasz się, kiedy komentarz zostaje zaklasyfikowany jako „niepewny” i wysłany do dodatkowej weryfikacji. Otóż w tym celu ustawiliśmy tzw. próg pewności, który określa, na ile model jest pewny, gdzie powinien trafić dany komentarz. Jego decyzja opiera się na ocenie prawdopodobieństwa – jeżeli poziom pewności jest poniżej ustalonego progu, komentarz jest wysyłany do dodatkowej analizy przez człowieka.

Zbiór danych wykorzystany do trenowania modelu

System CMP walczący z mową nienawiści w sieci — Zbiór danych wykorzystany do trenowania modelu

Jak zapewne się domyślasz, aby nasz model działał prawidłowo, potrzebowaliśmy obszernego zbioru danych, niezbędnego zarówno do analizy, jak i szkolenia naszego modelu. W tym celu wykorzystaliśmy:

  • około 17,5 mln komentarzy z WP służących do wytrenowania modelu;
  • około 235 tys. komentarzy zaklasyfikowanych ręcznie przez pracowników Wirtualnej Polski użytych w celu wytrenowania klasyfikatora.

Otrzymany przez nas zestaw komentarzy nie nadawał się do uczenia modelu, ponieważ zawierał błędy, takie jak duża ilość niepotrzebnych atrybutów lub znaków specjalnych, które tylko dodawały zbędnego szumu. Aby więc nauczyć nasz model prawidłowej klasyfikacji komentarzy, musieliśmy dokładnie przygotować, oczyścić i zakwalifikować dane. Przede wszystkim postanowiliśmy zastąpić niepotrzebne elementy, takie jak linki czy liczby specjalnymi tokenami, które redukują szumy, a także informują nas o pojawieniu się takiego atrybutu.

Co więcej, skupiliśmy się na dodanych w komentarzu emotikonach. Poprzez ich odpowiednie zastąpienie uzyskaliśmy kluczowe informacje o emocjach, które wyrażają, a nasz model nauczył się analizować treść komentarzy również w oparciu o tego typu elementy.

Architektura modelu CMP

System CMP walczący z mową nienawiści w sieci — Architektura modelu CMP

Jako architekturę modelu wybraliśmy ULMFiT (Universal Language Model Fine-tuning for Text Classification) —  model składający się z sieci neuronowych LSTM (long short-term memory). Jego kluczową cechą jest możliwość łatwego dostosowywania go do konkretnego zadania na podstawie wcześniej przygotowanego modelu języka. Okazał się on doskonałym narzędziem do dostrojenia wcześniej przygotowanego modelu językowego (który potrafił przewidzieć słowa na podstawie poprzednich) do zadania niższego rzędu, jakim w tym przypadku była klasyfikacja komentarzy.

Do procesu tokenizacji użyliśmy tokenizera o nazwie SentencePiece. Co istotne w naszym projekcie, narzędzie to nie zamienia słów na konkretne tokeny, lecz dzieli je na mniejsze, co w niektórych zadaniach znacznie poprawia wydajność modelu. SentencePiece świetnie się do tego nadaje, ale należy przy tym pamiętać, że aby zbudować dobrej jakości korpus, zawierający dobrze przedstawione tokeny, potrzebuje on dużej ilości danych (przykładowo, nasz został stworzony ze zbioru 17,5 mln komentarzy).

Przygotowanie modelu języka

System CMP walczący z mową nienawiści w sieci — Przygotowanie modelu języka

Nasz model był dość duży zarówno ze względu na architekturę, jak i dane, co wymagało użycia zaawansowanego sprzętu. Dlatego też do przeszkolenia modelu wykorzystaliśmy Google Cloud Platform z kartą GPU NVIDIA Tesla P100 na maszynie n1-highmem-16 (16 vCPUs, 104 GB pamięci). Przetrenowanie modelu języka zajęło około 10 dni intensywnego uczenia. W tym celu ograniczyliśmy się tylko do komentarzy, które otrzymaliśmy od Wirtualnej Polski (czyli 17,5 mln). 

System CMP bierze pod uwagę zapożyczenia, skróty myślowe, internetowy slang, a nawet ewentualne błędy

Dlaczego więc postanowiliśmy skupić się tylko na tym źródle? Po dokładnej analizie dostępnej literatury dotyczącej języka polskiego uznaliśmy, że takie rozwiązanie będzie najlepsze dla naszego projektu. Jeśli skorzystalibyśmy z dodatkowego zbioru np. z Wikipedii, skuteczność naszego modelu mogłaby być mniejsza. Treści publikowane w Wikipedii znacznie różnią się bowiem od języka używanego przez osoby piszące komentarze w Internecie. W naszym projekcie musieliśmy wziąć pod uwagę ewentualne zapożyczenia, skróty myślowe, internetowy slang, a nawet ewentualne błędy, mogące pojawić się w komentarzach.

Dostosowanie modelu języka do klasyfikatora

System CMP walczący z mową nienawiści w sieci — Dostosowanie modelu języka do klasyfikatora

Po wytrenowaniu modelu języka udało nam się wydobyć z niego najważniejsze elementy: „encoder” (za pomocą SentencePiece) oraz —  przygotowany wcześniej i użyty przy trenowaniu modelu — korpus języka. Następnie, dzięki modelowi ULMFiT, “nałożyliśmy” na niego warstwę klasyfikacyjną

Podzielenie modelu na dwie grupy

Wirtualna Polska to firma, w skład której wchodzi kilka portali. Niektóre z nich mają charakter informacyjny a inne plotkarski. Jak się okazało, język używany w komentarzach w tych dwóch grupach również był inny. Dlatego musieliśmy podzielić naszą pracę na dwie części i przygotować dwa osobne modele dla każdej z tych grup. 

Wyrównanie szans dwóch wariantów klasyfikacji

Warto wspomnieć, że otrzymany przez nas zestaw szkoleniowy nie był równy, tzn. około 74% komentarzy zostało zaklasyfikowanych jako „zaakceptowane”, a tylko 26% jako „odrzucone”. Ta różnica oznaczała, że musieliśmy zrównoważyć te wartości, aby szansa na zaklasyfikowanie komentarza w jednym z tych dwóch miejsc była taka sama. Dzięki odpowiedniemu wyważeniu funkcji strat zneutralizowaliśmy ten problem i sieć neuronowa mogła zostać wytrenowana w  sposób prawidłowy i niezaburzony.

Wyniki osiągane przez model CMP

System CMP walczący z mową nienawiści w sieci — Wyniki osiągnięte przez model CMP

Efektywność naszego modelu spełniła oczekiwania zarówno naszego zespołu, jak i firmy Wirtualna Polska. Na zestawie testowym osiągnął on aż 93% dokładności. Ponadto, po ustaleniu progu pewności, udało się dodatkowo poprawić ten wynik do 99%, automatyzując publikowanie około połowy komentarzy na obsługiwanych stronach. Pozostałe z nich, czyli te, co do których model nie jest pewny, trafiają do moderatorów (ludzi), którzy decydują, gdzie zaklasyfikować dany komentarz.

Co ciekawe, postanowiliśmy zweryfikować skuteczność modelu i przetestowaliśmy go na zbiorze danych konkursowych z PolEval 2019, ponieważ zadanie to dotyczyło również wykrywania mowy nienawiści. Nasz model okazał się bardziej skuteczny i uzyskał F1 na poziomie 65,96, podczas gdy wynik drużyny zwycięskiej to 58,58.

Inne możliwości wykorzystania systemu CMP

System CMP walczący z mową nienawiści w sieci — Inne możliwości wykorzystania systemu CMP

Stworzony przez nas system moderacji treści (Content Moderation Platform) doskonale sprawdza się w serwisach Wirtualnej Polski, jednakże przy odpowiednim dostrojeniu może mieć znacznie szersze zastosowanie m.in. w:

  • serwisach social media,
  • portalach, na których użytkownicy wystawiają swoje oceny poszczególnym produktom lub usługom,
  • stronach internetowych dla dzieci,
  • platformach blogowych,
  • i wielu innych.

Nasz model został zbudowany tak, aby można było go dostosować do niemal każdego narzędzia czy platformy, a także do polityki firmy, która chciałaby go wdrożyć.

Podsumowanie

Mowa nienawiści może nieść za sobą tragiczne konsekwencje, dlatego też warto używać narzędzi takich jak opisany przez nas system CMP, który pomoże ich uniknąć lub przynajmniej zminimalizować.

Chcesz wdrożyć podobne narzędzie w swojej firmie? Skontaktuj się z naszymi ekspertami. Chętnie porozmawiamy o Twoich potrzebach.