Jak moderujemy ogłoszenia

Jak moderujemy ogłoszenia

Każda usługa, której użytkownicy mogą tworzyć własne treści (UGC - treści generowane przez użytkowników), musi nie tylko rozwiązywać problemy biznesowe, ale także uporządkować UGC. Zła lub niskiej jakości moderacja treści może ostatecznie zmniejszyć atrakcyjność usługi dla użytkowników, a nawet doprowadzić do zaprzestania jej działania.

Dziś opowiemy o synergii między Julią a Odnoklassnikami, która pomaga nam skutecznie moderować ogłoszenia w Julii.

Synergia jest zjawiskiem bardzo korzystnym, a w dzisiejszym świecie, gdzie technologia i trendy zmieniają się niezwykle szybko, może stać się prawdziwą różdżką. Po co marnować cenne zasoby i czas na wynajdywanie tego, co zostało już wynalezione i doprowadzone do perfekcji?

Tak samo pomyśleliśmy, gdy stanęliśmy przed zadaniem moderacji treści generowanych przez użytkowników — obrazków, tekstów i linków. Nasi użytkownicy codziennie przesyłają do Julii miliony jednostek treści, a bez automatycznego przetwarzania manualne moderowanie tych danych jest całkowicie nierealne.

Dlatego skorzystaliśmy z gotowej platformy moderacyjnej, którą nasi koledzy z Odnoklassników doprowadzili do stanu 'prawie perfekcyjnego'.

Dlaczego Odnoklassniki?

Codziennie do serwisu społecznościowego przybywają dziesiątki milionów użytkowników, którzy publikują miliardy jednostek treści: od zdjęć po filmy i teksty. Platforma moderacyjna Odnoklassników pomaga w weryfikacji ogromnych ilości danych oraz przeciwdziała spammerom i botom.

Zespół moderacyjny OК zdobył ogromne doświadczenie, ponieważ doskonali swój narzędzie od 12 lat. Ważne jest to, że nie tylko mogli podzielić się swoimi gotowymi rozwiązaniami, ale także dostosować architekturę swojej platformy do naszych specyficznych potrzeb.

Jak moderujemy ogłoszenia

Dalej dla skrótu będziemy nazywać platformę moderacyjną OК po prostu 'platformą'.

Jak to wszystko działa

Między Julią a Odnoklassnikami wymiana danych została zorganizowana przez Apache Kafka.

Dlaczego wybraliśmy to narzędzie:

  • W Julii wszystkie ogłoszenia przechodzą postmoderację, więc początkowo synchronizowana odpowiedź nie była wymagana.
  • Jeśli zdarzy się awaria, a Юла lub Одноклассники będą niedostępne, w tym z powodu jakichkolwiek szczytowych obciążeń, to dane z Kafka nigdzie nie znikną i później będzie je można dokończyć.
  • Platforma została już zintegrowana z Kafka, więc większość pytań dotyczących bezpieczeństwa została rozwiązana.

Jak moderujemy ogłoszenia

Dla każdego stworzonego lub zmienionego przez użytkownika ogłoszenia w Юле tworzony jest JSON z danymi, który jest umieszczany w Kafka do dalszej moderacji. Z Kafka ogłoszenia są ładowane na platformę, gdzie są podejmowane decyzje automatycznie lub ręcznie. Złe ogłoszenia są blokowane z podaniem przyczyny, a te, w których platforma nie znalazła naruszeń, są oznaczane jako „dobre”. Następnie wszystkie decyzje są wysyłane z powrotem do Юлы i stosowane w serwisie.

W rezultacie, dla Юły wszystko sprowadza się do prostych działań: wysłać ogłoszenie do platformy Одноклассников i otrzymać z powrotem odpowiedź „ok”, lub wyjaśnienie, dlaczego nie „ok”.

Automatyczne przetwarzanie

Co się dzieje z ogłoszeniem po tym, jak trafia na platformę? Każde ogłoszenie jest dzielone na kilka jednostek:

  • nazwa,
  • opis,
  • zdjęcia,
  • wybrana przez użytkownika kategoria i podkategoria ogłoszenia,
  • cena.

Jak moderujemy ogłoszenia

Następnie dla każdej jednostki platforma przeprowadza klasteryzację, aby znaleźć duplikaty. Przy czym teksty i zdjęcia są klasteryzowane według różnych schematów.

Teksty przed klasteryzacją są normalizowane, aby usunąć znaki specjalne, zmienione litery i inny śmieć. Otrzymane dane są dzielone na N-gramy, z których każdy jest haszowany. W rezultacie powstaje wiele unikalnych hashy. Podobieństwo między tekstami ocenia się według miary Jaccarda między dwoma uzyskanymi zbiorami. Jeśli podobieństwo przekracza próg, to teksty łączą się w jeden klaster. Aby przyspieszyć wyszukiwanie podobnych klastrów, wykorzystuje się MinHash i haszowanie wrażliwe na lokalizację.

Dla zdjęć wymyślono różne opcje scalania obrazów, od porównania pHash zdjęć po wyszukiwanie duplikatów za pomocą sieci neuronowej.

Ostatni sposób jest najbardziej „surowy”. Do szkolenia modelu wybierane były takie trójki obrazów (N, A, P), w których N nie przypomina A, a P przypomina A (jest półduplikatem). Następnie sieć neuronowa uczyła się tak, aby A i P były jak najbliżej siebie, a A i N jak najdalej. Dzięki temu otrzymuje się mniej fałszywych trafień w porównaniu do po prostu używania osadzeń z wytrenowanej sieci.

Kiedy sieć neuronowa otrzymuje obrazy, generuje dla każdego z nich wektor N(128)-wymiarowy i wysyła zapytanie w celu oceny podobieństwa obrazu. Następnie obliczany jest próg, przy którym podobne obrazy uznawane są za duplikaty.

Model potrafi mistrzowsko znajdować spammerów, którzy specjalnie fotografują ten sam towar z różnych kątów, aby obejść porównanie według pHash.

Jak moderujemy ogłoszeniaJak moderujemy ogłoszenia
Przykład zdjęć spammerskich, połączonych przez sieć neuronową jako duplikaty.

Na końcowym etapie duplikaty ogłoszeń są wyszukiwane jednocześnie w treści i w obrazach.

Gdy w klastrze łączą się dwa lub więcej ogłoszeń, system uruchamia automatyczną blokadę, która według określonych algorytmów wybiera, które duplikaty usunąć, a które pozostawić. Na przykład, jeśli dwóch użytkowników ma w ogłoszeniu identyczne zdjęcia, system zablokuje nowsze ogłoszenie.

Po utworzeniu wszystkie klastry przechodzą przez szereg automatycznych filtrów. Każdy filtr przyznaje klastrowi liczbę punktów (score): jaką prawdopodobieństwo, że zawiera zagrożenie, które wykrywa ten filtr.

Na przykład system analizuje opis w ogłoszeniu i wybiera dla niego potencjalne kategorie. Następnie bierze tę, która ma największe prawdopodobieństwo, i porównuje z kategorią wskazaną przez autora ogłoszenia. Jeśli się nie zgadzają, ogłoszenie jest blokowane za nieprawidłową kategorię. A ponieważ jesteśmy mili i uczciwi, informujemy użytkownika, jaką kategorię powinien wybrać, aby ogłoszenie przeszło moderację.

Jak moderujemy ogłoszenia
Powiadomienie o zablokowaniu za niewłaściwą kategorię.

Na naszej platformie uczenie maszynowe czuje się jak w domu. Na przykład za jego pomocą wyszukujemy w tytułach i opisach towary zabronione w RF. A modele sieci neuronowych starannie „oglądają” obrazy, sprawdzając, czy nie ma na nich adresów URL, spammerskich tekstów, telefonów i wszelkiej „zakazanej” treści.

W przypadkach, gdy zakazany towar próbuje się sprzedać, maskując go jako coś legalnego, a przy tym nie ma żadnego tekstu ani w tytule, ani w opisie, używamy tagowania obrazów. Dla każdego obrazu mogą być przypisane do 11 tysięcy różnych tagów, opisujących, co znajduje się na obrazie.

Jak moderujemy ogłoszenia
Próbuje się sprzedać fajkę wodną, maskując ją jako samowar.

Równolegle ze skomplikowanymi filtrami działają również proste, rozwiązujące oczywiste problemy związane z tekstem:

  • wulgaryzmy;
  • detektor adresów URL i numerów telefonów;
  • wzmianka o komunikatorach i innych kontaktach;
  • niższa cena;
  • ogłoszenia, w których nic nie jest sprzedawane, itd.

Dziś każde ogłoszenie przechodzi przez drobne sitko z ponad 50 automatycznymi filtrami, które próbują znaleźć w ogłoszeniu coś negatywnego.

Jeżeli żaden z detektorów nie zadziałał, do Yulu trafia odpowiedź, że ogłoszenie jest, "prawdopodobnie", w porządku. Tę odpowiedź stosujemy u siebie, a użytkownicy, którzy subskrybowali sprzedawcę, otrzymują powiadomienie o pojawieniu się nowego towaru.

Jak moderujemy ogłoszenia
Powiadomienie o tym, że sprzedawca ma nowy towar.

W efekcie każde ogłoszenie "nabywa" metadanych, część z nich generowana jest w momencie tworzenia ogłoszenia (adres IP autora, user-agent, platforma, geolokalizacja itd.), a reszta to wyniki (score) wydane przez każdy filtr.

Kolejki ogłoszeń

Gdy ogłoszenie trafia na platformę, system umieszcza je w jednej z kolejek. Każda kolejka jest tworzona za pomocą matematycznej formuły, która łączy metadane ogłoszenia w taki sposób, aby wykryć jakiś negatywny wzorzec.

Na przykład, można stworzyć kolejkę ogłoszeń w kategorii "Telefony komórkowe" od użytkowników Yuli rzekomo z Petersburga, przy czym ich adresy IP są z Moskwy lub innych miast.

Jak moderujemy ogłoszenia
Przykład ogłoszeń zamieszczonych przez jednego użytkownika w różnych miastach.

Można także formować kolejki na podstawie punktów, które sieć neuronowa przypisuje ogłoszeniom, porządkując je w kolejności malejącej.

Każda kolejka, zgodnie ze swoją formułą, przypisuje ogłoszeniu końcowy wynik (score). Następnie można działać na różne sposoby:

  • ustawić próg, przy którym ogłoszenie otrzyma określony typ blokady;
  • wszystkie ogłoszenia w kolejce wysyłane są moderatorom do ręcznej weryfikacji;
  • lub połączyć wcześniejsze opcje: określić próg automatycznej blokady i wysłać moderatorom te ogłoszenia, które nie osiągnęły tego progu.

Jak moderujemy ogłoszenia

Po co są te kolejki? Załóżmy, że użytkownik załadował zdjęcie broni palnej. Sieć neuronowa przypisuje mu wynik od 95 do 100 i z 99-procentową dokładnością określa, że na obrazku znajduje się broń. Ale jeśli wartość wyniku jest poniżej 95%, dokładność modelu zaczyna maleć (taka jest cecha modeli sieci neuronowych).

W rezultacie kształtuje się kolejka na podstawie wyniku modelu, a te ogłoszenia, które uzyskały od 95 do 100, są automatycznie blokowane jako „Towar zabroniony”. Ogłoszenia z liczbą punktów poniżej 95 są kierowane do ręcznej obróbki przez moderatorów.

Jak moderujemy ogłoszenia
Czekoladowa Beretta z nabojami. Tylko do ręcznej moderacji! 🙂

Ręczna moderacja

Na początku 2019 roku około 94% wszystkich ogłoszeń na Jule moderowanych jest automatycznie.

Jak moderujemy ogłoszenia

Jeśli platforma nie może zdecydować, co zrobić z niektórymi ogłoszeniami, wysyła je do ręcznej moderacji. Odniesienia stworzyły własne narzędzie: w zadaniach dla moderatorów natychmiast wyświetlana jest cała niezbędna informacja do podjęcia szybkiej decyzji - czy ogłoszenie jest dobre, czy należy je zablokować z podaniem przyczyny.

Aby przy ręcznej moderacji jakość usługi nie cierpiała, praca ludzi jest na bieżąco kontrolowana. Na przykład w strumieniu zadań moderatorowi wyświetlane są „pułapki” - ogłoszenia, dla których już istnieją gotowe rozwiązania. Jeśli decyzja moderatora nie zgadza się z gotowym, moderatorowi nalicza się błąd.

Na sprawdzenie jednego ogłoszenia moderator przeciętnie poświęca 10 sekund. Przy tym liczba błędów nie przekracza 0,5% wszystkich sprawdzonych ogłoszeń.

Moderacja społeczna

Koledzy z Odnoklassników poszli jeszcze dalej, wykorzystując „pomoc widowni”: stworzyli aplikację-grę dla serwisu społecznościowego, w której można szybko oznaczać dużą ilość danych, wyróżniając jakiś zły znak - Moderator Odnoklassników (https://ok.ru/app/moderator). Dobry sposób, by wykorzystać pomoc użytkowników OK, którzy starają się uczynić treści przyjemniejszymi.

Jak moderujemy ogłoszenia
Gra, w której użytkownicy oznaczają zdjęcia, na których znajduje się numer telefonu.

Każdą kolejkę ogłoszeń na platformie można skierować do gry Moderator Odnoklassników. Wszystko, co oznaczą użytkownicy gry, trafia następnie do wewnętrznych moderatorów do weryfikacji. Taki schemat pozwala na blokowanie ogłoszeń, dla których jeszcze nie stworzono filtrów, a jednocześnie tworzenie zbiorów do nauki.

Przechowywanie wyników moderacji

Zapisujemy wszystkie decyzje podjęte w procesie moderacji, aby później nie przetwarzać powtórnie tych ogłoszeń, dla których już podjęto jakąś decyzję.

Codziennie tworzone są miliony klastrów ogłoszeń. Z biegiem czasu każdy klaster otrzymuje oznaczenie 'dobry' lub 'zły'. Każde nowe ogłoszenie lub jego edycja, trafiając do klastra z oznaczeniem, automatycznie otrzymuje rezolucję samego klastra. Takich automatycznych rezolucji codziennie zbiera się około 20 tysięcy.

Jak moderujemy ogłoszenia

Jeśli do klastra nie napływają nowe ogłoszenia, jest on usuwany z pamięci, a jego hasz i decyzja zapisywane są w Apache Cassandra.

Kiedy platforma otrzymuje nowe ogłoszenie, najpierw próbuje znaleźć podobny klaster spośród już stworzonych i wziąć z niego decyzję. Jeśli takiego klastra nie ma, platforma zwraca się do Cassandry i tam poszukuje. Znalazła? Doskonale, stosuje decyzję do klastra i wysyła do Yuli. Takich 'powtórnych' decyzji dziennie zbiera się średnio 70 tysięcy — 8 % ogólnej liczby.

Podsumowując

Korzystamy z platformy moderacji Odnoklassników od dwóch i pół roku. Wyniki nam się podobają:

  • Automatycznie moderujemy 94% wszystkich ogłoszeń w ciągu dnia.
  • Koszt moderacji jednego ogłoszenia zmniejszyliśmy z 2 rubli do 7 kopiejek.
  • Dzięki gotowemu narzędziu zapomnieliśmy o problemach z zarządzaniem moderatorami.
  • W 2,5 razy zwiększyliśmy liczbę ogłoszeń przetwarzanych ręcznie przy tym samym liczbie moderatorów i budżecie. Jakość ręcznej moderacji wzrosła dzięki zautomatyzowanej kontroli i wacha się wokół 0,5% błędów.
  • Szybko przyciągamy filtry do nowych typów spamu.
  • Szybko łączymy nowe jednostki do moderacji „Yula Wymiary”. Od 2017 roku w Yuli pojawiły się wymiary Nieruchomości, Ofert i Samochodów.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster