Kuidas avada kommentaarid ja mitte spÀmmi uppuda

Kuidas avada kommentaarid ja mitte spÀmmi uppuda

Kui sinu tööks on midagi kaunist luua, siis ei olegi sellest vÀga palju rÀÀkida, sest tulemus on kÔigile silme ees. Kui aga sa kustutad kirju aedadelt, siis ei pane keegi su tööd tÀhele, kuni aiad nÀevad head vÀlja vÔi kuni sa ei kustuta midagi vale.

Igasugune teenus, kus saab jĂ€tta kommentaare, arvustusi, saata sĂ”numeid vĂ”i laadida ĂŒles pilte, satub varem vĂ”i hiljem rĂŒnnakute, petmise ja roppuste probleemide ette. Seda ei saa vĂ€ltida, kuid sellega tuleb vĂ”idelda.

Minu nimi on Mihhail, ma töötan Antispami meeskonnas, mis kaitseb Yandexi teenuste kasutajaid selliste probleemide eest. Meie töö on harva nÀhtav (ja hÀsti!), seega tÀna rÀÀgin sellest rohkem. Sa saad teada, millal on modereerimine kasutu ja miks tÀpsus ei ole ainus selle efektiivsuse mÔÔdik. Samuti rÀÀgime roppusest kasside ja koerte nÀitel ja sellest, miks on vahel kasulik "mÔelda nagu roppuse rÀÀkija".

Yandexis tekib jĂ€rjest rohkem teenuseid, kus kasutajad avaldavad oma sisu. Sa saad esitada kĂŒsimuse vĂ”i kirjutada vastuse Yandex.Q-s, arutada Ă”ue uudiseid Yandex.Kvartalis, jagada liiklusolusid Yandex.Mapides. Aga kui teenuse publik kasvab, muutub see petturite ja rĂ€mpspostitajate jaoks atraktiivseks. Nad tulevad ja tĂ€idavad kommentaarid: pakuvad kerget teenimist, reklaamivad imelikke vahendeid ja lubavad sotsiaalseid toetusi. RĂ€mpspostitajate tĂ”ttu kaotavad mĂ”ned kasutajad raha, teised aga soovi veeta aega hoolitsemata, rĂ€mpsuga kaetud teenuses.

Ja see ei ole ainus probleem. Me pĂŒĂŒame mitte ainult kaitsta kasutajaid petturite eest, vaid ka luua mugava suhtluskeskkonna. Kui inimesed kommentaarides puutuvad kokku roppuse ja solvangutega, on tĂ”enĂ€oliselt nad lahkumas ja ei tule enam tagasi. Seega tuleb ka sellega osata vĂ”idelda.

Puhtaid Veeb

Kuidas see meil tihti juhtub, sĂŒndisid esimesed arengud Otsingus, osas, mis vĂ”itleb rĂ€mpsposti vastu tulemuses. Umbes kĂŒmme aastat tagasi tekkis seal tĂ€iskasvanud sisu filtreerimise ĂŒlesanne peresĂ”bralikuks otsimiseks ja pĂ€ringuteks, mis ei eelda vastuseid kategooriast 18+. Nii tekkisid esimesed kĂ€sitsi koostatud porno ja roppuse sĂ”nastikud, mida tĂ€iendati analĂŒĂŒtikute poolt. Peamine ĂŒlesanne oli klassifitseerida pĂ€ringud nende vahel, kus tĂ€iskasvanud sisu on lubatud ja kus mitte. Selle ĂŒlesande tĂ€itmiseks koguti mĂ€rgendus, ehitati heuristikad ja treeniti mudeleid. Nii tekkisid esimesed arendused soovimatute sisu filtreerimiseks.

Aja jooksul hakkas Yandexis ilmuma UGC (kasutajate genereeritud sisu) — sĂ”numid, mida kirjutavad kasutajad ise, ja Yandex lihtsalt avaldab need. Ülaltoodud pĂ”hjustel ei olnud paljusid sĂ”numeid vĂ”imalik publitseerida niisama — nĂ”uti modereerimist. Siis otsustati luua teenus, mis pakuks kaitset rĂ€mpsposti ja pahategijate eest kĂ”igi Yandexi UGC-toodete jaoks ja kasutaks arendusi soovimatu sisu filtreerimiseks Otsingus. Teenus nimetati "Puhtaks Veebiks".

Uued ĂŒlesanded ja abiliste abi

Esialgu töötas meil vaid lihtne automaatika: teenused saatsid meile tekstid ning me jooksutasime neile lĂ€bi roppuse sĂ”nastikud, pornograafia sĂ”nastikud ja regulaaravaldised — analĂŒĂŒtikud koostasid kĂ”ik kĂ€sitsi. Kuid teenust hakati aja jooksul rakendama ĂŒha rohkemates Yandexi toodetes ja me pidime Ă”ppima, kuidas uute probleemidega toime tulla.

Tihti avaldavad kasutajad arvustuse asemel mĂ”ttetut tĂ€htede kogumit, pĂŒĂŒdes endale saavutusi tĂ”sta, mĂ”nikord reklaamivad nad oma ettevĂ”tet konkurendi arvustustes, ja mĂ”nikord lihtsalt segavad organisatsioone, kirjutades nĂ€iteks lemmikloomapoest: „Kenas valmistatud kala!”. VĂ”ib-olla Ă”pib kunagi tehisintellekt ideaalset mĂ”istma iga teksti, kuid praegu suudab automaatika vahel inimestest halvemini hakkama saada.

Selge on, et kĂ€sitsi mĂ€rgendamiseta ei saa siin hakkama, ja nii lisasime meie sĂŒsteemile teise astme — saatmine inimeste kĂ€sitsi kontrollimiseks. Siia kuulusid need avaldatud tekstid, mille kohta klassifikaator probleeme ei tuvastanud. Sellise ĂŒlesande mastaape vĂ”ib kergesti ette kujutada, seetĂ”ttu ei lasknud me end ainult hindajatest aidata, vaid kasutasime ka "rahva tarkust", s.o. pöördusime appi tolooker'ite poole. Just nemad aitavad meil tuvastada seda, mida masin on tĂ€helepanuta jĂ€tnud, ja selle kaudu koolitavad meid.

Nutikas vahemÀlu ja LSH-hashing

Veel ĂŒks probleem, millega me kommentaaride töötlemisel silmitsi seisisime, oli rĂ€mpspost, tĂ€psemalt selle maht ja leviku kiirus. Kui Yandex.Regioni publik kiiresti kasvas, ilmusid sinna spĂ€mmerid. Nad Ă”ppisid vĂ€ltima regulaatorite kontrolli, kergelt muutes teksti. RĂ€mpsposti leidsime ja kĂ”rvaldasime loomulikult, kuid Yandexi ulatuses vĂ”is isegi viie minuti jooksul avaldatud sobimatu sĂ”numit nĂ€ha sadu inimesi.

Kuidas avada kommentaarid ja mitte spÀmmi uppuda

See, muidugi, ei rahuldanud meid, ja me rakendasime nutikat teksti vahemÀlu pÔhjal LSH (locality-sensitive hashing). See the process works like this: we normalized the text, removing links and segmenting it into n-grams (sequences of n letters). Next, we computed hashes from the n-grams, which were then used to construct the document's LSH vector. The idea is that similar texts, even with slight modifications, would transform into similar vectors.

This solution allowed us to reuse classifiers' and moderators' verdicts for similar texts. In a spam attack, once the first message passed the check and was cached with a verdict of 'spam,' all new similar messages, even if modified, received the same verdict and were automatically deleted. Later, we learned to train and automatically retrain spam classifiers, but this 'smart cache' has remained with us and still helps us frequently.

Classifier of good texts

Kahe tuleb vĂ”itlemisest spĂ€mmi vastu, olime tĂ€heldanud, et 95% meie sisust modereeritakse kĂ€sitsi: klassifikaatorid reageerivad ainult rikkumistele ja enamus tekstidest on head. Koormatame tolokaatoreid, kes 95 juhul 100-st annavad hinnangu „KĂ”ik OK“. Pidi hakkama tegelema harjumatute töödega — looma hea sisu klassifikaatoreid, Ă”nneks on selle ajaga piisavalt mĂ€rgistusi kogunenud.

Esimene klassifikaator nĂ€gi vĂ€lja selline: lemmatiseerime teksti (toome sĂ”nad algvormi), viskame vĂ€lja kĂ”ik teenindavad osakesed ja rakendame ettevalmistatud „head lammutuse sĂ”nastikku“. Kui tekstis on kĂ”ik sĂ”nad „head“, siis ei sisalda kogu tekst rikkumisi. Erinevates teenustes tĂ”i selline lĂ€henemine kohe 25%-35% seadistusautomaatikast. Loomulikult ei ole selline lĂ€henemine ideaalne: ei ole raske kombineerida mitut sĂŒĂŒtut sĂ”na ja saada vĂ€ga solvav vĂ€ljend, kuid see lubas meil kiiresti jĂ”uda heale automatiseerimise tasemele ja andis aega keerukamate mudelite Ă”petamiseks.

JĂ€rgmised heade tekstide klassifikaatorite versioonid on juba sisaldanud nii lineaare kui ka otsustuspuid ning nende kombinatsioone. NĂ€iteks proovime ebaviisakuste ja solvangute mĂ€rgistamiseks kasutada BERT nĂ€rvivĂ”rku. Siin on oluline mĂ”ista sĂ”na tĂ€hendust kontekstis ja sĂ”nade vahelist seost erinevates lausetes, millega BERT hĂ€sti toime tuleb. (Muide, hiljuti rÀÀgivad kolleegid uudistes olen rÀÀkinud, kuidas tehnoloogiat kasutatakse ebatavalise ĂŒlesande, nĂ€iteks pealkirjade vigade leidmise jaoks.) LĂ”puks Ă”nnestus automatiseerida kuni 90% voost, sĂ”ltuvalt teenusest.

TÀpsus, tÀielikkus ja kiirus

Kuna edasi liikuda, tuleb mÔista, millist kasu toovad erinevad automaatsed klassifikaatorid, muudatused neis, samuti see, kas kÀsitsi kontrollide kvaliteet ei halvene. Selle jaoks kasutame tÀpsuse ja tÀielikkuse nÀitajaid.

TĂ€psus on vale otsuste osakaal kĂ”igi halva sisu otsuste seas. Mida kĂ”rgem on tĂ€psus, seda vĂ€hem valehĂ€ireid esineb. Kui tĂ€psust tĂ€helepanuta jĂ€tta, on teoreetiliselt vĂ”imalik eemaldada kogu rĂ€mps ja roppus, vĂ”ttes samaaegselt kaasa pool headest sĂ”numitest. Teisest kĂŒljest, kui toetuda ainult tĂ€psusele, on parim tehnoloogia see, mis mitte kedagi ei tuvasta. SeetĂ”ttu on olemas ka katvuse nĂ€itaja: halva sisu osakaal tuvastatud halva sisu kogumahu seas. Need kaks mÔÔdikut tasakaalustavad ĂŒksteist.

Kasutamiseks mÔÔdame iga teenuse kogu sisendvoogu ja anname sisuproovid ekspertidele hindamiseks, et vÔrrelda masinlahendustega.

Kuid on veel ĂŒks oluline nĂ€itaja.

Olen varem maininud, et mitteaktsepteeritavat sĂ”numit vĂ”ivad 5 minutiga nĂ€ha sajad inimesed. SeetĂ”ttu arvestame, mitu korda oleme halba sisu inimestele nĂ€idanud, enne kui selle peidame. See on oluline, sest pole piisav töötada kvaliteetselt — tuleb töötada ka kiiresti. Kui ehitasime roppuse kaitset, tajusime seda tĂ€ielikult.

Roppuse vastane nÀide kassidest ja koertest

LĂŒhike luuleline kĂ”rvalepĂ”ige. Keegi vĂ”ib öelda, et roppused ja solvangud ei ole nii ohtlikud kui pahatahtlikud lingid ja ei ole nii hĂ€irivad kui rĂ€mpspost. Kuid meie eesmĂ€rk on sĂ€ilitada mugavad suhtlemistingimused miljonite kasutajate jaoks, ning inimesed ei taha naasta kohtadesse, kus neid solvatakse. Pole tĂ€htis, et roppuste ja solvangute keelamine on kirjas paljude kogukondade reeglites, sealhulgas ka Habr's. Aga las ma ei kaldun kĂ”rvale.

Roomikeelne sĂ”nastik ei suuda hallata kogu vene keele rikkust. Kuigi on vaid neli pĂ”hijoont, saab neist moodustada tohutu hulga sĂ”nu, millega ei saa mingite regulaarsete vĂ€ljenditega hakkama. Lisaks saab sĂ”nu osaliselt kirjutada transkriptsioonina, asendada tĂ€hti sarnaste kombinatsioonide vĂ”i sĂŒmbolitega, ĂŒmber paigutada tĂ€hti, lisada tĂ€hiseid jne. MĂ”nikord ei saa konteksti puudumisel ĂŒldse mÀÀrata, mida kasutaja roppuses mĂ”tles. Austame Habr reegleid, seetĂ”ttu demonstreerime seda mitte elusate nĂ€idete, vaid kasside ja koerte abil.

Kuidas avada kommentaarid ja mitte spÀmmi uppuda

"Miau," ĂŒtles kass. Kuid me mĂ”istame, et kass ĂŒtles midagi muud...

Oleme hakanud mĂ”tlema meie sĂ”nastiku "hĂ€guse sobitamise" algoritmide ja nutikama eeltöötluse peale: viisime lĂ€bi transliteratsiooni, liitsime tĂŒhikud ja punctuation, otsisime mustreid ning kirjutasime nendele eraldi regulaaravaldisi. Selline lĂ€henemine andis tulemusi, kuid sageli vĂ€hendas see tĂ€psust, jĂ€ttes soovitud tĂ€ielikkuse saavuttamata.

Siis otsustasime "mĂ”elda nagu roppused". Me hakkasime ise andmetesse mĂŒra lisama: liigutades tĂ€hti, genereerides trĂŒkivigu, asendades tĂ€hed sarnastega jne. Algset mĂ€rgistust saime, rakendades roppuste sĂ”nastikke suurtele tekstikorpusitele. Kui vĂ”tta ĂŒks lause ja vÀÀrata seda mitmel moel, saab juba palju lauseid. Sellise lĂ€henemisega saab treeningu valimi kasvatada kĂŒmneid kordi. JÀÀkis vaid Ă”petada sellel saagil mingit korralikku mudelit, arvesse vĂ”ttes konteksti.

Kuidas avada kommentaarid ja mitte spÀmmi uppuda

LĂ”pliku lahenduse kohta on veel vara rÀÀkida. Katsetame endiselt lĂ€henemisi selle probleemi lahendamiseks, kuid nĂ€eme juba, et lihtne mĂ€rkide konvolutsioonivĂ”rk mitmest kihist ĂŒletab selgelt sĂ”nastikke ja regulaaravaldise: tulemuseks on nii tĂ€psuse kui tĂ€ielikkuse suurenemine.

Muidugi mĂ”istame, et alati leidub viise isegi kĂ”ige arenenuma automaatika ĂŒletamiseks, eriti kui mĂ€ng on nii kaasahaarav: kirjutada nii, et rumal masin ei mĂ”istaks. Siin, nagu ka rĂŒnnakute tĂ”rjumisel, ei ole meie eesmĂ€rk hĂ€vitada vĂ”imalust kirjutada midagi sobimatut, vaid teha nii, et mĂ€ng ei oleks vaeva vÀÀrt.

Oma arvamuse jagamine, suhtlemine ja kommenteerimine on lihtne. Kaugemale, turvaliste, mugavate tingimuste ja austava suhtumise saavutamine on palju keerulisem. Ilma selleta ei saa ĂŒkski kogukond areneda.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster