SÄ hÀr modererar vi annonser

SÄ hÀr modererar vi annonser

Varje tjÀnst vars anvÀndare kan skapa eget innehÄll (UGC - User-generated content) tvingas inte bara att lösa affÀrsproblem, utan ocksÄ att upprÀtta ordning i UGC. DÄlig eller bristfÀllig moderering av innehÄll kan slutligen minska tjÀnstens attraktivitet för anvÀndarna, Ànda till att den slutar fungera.

Idag ska vi berÀtta om synergierna mellan Jula och Odnoklassniki, som hjÀlper oss att effektivt moderera annonser pÄ Jula.

Synergi Àr överlag en mycket anvÀndbar sak, och i dagens vÀrld, dÀr teknologier och trender förÀndras mycket snabbt, kan den bli en riktig rÀddare i nöden. Varför slösa knappa resurser och tid pÄ att Äteruppfinna det som redan har uppfunnits och finslipats av andra?

SÄ tÀnkte vi ocksÄ, nÀr vi stod inför uppgiften att moderera anvÀndargenererat innehÄll - bilder, texter och lÀnkar. VÄra anvÀndare laddar varje dag upp miljontals enheter av innehÄll pÄ Jula, och utan automatisk behandling Àr det helt orealistiskt att moderera all denna data manuellt.

DÀrför anvÀnde vi en redan fÀrdig modereringsplattform som vÄra kollegor frÄn Odnoklassniki hade finslipat till ett tillstÄnd av "nÀstan perfektion".

Varför Odnoklassniki?

Varje dag kommer tiotals miljoner anvÀndare till det sociala nÀtverket och publicerar miljarder enheter av innehÄll: frÄn fotografier till videor och texter. Modereringsplattformen frÄn Odnoklassniki hjÀlper till att granska mycket stora datamÀngder och motverka spammare och bottar.

Modereringsteamet pÄ OK har samlat pÄ sig mycket stor erfarenhet, eftersom de har utvecklat sitt verktyg i 12 Är. Det Àr viktigt att de inte bara kunde dela med sig av sina fÀrdiga lösningar, utan ocksÄ anpassa arkitekturen pÄ sin plattform för vÄra specifika uppgifter.

SÄ hÀr modererar vi annonser

För korthetens skull kommer vi hÀrefter att kalla modereringsplattformen frÄn OK helt enkelt "plattformen".

SÄ hÀr Àr det uppbyggt

Mellan Jula och Odnoklassniki Àr datautbytet ordnat via Apache Kafka.

Varför vi valde det hÀr verktyget:

  • PĂ„ Jula genomgĂ„r alla annonser postmoderering, sĂ„ ett synkront svar behövdes inte frĂ„n början.
  • Om det skulle uppstĂ„ ett stort problem, och Jula eller Odnoklassniki skulle bli otillgĂ€ngliga, Ă€ven pĂ„ grund av nĂ„gon typ av toppbelastning, sĂ„ kommer datan frĂ„n Kafka inte att försvinna; den kan senare lĂ€sas igen.
  • Plattformen har redan integrerats med Kafka, sĂ„ de flesta sĂ€kerhetsfrĂ„gorna har lösts.

SÄ hÀr modererar vi annonser

För varje annons som skapas eller Àndras av anvÀndaren i Jula skapas en JSON med data, som lÀggs i Kafka för efterföljande moderering. FrÄn Kafka laddas annonserna upp till plattformen, dÀr beslut fattas automatiskt eller manuellt. DÄliga annonser blockeras med en angivelse av orsak, medan de annonser som plattformen inte finner nÄgra brott mot reglerna i, mÀrkts som 'bra'. Sedan skickas alla beslut tillbaka till Jula och tillÀmpas i tjÀnsten.

För Jula handlar det helt enkelt om följande ÄtgÀrder: att skicka en annons till plattformen för Odnoklassniki och fÄ tillbaka en resolution om 'okej', eller varför det inte Àr 'okej'.

Automatisk behandling

Vad hÀnder med annonsen efter att den kommit in pÄ plattformen? Varje annons delas upp i flera entiteter:

  • titel,
  • beskrivning,
  • foton,
  • vald kategori och underkategori av annonsen,
  • pris.

SÄ hÀr modererar vi annonser

DÀrefter genomför plattformen klustring för varje entitet för att hitta dubbletter. BÄde text och foton klustras enligt olika scheman.

Texten normaliseras före klustring för att ta bort specialtecken, Àndrade bokstÀver och annat skrÀp. De erhÄllna uppgifterna delas upp i N-gram, var och en av dem hashas. I slutÀndan erhÄlls mÄnga unika hashkoder. Likheten mellan texterna berÀknas enligt Jaccard-mÄtt mellan de tvÄ resulterande mÀngderna. Om likheten överstiger tröskelvÀrdet klistras texterna samman i ett kluster. För att pÄskynda sökningen efter liknande kluster anvÀnds MinHash och lokalt kÀnslig hashing.

För foton har olika alternativ för att slÄ ihop bilder utvecklats, frÄn att jÀmföra pHash av bilder till att söka dubbletter med hjÀlp av neurala nÀtverk.

Den sista metoden Àr den mest 'strÀnga'. För att trÀna modellen valdes sÄdana tredubblar av bilder (N, A, P), dÀr N inte liknar A, medan P liknar A (Àr en halv dubblett). DÀrefter lÀrde sig neurala nÀtverket att A och P skulle vara sÄ nÀra som möjligt, medan A och N skulle vara sÄ lÄngt ifrÄn varandra som möjligt. Detta ger fÀrre falska positiv Àn att bara ta inbÀddningar frÄn ett förtrÀnat nÀtverk.

NÀr neuronnÀtverket fÄr bilder som input, genererar det en N(128)-dimensionell vektor för varje bild och gör en förfrÄgan om att bedöma bildens likhet. DÀrefter berÀknas en tröskel för att avgöra vilka bilder som anses vara dubbletter.

Modellen Àr mÀsterligt bra pÄ att hitta spamare som medvetet fotograferar samma produkt frÄn olika vinklar för att kringgÄ jÀmförelsen med pHash.

SÄ hÀr modererar vi annonserSÄ hÀr modererar vi annonser
Exempel pÄ spam-bilder som kombineras av neuronnÀtverket som dubbletter.

I det slutliga steget söks dubbletter av annonser samtidigt efter text och bild.

Om tvÄ eller fler annonser klumpas ihop i en kluster, startar systemet en automatisk blockering som vÀljer, enligt vissa algoritmer, vilka dubbletter som ska tas bort och vilka som ska behÄllas. Till exempel, om tvÄ anvÀndare har samma bilder i sina annonser, sÄ blockeras den nyare annonsen.

Efter skapandet gÄr alla kluster igenom en rad automatiska filter. Varje filter tilldelar klustret ett antal poÀng (score): hur stor sannolikhet det har att innehÄlla en hot som detta filter upptÀcker.

Till exempel analyserar systemet beskrivningen i annonsen och vÀljer potentiella kategorier för den. Sedan tar det den med den högsta sannolikheten och jÀmför den med kategorin som annonsförfattaren angav. Om de inte matchar blockeras annonsen för fel kategori. Eftersom vi Àr snÀlla och Àrliga, sÀger vi tydligt till anvÀndaren vilken kategori de bör vÀlja för att annonsen ska gÄ igenom moderering.

SÄ hÀr modererar vi annonser
Meddelande om blockering för fel kategori.

PÄ vÄr plattform trivs maskininlÀrning som fisken i vattnet. Till exempel gör vi det möjligt att söka efter förbjudna varor i titlar och beskrivningar. NeuronnÀtsmodellerna inspekterar kritiskt bilder för att se om det finns nÄgra URL-adresser, spamtexter, telefonnummer och den dÀr förbjudna varan.

För fall dÀr en förbjuden vara försöker sÀljas genom att maskeras som nÄgot lagligt, och det inte finns nÄgon text varken i titeln eller i beskrivningen, anvÀnder vi bildtaggning. För varje bild kan upp till 11 000 olika taggar anges som beskriver vad som finns pÄ bilden.

SÄ hÀr modererar vi annonser
En vattenpipa försöker sÀljas, maskerad som en samovar.

Parallellt med de komplexa filtren fungerar ocksÄ de enkla som löser uppenbara problem relaterade till texten:

  • anti-matter;
  • detektor för URL-adresser och telefonnummer;
  • nĂ€mnande av meddelandetjĂ€nster och andra kontakter;
  • lĂ„gt pris;
  • annonser dĂ€r ingenting sĂ€ljs, osv.

Idag passerar varje annons genom en finmaskig sil av mer Àn 50 automatiska filter som försöker hitta nÄgot dÄligt i annonsen.

Om ingen av detektorerna slÄr till, sÄ skickas ett svar till Yula att annonsen "förmodligen" Àr i full ordning. Detta svar tillÀmpar vi, och anvÀndarna som har följt sÀljaren fÄr en notification om att en ny produkt har kommit.

SÄ hÀr modererar vi annonser
En notifikation om att sÀljaren har fÄtt en ny produkt.

Som ett resultat "vÀxer" varje annons med metadata, varav en del genereras vid skapandet av annonsen (avsÀndarens IP-adress, user-agent, plattform, geografisk plats osv.), och resten Àr poÀng som ges av varje filter.

Köer av annonser

NÀr en annons kommer in pÄ plattformen placeras den i en av köerna. Varje kö formuleras med hjÀlp av en matematisk formel som kombinerar metadata av annonsen pÄ ett sÀtt för att upptÀcka nÄgot dÄligt mönster.

Till exempel kan man skapa en kö av annonser i kategorin "Mobiltelefoner" frÄn Yula-anvÀndare som pÄstÄs vara frÄn Sankt Petersburg, men vars IP-adresser Àr frÄn Moskva eller andra stÀder.

SÄ hÀr modererar vi annonser
Exempel pÄ annonser som publicerats av en anvÀndare i olika stÀder.

Eller sÄ kan köer formas baserat pÄ poÀng som neuronnÀtverket tilldelar annonserna i fallande ordning.

Varje kö tilldelar ett slutgiltigt poÀng till annonsen enligt sin formel. DÀrefter kan man handla pÄ olika sÀtt:

  • ange en tröskel för nĂ€r annonsen ska fĂ„ en viss typ av blockering;
  • skicka alla annonser i kön till moderatorerna för manuell granskning;
  • eller kombinera de tidigare alternativen: ange en tröskel för automatisk blockering och skicka till moderatorerna de annonser som inte har nĂ„tt denna tröskel.

SÄ hÀr modererar vi annonser

Varför behövs dessa köer? Anta att en anvÀndare laddar upp ett foto pÄ ett vapen. NeuralnÀtverket ger det ett poÀng frÄn 95 till 100 och med 99 procents precision identifierar det att bilden förestÀller ett vapen. Men om poÀngen Àr under 95 % börjar modellens precision att sjunka (detta Àr en egenskap hos neuralnÀtmodeller).

Resultatet blir en kö baserad pÄ modellens poÀng, och de annonser som fÄtt mellan 95 och 100 blockeras automatiskt som "Förbjuden vara". Annonser med poÀng under 95 skickas för manuell granskning av moderatorerna.

SÄ hÀr modererar vi annonser
Choklad Beretta med patroner. Endast för manuell granskning! 🙂

Manuell granskning

I början av 2019 modererades cirka 94 % av alla annonser pÄ Yula automatiskt.

SÄ hÀr modererar vi annonser

Om plattformen inte kan avgöra statusen för vissa annonser, skickas de för manuell granskning. Odnoklassniki har utvecklat ett eget verktyg: i uppgifterna för moderatorer visas all nödvĂ€ndig information för att snabbt kunna fatta beslut — om annonsen Ă€r godkĂ€nd eller ska blockeras med en angiven anledning.

För att kvaliteten pĂ„ tjĂ€nsten inte ska försĂ€mras vid manuell granskning, övervakas arbetet löpande. Till exempel visas "fĂ€llor" i streamen av uppgifter — annonser som redan har fĂ€rdiga lösningar. Om moderatorns beslut inte stĂ€mmer överens med den fĂ€rdiga lösningen fĂ„r moderatorn en missrĂ€kning.

I genomsnitt lÀgger en moderator 10 sekunder pÄ att granska en annons. Antalet fel ligger pÄ högst 0,5 % av alla granskade annonser.

Folkmoderation

Kollegor frĂ„n Odnoklassniki gick Ă€nnu lĂ€ngre och anvĂ€nde "folkets hjĂ€lp": de skapade en spelapp för sociala nĂ€tverket dĂ€r man snabbt kan mĂ€rka stora mĂ€ngder data genom att identifiera dĂ„liga kĂ€nnetecken — Moderator Odnoklassniki (https://ok.ru/app/moderator). Ett bra sĂ€tt att utnyttja hjĂ€lp frĂ„n anvĂ€ndare av OK, som strĂ€var efter att göra innehĂ„llet trevligare.

SÄ hÀr modererar vi annonser
Ett spel dÀr anvÀndare markerar foton som innehÄller ett telefonnummer.

Alla annonsköer pÄ plattformen kan omdirigeras till spelet Moderator Okontakt. Allt som markerats av spelets anvÀndare skickas sedan till interna moderatorer för granskning. Denna metod gör det möjligt att blockera annonser dÀr inga filter har skapats Àn, samtidigt som man skapar trÀnings exempel.

Lagring av modereringsresultat

Vi sparar alla beslut som fattas under modereringen för att inte behöva bearbeta annonser som redan har bedömts pÄ nytt.

Det skapas varje dag miljoner kluster för annonser. Med tiden fÄr varje kluster en mÀrkning av "bra" eller "dÄlig". Varje ny annons eller dess redigering som hamnar i ett kluster med en mÀrkning fÄr automatiskt klustrets resolution. Det handlar om cirka 20 000 sÄdana automatiska resolutioner per dag.

SÄ hÀr modererar vi annonser

Om inga nya annonser kommer till klustret tas det bort frÄn minnet, och dess hash och beslut skrivs in i Apache Cassandra.

NĂ€r plattformen fĂ„r en ny annons försöker den först att hitta ett liknande kluster bland de redan skapade och ta beslutet dĂ€rifrĂ„n. Om det inte finns nĂ„got sĂ„dant kluster gĂ„r plattformen till Cassandra och söker dĂ€r. Hittade den? UtmĂ€rkt, tillĂ€mpar beslutet pĂ„ klustret och skickar det till Yula. Det handlar om i genomsnitt 70 000 sĂ„dana "Ă„terkommande" beslut varje dag — 8 % av det totala antalet.

Sammanfattningsvis

Vi har anvÀnt Moderator Okontakt-plattformen i tvÄ och ett halvt Är. Resultaten gillar vi:

  • Vi modererar automatiskt 94 % av alla annonser per dag.
  • Kostnaden för att moderera en annons har minskat frĂ„n 2 rubel till 7 kopejki.
  • Tack vare det fĂ€rdiga verktyget har vi glömt problemet med att hantera moderatorer.
  • Vi har ökat antalet manuellt behandlade annonser med 2,5 gĂ„nger med samma antal moderatorer och budget. Dessutom har kvaliteten pĂ„ den manuella modereringen ökat tack vare automatiserad kontroll och ligger runt 0,5 % fel.
  • Vi tĂ€cker snabbt nya typer av spam med filter.
  • Vi kopplar snabbt nya avdelningar till modereringen «Yula Vertikaler». Sedan 2017 har Yula fĂ„tt vertikaler inom Fastigheter, Lediga platser och Bil.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster