Kako otvoriti komentare i ne utopiti se u spamu

Kako otvoriti komentare i ne utopiti se u spamu

Kada je vaš posao stvoriti nešto lijepo, ne morate previše pričati o tome, jer rezultat je svima pred očima. Ali ako izbrišete natpise s ograda, nitko neće primijetiti vaš rad sve dok ograde izgledaju pristojno ili dok ne obrišete nešto krivo.

Svaki servis na kojem možete ostaviti komentar, recenziju, poslati poruku ili uploadati slike prije ili kasnije se suoči s problemom spama, prijevare i opscenosti. To se ne može izbjeći, ali se mora riješiti.

Moje ime je Mikhail, radim u Antispam timu koji štiti korisnike Yandexovih usluga od takvih problema. Naš rad je rijetko primijećen (i to je dobro!), pa ću vam danas reći nešto više o tome. Saznat ćete kada je umjerenost beskorisna i zašto točnost nije jedini pokazatelj njezine učinkovitosti. Razgovarat ćemo i o psovanju na primjeru mačaka i pasa te zašto je ponekad korisno “razmišljati kao psovac”.

U Yandexu se pojavljuje sve više usluga na kojima korisnici objavljuju svoje sadržaje. Možete postaviti pitanje ili napisati odgovor u Yandex.Q, razgovarati o novostima u dvorištu u Yandex.Districtu, podijeliti stanje u prometu u razgovorima na Yandex.Maps. Ali kada publika usluge raste, ona postaje privlačna prevarantima i pošiljateljima neželjene pošte. Dođu i ispune komentare: nude laku zaradu, reklamiraju čudotvorne lijekove i obećavaju socijalna davanja. Zbog spamera neki korisnici gube novac, dok drugi gube želju za trošenjem vremena na neurednom servisu obraslom spamom.

I to nije jedini problem. Nastojimo ne samo zaštititi korisnike od prevaranata, već i stvoriti ugodnu atmosferu za komunikaciju. Ako se ljudi suoče s psovkama i uvredama u komentarima, vjerojatno će otići i više se neće vratiti. To znači da se i s tim morate znati nositi.

Čisti web

Kao što to kod nas često biva, prvi pomaci su rođeni u Searchu, u dijelu koji se bori protiv spama u rezultatima pretraživanja. Prije desetak godina tamo se pojavio zadatak filtriranja sadržaja za odrasle za obiteljske pretrage i za upite koji ne zahtijevaju odgovore iz kategorije 18+. Tako su se pojavili prvi ručno tipkani rječnici pornografije i psovki koje su nadopunjavali analitičari. Glavni zadatak bio je klasificirati zahtjeve na one gdje je prihvatljivo prikazivati ​​sadržaj za odrasle, a gdje nije. Za ovaj zadatak prikupljene su oznake, izgrađene su heuristike i uvježbani su modeli. Tako su se pojavili prvi razvojni programi za filtriranje neželjenog sadržaja.

S vremenom se u Yandexu počeo pojavljivati ​​UGC (korisnički generirani sadržaj) - poruke koje pišu sami korisnici, a Yandex samo objavljuje. Zbog gore opisanih razloga, mnoge poruke nisu mogle biti objavljene bez pregledavanja - bila je potrebna moderacija. Zatim su odlučili stvoriti uslugu koja će pružiti zaštitu od neželjene pošte i napadača za sve Yandex UGC proizvode i koristiti razvoj za filtriranje neželjenog sadržaja u Pretraživanju. Usluga je nazvana “Clean Web”.

Novi zadaci i pomoć gurača

U početku nam je radila samo jednostavna automatizacija: servisi su nam slali tekstove, a mi smo na njima pokretali rječnike opscenosti, pornografske rječnike i regularne izraze - analitičari su sve sastavljali ručno. No s vremenom se usluga koristila u sve većem broju proizvoda Yandexa i morali smo naučiti raditi s novim problemima.

Često, umjesto recenzije, korisnici objavljuju besmislene skupove pisama, pokušavajući povećati svoja postignuća, ponekad reklamiraju svoju tvrtku u recenzijama konkurentske tvrtke, a ponekad jednostavno zbunjuju organizacije i pišu u recenziji o trgovini za kućne ljubimce: “ Savršeno pečena riba!” Možda će jednog dana umjetna inteligencija naučiti savršeno shvatiti značenje bilo kojeg teksta, ali sada se automatizacija ponekad nosi lošije od ljudi.

Postalo je jasno da to ne možemo učiniti bez ručnog označavanja i dodali smo drugi stupanj našem krugu - poslali smo ga na ručnu inspekciju od strane osobe. Tu su uvršteni oni objavljeni tekstovi za koje klasifikator nije vidio probleme. Lako možete zamisliti razmjere takvog zadatka, pa se nismo oslanjali samo na procjenitelje, već smo iskoristili i “mudrost gomile”, odnosno obratili smo se za pomoć tolokerima. Oni su ti koji nam pomažu identificirati što je stroj propustio i time ga podučavaju.

Pametno predmemoriranje i LSH raspršivanje

Još jedan problem s kojim smo se susreli u radu s komentarima je spam, točnije njegova količina i brzina širenja. Kada je publika Yandex.Region počela brzo rasti, spameri su došli tamo. Naučili su zaobići regularne izraze neznatnim mijenjanjem teksta. Spam je, naravno, i dalje pronađen i izbrisan, ali na ljestvici Yandexa, neprihvatljivu poruku objavljenu čak i na 5 minuta moglo je vidjeti stotine ljudi.

Kako otvoriti komentare i ne utopiti se u spamu

Naravno, to nam nije odgovaralo i napravili smo pametno predmemoriranje teksta temeljeno na LSH (hashiranje osjetljivo na lokalitet). Radi ovako: normalizirali smo tekst, uklonili linkove iz njega i izrezali ga na n-grame (nizove od n slova). Zatim su izračunati hashovi n-grama i iz njih je izgrađen LSH vektor dokumenta. Stvar je u tome da su se slični tekstovi, čak i neznatno izmijenjeni, pretvorili u slične vektore.

Ovo rješenje omogućilo je ponovno korištenje presuda klasifikatora i tolokera za slične tekstove. Tijekom spam napada, čim je prva poruka prošla skeniranje i ušla u predmemoriju s presudom "spam", sve nove slične poruke, čak i one izmijenjene, dobile su istu presudu i automatski su izbrisane. Kasnije smo naučili kako trenirati i automatski ponovno obučavati klasifikatore neželjene pošte, ali ovaj "pametni cache" ostao je s nama i još uvijek nam često pomaže.

Dobar klasifikator teksta

Bez vremena za odmor od borbe protiv spama, shvatili smo da se 95% našeg sadržaja moderira ručno: klasifikatori reagiraju samo na kršenja, a većina tekstova je dobra. Utovarujemo čistačice koje u 95 slučajeva od 100 daju ocjenu “Sve je u redu”. Morao sam obaviti neobičan posao - napraviti klasifikatore dobrog sadržaja, srećom, za to vrijeme nakupilo se dovoljno markupa.

Prvi klasifikator izgledao je ovako: lematiziramo tekst (svodimo riječi na početni oblik), izbacujemo sve pomoćne dijelove govora i koristimo unaprijed pripremljeni “rječnik dobrih lema”. Ako su sve riječi u tekstu "dobre", tada cijeli tekst ne sadrži nikakva kršenja. Na različitim uslugama ovaj je pristup odmah dao od 25 do 35% automatizacije ručnog označavanja. Naravno, ovaj pristup nije idealan: lako je kombinirati nekoliko nevinih riječi i dobiti vrlo uvredljivu izjavu, ali omogućio nam je da brzo postignemo dobru razinu automatizacije i dao nam je vremena za treniranje složenijih modela.

Sljedeće verzije dobrih tekstualnih klasifikatora već su uključivale linearne modele, stabla odlučivanja i njihove kombinacije. Za označavanje nepristojnosti i uvreda, na primjer, isprobavamo neuronsku mrežu BERT. Važno je shvatiti značenje riječi u kontekstu i vezu između riječi iz različitih rečenica, a BERT u tome dobro radi. (Usput, nedavno su kolege iz Vijesti rekao, kako se tehnologija koristi za nestandardni zadatak - pronalaženje pogrešaka u zaglavljima.) Kao rezultat toga, bilo je moguće automatizirati do 90% toka, ovisno o usluzi.

Točnost, potpunost i brzina

Da biste se razvili, morate razumjeti koje prednosti donose određeni automatski klasifikatori, promjene u njima i je li kvaliteta ručnih provjera degradirajuća. Da bismo to učinili, koristimo metriku preciznosti i prisjećanja.

Točnost je udio točnih presuda među svim presudama o lošem sadržaju. Što je veća točnost, to je manje lažno pozitivnih rezultata. Ako ne obratite pažnju na točnost, onda u teoriji možete izbrisati svu neželjenu poštu i opscenosti, a zajedno s njima i polovicu dobrih poruka. S druge strane, ako se oslanjate samo na točnost, onda će najbolja tehnologija biti ona koja uopće nikoga ne uhvati. Dakle, postoji i pokazatelj potpunosti: udio identificiranog lošeg sadržaja u ukupnoj količini lošeg sadržaja. Ove dvije metrike uravnotežuju jedna drugu.

Za mjerenje uzorkujemo cijeli dolazni tok za svaku uslugu i dajemo uzorke sadržaja procjeniteljima za stručnu procjenu i usporedbu sa strojnim rješenjima.

Ali postoji još jedan važan pokazatelj.

Gore sam napisao da neprihvatljivu poruku mogu vidjeti stotine ljudi čak iu 5 minuta. Stoga brojimo koliko smo puta ljudima pokazali loš sadržaj prije nego što smo ga sakrili. Ovo je važno jer nije dovoljno raditi učinkovito – morate raditi i brzo. A kada smo izgradili obranu od psovki, osjetili smo to u potpunosti.

Antimatizam na primjeru mačaka i pasa

Mala lirska digresija. Neki bi mogli reći da opscenost i uvrede nisu toliko opasni kao zlonamjerne veze, niti tako neugodni kao neželjena pošta. Ali nastojimo održati ugodne uvjete za komunikaciju za milijune korisnika, a ljudi se ne vole vraćati na mjesta gdje ih vrijeđaju. Nije uzalud zabrana psovanja i uvreda navedena u pravilima mnogih zajednica, pa tako i na Habréu. Ali skrenuli smo.

Rječnici psovki ne mogu se nositi sa svim bogatstvom ruskog jezika. Unatoč činjenici da postoje samo četiri glavna korijena psovke, od njih možete sastaviti bezbroj riječi koje ne mogu uhvatiti niti jedan obični motor. Osim toga, možete napisati dio riječi u transliteraciji, zamijeniti slova sličnim kombinacijama, preurediti slova, dodati zvjezdice itd. Ponekad je bez konteksta praktično nemoguće utvrditi da je korisnik mislio na psovku. Poštujemo Habrova pravila, pa ćemo to pokazati ne na živim primjerima, već na mačkama i psima.

Kako otvoriti komentare i ne utopiti se u spamu

"Zakon", rekla je mačka. Ali razumijemo da je mačka rekla drugu riječ...

Počeli smo razmišljati o algoritmima za "nejasno podudaranje" za naš rječnik i o pametnijoj prethodnoj obradi: osigurali smo transliteraciju, zalijepili razmake i interpunkcijske znakove zajedno, tražili uzorke i napisali zasebne regularne izraze na njih. Ovakav pristup je donosio rezultate, ali je često smanjivao točnost i nije davao željenu cjelovitost.

Onda smo odlučili “razmišljati kao psovci”. Sami smo počeli unositi šum u podatke: preuređivali smo slova, generirali pogreške pri upisu, zamijenili slova sličnim načinima pisanja i tako dalje. Početna oznaka za to je uzeta primjenom mat rječnika na velike korpuse tekstova. Ako uzmete jednu rečenicu i izvrćete je na nekoliko načina, na kraju ćete dobiti mnogo rečenica. Na taj način možete povećati uzorak obuke desetke puta. Preostalo je samo uvježbati na dobivenom bazenu neki koliko-toliko pametan model koji je uzimao u obzir kontekst.

Kako otvoriti komentare i ne utopiti se u spamu

O konačnoj odluci još je rano govoriti. Još uvijek eksperimentiramo s pristupima ovom problemu, ali već možemo vidjeti da jednostavna simbolička konvolucijska mreža od nekoliko slojeva značajno nadmašuje rječnike i obične mehanizme: moguće je povećati i točnost i pamćenje.

Naravno, razumijemo da će uvijek biti načina da se zaobiđe i najnaprednija automatizacija, pogotovo kada je stvar toliko opasna: pišite tako da glupi stroj neće razumjeti. Ovdje, kao iu borbi protiv neželjene pošte, naš cilj nije iskorijeniti samu mogućnost da napišete nešto nepristojno, naš zadatak je osigurati da igra nije vrijedna svijeće.

Otvaranje prilike za dijeljenje mišljenja, komunikaciju i komentiranje nije teško. Puno je teže postići sigurne, ugodne uvjete i poštivanje ljudi. A bez toga nema razvoja niti jedne zajednice.

Izvor: www.habr.com

Dodajte komentar