
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.

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 .
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.

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.

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 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.


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.

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.

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.

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.

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Ä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.

Å 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.

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 (). Lielisks veids, kÄ izmantot OŠ lietotÄju palÄ«dzÄ«bu, kuri cenÅ”as padarÄ«t saturu patÄ«kamÄku.

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.

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 . No 2017. gada JulÄ parÄdÄ«jÄs vertikÄles Nekomers, VaramÅ”anÄs un Auto.
Avots: habr.com
