Kaip atidaryti komentarus ir nepaskęsti šlamšte

Kaip atidaryti komentarus ir nepaskęsti šlamšte

Kai tavo darbas yra sukurti ką nors gražaus, nereikia per daug apie tai kalbėti, nes rezultatas yra prieš akis. Bet jei ištrinsite užrašus nuo tvorų, niekas nepastebės jūsų darbo, kol tvoros atrodys padoriai arba kol neištrinsite kažko ne taip.

Bet kuri paslauga, kurioje galite palikti komentarą, apžvalgą, išsiųsti žinutę ar įkelti nuotraukas, anksčiau ar vėliau susiduria su šiukšlių, sukčiavimo ir nešvankybių problema. To negalima išvengti, tačiau su tuo reikia kovoti.

Mano vardas Michailas, dirbu Antispam komandoje, kuri apsaugo „Yandex“ paslaugų vartotojus nuo tokių problemų. Mūsų darbai retai pastebimi (ir tai yra gerai!), todėl šiandien apie tai papasakosiu plačiau. Sužinosite, kada nuosaikumas yra nenaudingas ir kodėl tikslumas nėra vienintelis jo efektyvumo rodiklis. Taip pat kalbėsime apie keikimąsi kačių ir šunų pavyzdžiu ir kodėl kartais naudinga „mąstyti kaip prisiekėjui“.

„Yandex“ atsiranda vis daugiau paslaugų, kuriose vartotojai skelbia savo turinį. Galite užduoti klausimą arba parašyti atsakymą Yandex.Q, aptarti kiemo naujienas Yandex.District, dalytis eismo sąlygomis pokalbiuose Yandex.Maps. Tačiau kai paslaugos auditorija auga, ji tampa patraukli sukčiams ir šiukšlių siuntėjams. Ateina ir pildo komentarus: siūlo lengvus pinigus, reklamuoja stebuklingus vaistus ir žada socialines pašalpas. Dėl nepageidaujamo elektroninio pašto siuntėjų vieni vartotojai praranda pinigus, o kiti – nenorėdami leisti laiko netvarkingai paslaugai, apaugusiai šiukšlėmis.

Ir tai ne vienintelė problema. Siekiame ne tik apsaugoti vartotojus nuo sukčių, bet ir sukurti patogią bendravimo atmosferą. Jei žmonės komentaruose susidurs su keiksmais ir įžeidinėjimais, jie greičiausiai išeis ir nebegrįš. Tai reiškia, kad jūs taip pat turite mokėti su tuo susitvarkyti.

Švarus tinklas

Kaip dažnai nutinka pas mus, pirmieji patobulinimai gimė Paieškoje – dalyje, kuri kovoja su šiukšlėmis paieškos rezultatuose. Maždaug prieš dešimt metų ten pasirodė užduotis filtruoti suaugusiesiems skirtą turinį šeimos paieškoms ir užklausoms, į kurias nereikėjo atsakymų iš 18+ kategorijos. Taip atsirado pirmieji rankiniu būdu spausdinami pornografijos ir keiksmažodžių žodynai, juos papildė analitikai. Pagrindinė užduotis buvo suskirstyti užklausas į tuos, kur priimtina rodyti turinį suaugusiesiems, o kur ne. Šiai užduočiai atlikti buvo renkamas žymėjimas, kuriama euristika ir apmokyti modeliai. Taip atsirado pirmieji nepageidaujamo turinio filtravimo patobulinimai.

Laikui bėgant „Yandex“ pradėjo atsirasti UGC (vartotojo sukurtas turinys) – pranešimai, kuriuos rašo patys vartotojai, o „Yandex“ tik skelbia. Dėl aukščiau aprašytų priežasčių daugelio žinučių nebuvo galima publikuoti nežiūrint – reikėjo moderuoti. Tada jie nusprendė sukurti paslaugą, kuri užtikrintų apsaugą nuo šlamšto ir užpuolikų visiems „Yandex UGC“ produktams ir naudotų patobulinimus nepageidaujamam turiniui Paieškoje filtruoti. Paslauga vadinosi „Švarus internetas“.

Naujos užduotys ir stūmikų pagalba

Iš pradžių mums pasiteisino tik paprastas automatizavimas: tarnybos siųsdavo mums tekstus, o mes juose paleidome nešvankybių žodynus, pornografinius žodynus ir įprastus posakius – analitikai viską sukompiliavo rankiniu būdu. Tačiau laikui bėgant paslauga buvo naudojama vis daugiau „Yandex“ produktų, todėl turėjome išmokti dirbti su naujomis problemomis.

Dažnai vietoj apžvalgos vartotojai publikuoja beprasmį laiškų rinkinį, bandydami padidinti savo pasiekimus, kartais reklamuoja savo įmonę konkurentų įmonės atsiliepimuose, o kartais tiesiog suklaidina organizacijas ir atsiliepime apie naminių gyvūnėlių parduotuvę rašo: “ Puikiai iškepta žuvis!” Galbūt kada nors dirbtinis intelektas išmoks puikiai suvokti bet kokio teksto prasmę, tačiau dabar automatika kartais susitvarko prasčiau nei žmonės.

Tapo aišku, kad negalime to padaryti be rankinio žymėjimo, ir mes įtraukėme į savo grandinę antrąjį etapą - siuntimą, kad asmuo apžiūrėtų rankiniu būdu. Ten buvo įtraukti tie paskelbti tekstai, kuriems klasifikatorius nematė problemų. Nesunkiai įsivaizduojate tokios užduoties mastą, todėl ne tik pasitikėjome vertintojais, bet ir pasinaudojome „minios išmintimi“, tai yra kreipėmės pagalbos į tolokerius. Jie padeda mums nustatyti, ko mašina praleido, ir taip to išmokyti.

Išmanusis talpyklos kaupimas ir LSH maiša

Kita problema, su kuria susidūrėme dirbdami su komentarais, buvo šlamštas, o tiksliau – jo apimtis ir plitimo greitis. Kai „Yandex.Region“ auditorija pradėjo sparčiai augti, ten atėjo šiukšlių siuntėjai. Jie išmoko apeiti reguliarius posakius šiek tiek pakeisdami tekstą. Žinoma, šlamštas vis tiek buvo rastas ir ištrintas, tačiau „Yandex“ mastu nepriimtiną žinutę, paskelbtą net 5 minutes, galėjo pamatyti šimtai žmonių.

Kaip atidaryti komentarus ir nepaskęsti šlamšte

Žinoma, tai mums netiko ir mes sukūrėme išmaniąją teksto talpyklą, pagrįstą LSH (vietovei jautri maiša). Tai veikia taip: normalizavome tekstą, pašalinome iš jo nuorodas ir supjaustėme į n-gramus (n raidžių sekas). Toliau buvo apskaičiuotos n-gramų maišos ir iš jų sukurtas dokumento LSH vektorius. Esmė ta, kad panašūs tekstai, net ir šiek tiek pakeisti, pavirto panašiais vektoriais.

Šis sprendimas leido pakartotinai panaudoti klasifikatorių ir tolokerių verdiktus panašiems tekstams. Šlamšto atakos metu, kai tik pirmasis pranešimas praėjo nuskaitymą ir pateko į talpyklą su „spam“ verdiktu, visi nauji panašūs pranešimai, net ir modifikuoti, gavo tą patį verdiktą ir buvo automatiškai ištrinti. Vėliau išmokome išmokyti ir automatiškai perkvalifikuoti šiukšlių klasifikatorius, tačiau ši „išmanioji talpykla“ liko su mumis ir vis dar dažnai mums padeda.

Geras teksto klasifikatorius

Neturėdami laiko pailsėti nuo kovos su šiukšlėmis, supratome, kad 95% mūsų turinio yra moderuojama rankiniu būdu: klasifikatoriai reaguoja tik į pažeidimus, o dauguma tekstų yra geri. Kroviame valytojus, kurie 95 atvejais iš 100 suteikia įvertinimą „Viskas gerai“. Teko dirbti neįprastą darbą – kurti gero turinio klasifikatorius, laimei, per tą laiką buvo susikaupę antkainių.

Pirmasis klasifikatorius atrodė taip: tekstą lematizuojame (žodžius sumažiname iki pradinės formos), išmetame visas pagalbines kalbos dalis ir naudojame iš anksto paruoštą „gerųjų lemų žodyną“. Jei visi teksto žodžiai yra „geri“, tada visame tekste nėra jokių pažeidimų. Įvairiose paslaugose šis metodas iš karto leido nuo 25 iki 35% automatizuoti rankinį žymėjimą. Žinoma, toks požiūris nėra idealus: nesunku sujungti kelis nekaltus žodžius ir gauti labai įžeidžiantį teiginį, tačiau tai leido greitai pasiekti gerą automatizavimo lygį ir suteikė laiko apmokyti sudėtingesnius modelius.

Kitose gerų teksto klasifikatorių versijose jau buvo linijiniai modeliai, sprendimų medžiai ir jų deriniai. Pavyzdžiui, norėdami pažymėti grubumą ir įžeidimus, bandome BERT neuroninį tinklą. Svarbu suvokti žodžio reikšmę kontekste ir ryšį tarp žodžių iš skirtingų sakinių, o BERT tai atlieka gerai. (Beje, neseniai kolegos iš „News“. pasakojo, kaip technologija naudojama nestandartinei užduočiai – klaidų paieškai antraštėse.) Dėl to, priklausomai nuo paslaugos, buvo galima automatizuoti iki 90% srauto.

Tikslumas, išsamumas ir greitis

Norint vystytis, reikia suprasti, kokią naudą duoda tam tikri automatiniai klasifikatoriai, jų pokyčius ir ar neblogėja rankinių patikrų kokybė. Norėdami tai padaryti, naudojame tikslumo ir atšaukimo metriką.

Tikslumas – tai teisingų verdiktų dalis tarp visų nuosprendžių dėl netinkamo turinio. Kuo didesnis tikslumas, tuo mažiau klaidingų teigiamų rezultatų. Jei nekreipiate dėmesio į tikslumą, teoriškai galite ištrinti visą šlamštą ir nešvankybes, o kartu su jais ir pusę gerų pranešimų. Kita vertus, jei pasikliaujate tik tikslumu, geriausia technologija bus ta, kuri visiškai nieko nepagauna. Todėl yra ir išsamumo rodiklis: nustatyto blogo turinio dalis tarp bendros blogo turinio apimties. Šios dvi metrikos subalansuoja viena kitą.

Norėdami išmatuoti, atrenkame visą kiekvienos paslaugos gaunamą srautą ir pateikiame turinio pavyzdžius vertintojams, kad jie galėtų juos įvertinti ir palyginti su mašininiais sprendimais.

Tačiau yra dar vienas svarbus rodiklis.

Aukščiau rašiau, kad nepriimtiną žinutę šimtai žmonių gali pamatyti net per 5 minutes. Taigi skaičiuojame, kiek kartų rodėme žmonėms blogą turinį, kol jį paslėpėme. Tai svarbu, nes neužtenka dirbti efektyviai – reikia ir greitai. O kai susikūrėme gynybą nuo keiksmažodžių, tai jautėme iki galo.

Antimatizmas kačių ir šunų pavyzdžiu

Mažas lyrinis nukrypimas. Kai kas gali pasakyti, kad nepadorumas ir įžeidinėjimai nėra tokie pavojingi kaip kenkėjiškos nuorodos ir ne tokie erzina kaip šlamštas. Tačiau mes stengiamės išlaikyti patogias sąlygas bendrauti milijonams vartotojų, o žmonės nemėgsta grįžti į vietas, kur yra įžeidžiami. Ne veltui draudimas keiktis ir įžeidinėti yra numatytas daugelio bendruomenių taisyklėse, įskaitant Habré. Bet mes nukrypstame.

Keiksmingi žodynai negali susidoroti su visais rusų kalbos turtais. Nepaisant to, kad yra tik keturios pagrindinės keiksmažodžių šaknys, iš jų galite sudaryti daugybę žodžių, kurių negali sugauti jokie įprasti varikliai. Be to, dalį žodžio galima parašyti transliteracija, raides pakeisti panašiais deriniais, pertvarkyti raides, pridėti žvaigždutes ir pan. Kartais be konteksto iš esmės neįmanoma nustatyti, ar vartotojas turėjo omenyje keiksmažodį. Mes gerbiame Habro taisykles, todėl tai demonstruosime ne gyvais pavyzdžiais, o katėmis ir šunimis.

Kaip atidaryti komentarus ir nepaskęsti šlamšte

„Įstatymas“, - pasakė katė. Bet mes suprantame, kad katė pasakė kitą žodį...

Pradėjome galvoti apie „neaiškios atitikties“ algoritmus savo žodynui ir apie išmanesnį išankstinį apdorojimą: pateikėme transliteraciją, klijavome tarpus ir skyrybos ženklus, ieškojome šablonų ir ant jų rašėme atskiras reguliariąsias išraiškas. Šis metodas davė rezultatų, tačiau dažnai sumažino tikslumą ir nesuteikė norimo išsamumo.

Tada nusprendėme „mąstyti kaip keiksmažodžiai“. Patys pradėjome įvesti duomenis į triukšmą: pertvarkėme raides, generavome rašybos klaidas, keitėme raides panašia rašyba ir pan. Pradinis žymėjimas tam buvo paimtas pritaikant mat žodynus dideliems tekstų korpusams. Jei paimsite vieną sakinį ir pasuksite jį keliais būdais, gausite daug sakinių. Tokiu būdu treniruočių pavyzdį galite padidinti dešimtis kartų. Liko tik treniruotis gautame baseine kokį nors daugiau ar mažiau protingą modelį, kuris atsižvelgtų į kontekstą.

Kaip atidaryti komentarus ir nepaskęsti šlamšte

Apie galutinį sprendimą kalbėti dar anksti. Mes vis dar eksperimentuojame su šios problemos požiūriais, bet jau dabar matome, kad paprastas simbolinis kelių sluoksnių konvoliucinis tinklas ženkliai lenkia žodynus ir įprastus variklius: galima padidinti ir tikslumą, ir atmintį.

Žinoma, mes suprantame, kad visada bus būdų apeiti net pažangiausią automatiką, ypač kai reikalas toks pavojingas: rašykite taip, kad kvaila mašina nesuprastų. Čia, kaip ir kovojant su šiukšlėmis, mūsų tikslas nėra išnaikinti pačios galimybės parašyti ką nors nepadoraus, mūsų užduotis yra įsitikinti, kad žaidimas nėra vertas žvakės.

Atverti galimybę pasidalinti savo nuomone, bendrauti ir komentuoti nėra sunku. Daug sunkiau pasiekti saugias, patogias sąlygas ir pagarbų elgesį su žmonėmis. Ir be to nebus jokios bendruomenės vystymosi.

Šaltinis: www.habr.com

Добавить комментарий