Kā mēs moderējam sludinājumus

Kā mēs moderējam sludinājumus

Katram pakalpojumam, kuru lietotāji var radÄ«t savu saturu (UGC — lietotāju radÄ«tais saturs), jārisina ne tikai biznesa uzdevumi, bet arÄ« jāievieÅ” kārtÄ«ba UGC. Sliktas vai zemas kvalitātes satura moderēŔana galu galā var samazināt pakalpojuma pievilcÄ«bu lietotājiem, pat lÄ«dz pakalpojuma pārtraukÅ”anai.

Šodien mēs pastāstīsim par sinerģiju starp Julu un Odnoklassniki, kas palīdz mums efektīvi moderēt sludinājumus Julā.

SinerÄ£ija ir patieŔām noderÄ«ga lieta, un mÅ«sdienu pasaulē, kad tehnoloÄ£ijas un tendences mainās ļoti ātri, tā var kļūt par burvju nÅ«jiņu. Kāpēc tērēt ierobežotos resursus un laiku, izgudrojot to, ko pirms jums jau ir izgudrojuÅ”i un attÄ«stÄ«juÅ”i?

Mēs arÄ« tā domājām, kad priekŔā stāvēja uzdevums moderēt lietotāju saturu — attēlus, tekstus un saites. MÅ«su lietotāji katru dienu augÅ”upielādē miljonus saturu Julā, un bez automātiskās apstrādes visus Å”os datus manuāli moderēt ir pilnÄ«gi nereāli.

Tāpēc mēs izmantojām jau gatavu moderēŔanas platformu, kuru mÅ«su kolēģi no Odnoklassniki lÄ«dz tam brÄ«dim bija attÄ«stÄ«juÅ”i lÄ«dz stāvoklim "gandrÄ«z perfekts".

Kāpēc Odnoklassniki?

Katru dienu sociālajā tÄ«klā ienāk desmitiem miljonu lietotāju, kuri publicē miljardiem satura vienÄ«bu: no fotogrāfijām lÄ«dz video un tekstiem. Odnoklassniki moderēŔanas platforma palÄ«dz pārbaudÄ«t ļoti lielus datu apjomus un pretoties surogātpasta sÅ«tÄ«tājiem un robotiem.

Odnoklassniki moderēŔanas komanda ir uzkrājusi ļoti lielu pieredzi, jo jau 12 gadus sistemātiski uzlabo savu rÄ«ku. SvarÄ«gi, ka viņi ne tikai varēja dalÄ«ties ar saviem gatavajiem risinājumiem, bet arÄ« pielāgot savas platformas arhitektÅ«ru mÅ«su specifiskajiem uzdevumiem.

Kā mēs moderējam sludinājumus

Turpmāk, lai Ä«sinātu, mēs Å”o moderēŔanas platformu sauksim vienkārÅ”i par "platformu".

Kā viss darbojas

Datu apmaiņa starp Julu un Odnoklassniki ir izveidota, izmantojot Apache Kafka.

Kāpēc mēs izvēlējāmies Å”o rÄ«ku:

  • Julā visi sludinājumi iziet postmoderāciju, tāpēc sākotnēji sinhronais atbildes formāts nebija nepiecieÅ”ams.
  • Ja notiks pārtraukums, un Jula vai Odnoklassniki nebÅ«s pieejami, tostarp kādu pīķa slodžu dēļ, tad dati no Kafka nekur nepazudÄ«s un vēlāk tos varēs izlasÄ«t.
  • Platforma jau ir integrēta ar Kafka, tādēļ lielākā daļa droŔības jautājumu ir atrisināti.

Kā mēs moderējam sludinājumus

Uz katru lietotāja izveidoto vai mainÄ«to sludinājumu Yula tiek izveidots JSON ar datiem, kas tiek ievietots Kafka turpmākai moderēŔanai. No Kafka sludinājumi tiek ielādēti platformā, kur tie tiek automātiski vai manuāli izskatÄ«ti. Sliktie sludinājumi tiek bloķēti ar iemesla norādi, bet tie, kuros platforma nepamanÄ«ja pārkāpumus, tiek atzÄ«ti par ā€žlabiemā€. Pēc tam visi lēmumi tiek nosÅ«tÄ«ti atpakaļ uz Yula un piemēroti pakalpojumā.

Galu galā, Yula viss attiecās uz vienkārŔām darbÄ«bām: nosÅ«tÄ«t sludinājumu platformā Odnoklassniki un atpakaļ saņemt rezolÅ«ciju ā€žokā€, vai kāpēc ne ā€žokā€.

Automātiskā apstrāde

Kas notiek ar sludinājumu pēc tā nonākÅ”anas platformā? Katrs sludinājums tiek sadalÄ«ts vairākās entitātēs:

  • nosaukums,
  • apraksts,
  • fotogrāfijas,
  • lietotāja izvēlētā kategorija un apakÅ”kategorija sludinājumam,
  • cena.

Kā mēs moderējam sludinājumus

Pēc tam platforma veic klasterizāciju katrai entitātei, lai atrastu dublikātus. Turklāt teksti un fotogrāfijas tiek klasterizēti pēc dažādām shēmām.

Teksti pirms klasterizācijas tiek normalizēti, lai iznÄ«cinātu speciālos simbolus, izmainÄ«tās burtus un citus atkritumus. IegÅ«tie dati tiek sadalÄ«ti N-grammās, no kurām katra tiek hashojama. Tā rezultātā tiek iegÅ«ts daudz unikālu hash vērtÄ«bu. LÄ«dzÄ«ba starp tekstiem tiek novērtēta pēc Jaccard lÄ«dzÄ«bas starp abām iegÅ«tajām kopām. Ja lÄ«dzÄ«ba ir lielāka par slieksni, tad teksti tiek apvienoti vienā klasterÄ«. Lai paātrinātu lÄ«dzÄ«gu klasteru meklēŔanu, tiek izmantoti MinHash un Locality-sensitive hashing.

Fotogrāfijām ir izstrādātas dažādas attēlu apvienoÅ”anas iespējas, sākot no pHash attēlu salÄ«dzināŔanas lÄ«dz dublikātu meklēŔanai, izmantojot neironu tÄ«klu.

Pēdējais veids ir visvairāk ā€žskarbsā€. Lai apmācÄ«tu modeli, tika atlasÄ«ti tādas trÄ«skārÅ”as attēlu grupas (N, A, P), kur N nav lÄ«dzÄ«gs A, bet P ir lÄ«dzÄ«gs A (ir puse dublikāta). Pēc tam neironu tÄ«kls tika apmācÄ«ts, lai A un P bÅ«tu maksimāli tuvi, bet A un N - maksimāli tāli. Tādējādi iegÅ«st mazāk viltus pozitÄ«vu salÄ«dzinājumā ar vienkārÅ”u iepriekÅ” apmācÄ«tas tÄ«kla embeds iegūŔanu.

Kad neironu tÄ«kls saņem attēlus, tas katram no tiem Ä£enerē N(128)-dimensionālu vektoru un veic pieprasÄ«jumu par attēla lÄ«dzÄ«bas novērtēŔanu. Tālāk tiek aprēķināta robeža, pie kuras tuvākie attēli tiek uzskatÄ«ti par dublikātiem.

Modelis meistarÄ«gi spēj atrast spamerus, kuri apzināti fotografē to paÅ”u produktu no dažādiem leņķiem, lai apietu salÄ«dzinājumu pēc pHash.

Kā mēs moderējam sludinājumusKā mēs moderējam sludinājumus
Paraugs no spameru fotogrāfijām, ko neironu tīkls salīmējis kā dublikātus.

Noslēguma fāzē dublikāti tiek meklēti vienlaikus gan pēc teksta, gan pēc attēla.

Ja klasterÄ« tiek salÄ«mētas divas vai vairākas sludinājumi, sistēma aktivizē automātisku bloķēŔanu, kas pēc noteiktiem algoritmiem izvēlas, kuri dublikāti jādzēŔ, bet kuri jātur. Piemēram, ja diviem lietotājiem sludinājumā ir identiski attēli, tad sistēma bloķēs jaunāko sludinājumu.

Pēc izveides visi klasteri iziet cauri virknei automātiskiem filtriem. Katrs filtrs pieŔķir klasterim punktu skaitu (score): ar kādu varbÅ«tÄ«bu tajā ir drauds, ko identificē Å”is filtrs.

Piemēram, sistēma analizē aprakstu sludinājumā un izvēlas potenciālās kategorijas. Pēc tam tā ņem to, kurai ir vislielākā varbÅ«tÄ«ba, un salÄ«dzina ar kategoriju, ko norādÄ«jis sludinājuma autors. Ja tās nesakrÄ«t, sludinājums tiek bloķēts par nepareizu kategoriju. Un, tā kā mēs esam laipni un godÄ«gi, mēs tieÅ”i sakām lietotājam, kuru kategoriju viņam vajadzētu izvēlēties, lai sludinājums izietu moderāciju.

Kā mēs moderējam sludinājumus
Paziņojums par bloķēŔanu nepareizas kategorijas dēļ.

MÅ«su platformā maŔīnmācīŔanās jÅ«tas kā mājās. Piemēram, ar tās palÄ«dzÄ«bu mēs meklējam aizliegtās preces nosaukumos un aprakstos Krievijā. Un neironu tÄ«klu modeļi rÅ«pÄ«gi ā€žizskataā€ attēlus, vai uz tiem nav URL adreses, spameru teksti, telefona numuri un dienas beigās ā€žaizliegtoā€ preču ieraksti.

GadÄ«jumiem, kad aizliegto preci mēģina pārdot, maskējot to par kaut ko likumÄ«gu, un tajā paŔā laikā nav nekādu tekstu ne nosaukumā, ne aprakstā, mēs izmantojam attēlu marķēŔanu. Katram attēlam var bÅ«t pieŔķirti lÄ«dz pat 11 tÅ«kstoÅ”iem dažādu tagu, kas apraksta, kas atrodas uz attēla.

Kā mēs moderējam sludinājumus
Kalcim cenÅ”as pārdot, maskējot to par samovaru.

Līdzās sarežģītiem filtriem darbojas arī vienkārŔi, kas risina acīmredzamas uzdotos uzdevumus, kas saistīti ar tekstu:

  • antimaterija;
  • URL adreses un tālruņu numuru detektors;
  • tÄ«kloÅ”anas un citu kontaktu minēŔana;
  • zemā cena;
  • sludinājumi, kuros nekas netiek pārdots, utt.

Šodien katrs sludinājums iziet cauri smalkam sietam, kas sastāv no vairāk nekā 50 automātiskiem filtru, kuri cenŔas atrast kaut ko sliktu sludinājumā.

Ja neviens no detektoriem neactivējās, Yula sÅ«ta atbildi, ka ar sludinājumu "visticamāk" viss ir kārtÄ«bā. Mēs Å”o atbildi izmantojam sev, un lietotājiem, kas ir abonējuÅ”i pārdevēju, saņem paziņojumu par jauna preces parādīŔanos.

Kā mēs moderējam sludinājumus
Paziņojums, ka pārdevējam parādījusies jauna prece.

Rezultātā katrs sludinājums "apaug" ar metadatiem, kuru daļa tiek Ä£enerēta sludinājuma izveidoÅ”anas laikā (autora IP adrese, user-agent, platforma, Ä£eolokācija utt.), bet pārējais ir punkti, ko pieŔķir katrs filtrs.

Sludinājumu rindas

Kad sludinājums nonāk platformā, sistēma to liek vienā no rindām. Katru rindu veido matemātiska formula, kas kombinē sludinājuma metadatus tā, lai atklātu kādu sliktu paraugu.

Piemēram, var izveidot sludinājumu rindu kategorijā "Mobilie telefoni" no Yula lietotājiem, kuri it kā ir no Sanktpēterburgas, bet viņu IP adreses ir no Maskavas vai citām pilsētām.

Kā mēs moderējam sludinājumus
Piemērs sludinājumiem, ko vienlaikus publicējis viens lietotājs dažādās pilsētās.

Vai arī rindas var veidot, balstoties uz punktiem, ko neironu tīkls pieŔķir sludinājumiem, ierindojot tos dilstoŔā secībā.

Katru rindu, saskaņā ar savu formulu, pieŔķir sludinājumam galÄ«go punktu skaitu. Tālāk var rÄ«koties dažādi:

  • norādÄ«t robežvērtÄ«bu, kurā sludinājums saņems noteiktu bloķēŔanas veidu;
  • visus sludinājumus rindā nosÅ«tÄ«t moderatoriem manuālai pārbaudei;
  • vai kombinēt iepriekŔējos variantus: norādÄ«t automātiskās bloķēŔanas robežvērtÄ«bu un nosÅ«tÄ«t moderatoriem tos sludinājumus, kas Å”o robežvērtÄ«bu nesasniedza.

Kā mēs moderējam sludinājumus

Kāpēc nepiecieÅ”amas Ŕīs rindas? Pieņemsim, ka lietotājs ir augÅ”upielādējis attēlu ar Å”aujamieročiem. Neironu tÄ«kls pieŔķir tam punktu vērtÄ«bu no 95 lÄ«dz 100 un ar 99 procentu precizitāti nosaka, ka attēlā ir ierocis. Bet, ja punktu vērtÄ«ba ir zemāka par 95 %, modeļa precizitāte sāk samazināties (tā ir neironu tÄ«klu modeļu Ä«paŔība).

Tādējādi veidojas rinda, pamatojoties uz modeļa punktu vērtÄ«bu, un tie sludinājumi, kas saņēmuÅ”i punktu vērtÄ«bu no 95 lÄ«dz 100, automātiski tiek bloķēti kā "Aizliegtie produkti". Sludinājumi ar punktu vērtÄ«bu zem 95 tiek nosÅ«tÄ«ti manuālai moderācijai.

Kā mēs moderējam sludinājumus
Å okolādes Beretta ar patronām. Tikai manuālai moderācijai! šŸ™‚

Manuālā moderācija

2019. gada sākumā aptuveni 94 % visu sludinājumu Yula tiek moderēti automātiski.

Kā mēs moderējam sludinājumus

Ja platforma nevar izlemt par dažu sludinājumu moderēŔanu, tā nosÅ«ta tos manuālai moderācijai. Odnoklassniki izstrādāja savu rÄ«ku: uzdevumos moderatoriem tÅ«lÄ«t tiek rādÄ«ta visa nepiecieÅ”amā informācija ātra lēmuma pieņemÅ”anai — vai sludinājums ir derÄ«gs vai jābloķē ar iemeslu.

Un lai manuālajā moderācijā netiktu ietekmēta pakalpojuma kvalitāte, cilvēku darbs tiek pastāvÄ«gi uzraudzÄ«ts. Piemēram, uzdevumu plÅ«smā moderatoram tiek rādÄ«tas "slazdi" — sludinājumi, kuriem jau ir sagatavoti risinājumi. Ja moderatora lēmums atŔķiras no jau sagatavotā, moderatoram tiek pieskaitÄ«ta kļūda.

Vidēji vienam sludinājumam moderators tērē 10 sekundes. Kļūdu skaits nepārsniedz 0,5 % no visiem pārbaudītajiem sludinājumiem.

Tautas moderācija

Kolēģi no Odnoklassniki devās vēl tālāk un izmantoja "zāles palÄ«dzÄ«bu": uzrakstÄ«ja sociālajai tÄ«klam spēli, kurā var ātri marķēt lielu datu apjomu, izceļot kādu sliktu pazÄ«mi — Moderators Odnoklassniki (https://ok.ru/app/moderator). Lielisks veids, kā izmantot OК lietotāju palÄ«dzÄ«bu, kuri cenÅ”as padarÄ«t saturu patÄ«kamāku.

Kā mēs moderējam sludinājumus
Spēle, kurā lietotāji atzīmē attēlus, kuros ir norādīts tālruņa numurs.

Jebkura sludinājumu rinda platformā var tikt novirzÄ«ta uz spēli Moderators Odnoklassniki. Viss, ko lietotāji atzÄ«mē spēlē, pēc tam tiek nosÅ«tÄ«ts iekŔējiem moderētājiem pārbaudei. Šāda shēma ļauj bloķēt sludinājumus, kuru attiecÄ«gās filtrā vēl nav izveidoti, vienlaikus izveidojot mācÄ«bu paraugus.

Moderācijas rezultātu glabāŔana

Mēs saglabājam visas pieņemtās lēmumus moderācijā, lai vēlāk atkārtoti neapstrādātu tos sludinājumus, par kuriem jau ir pieņemts lēmums.

Katru dienu par sludinājumiem tiek izveidoti miljoniem klasteru. Laika gaitā katrs klasteris saņem atzÄ«mi ā€žlabsā€ vai ā€žsliktsā€. Katrs jauns sludinājums vai tā redakcija, iekļūstot klasterÄ« ar atzÄ«mi, automātiski saņem klastera lēmumu. Šādu automātisko lēmumu ik dienas tiek pieņemti apmēram 20 tÅ«kstoÅ”i.

Kā mēs moderējam sludinājumus

Ja klasterÄ« netiek saņemti jauni sludinājumi, tas tiek izdzēsts no atmiņas, un tā heÅ”s un lēmums tiek ierakstÄ«ti Apache Cassandra.

Kad platforma saņem jaunu sludinājumu, tā vispirms mēģina atrast lÄ«dzÄ«gu klasteri starp jau izveidotajiem un ņem no tā lēmumu. Ja tāda klastera nav, platforma dodas uz Cassandra un meklē tur. Atrada? Lieliski, piemēro lēmumu klasterim un nosÅ«ta uz Julu. Šādu ā€žatkārtotuā€ lēmumu ikdienā pieaug vidēji lÄ«dz 70 tÅ«kstoÅ”iem — 8 % no kopējā apjoma.

Kopsavilkums

Mēs izmantojam Moderators Odnoklassniki platformu divarpus gadus. Mums patīk rezultāti:

  • Automātiski moderējam 94 % no visiem sludinājumiem dienā.
  • Moderācijas izmaksas par vienu sludinājumu samazinājuŔās no 2 rubļiem lÄ«dz 7 kapeikām.
  • Pateicoties gatavajam instrumentam, aizmirsām par problēmām ar moderatoru pārvaldīŔanu.
  • 2,5 reizes palielinājām manuāli apstrādāto sludinājumu skaitu, saglabājot to paÅ”u moderatoru un budžeta skaitu. Vēl arÄ« manuālās moderēŔanas kvalitāte ir palielinājusies automatizētās kontroles dēļ un svārstās ap 0,5 % kļūdām.
  • OperatÄ«vi segam jaunus surogātpasta veidus ar filtriem.
  • Ātri pieslēdzam jaunus struktÅ«rvienÄ«bas moderācijai ā€žJula Vertikāliā€. No 2017. gada Julā parādÄ«jās vertikāles Nekomers, VaramÅ”anās un Auto.

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster