Sådan åbner du for kommentarer uden at drukne i spam

Sådan åbner du for kommentarer uden at drukne i spam

Når dit arbejde er at skabe noget smukt, behøver du ikke nødvendigvis at forklare det, for resultatet ses af alle. Men hvis du sletter skriblerier fra hegn, bemærker ingen dit arbejde, medmindre hegnene ser ordentlige ud, eller du sletter noget uheldigt.

Enhver tjeneste, hvor man kan efterlade kommentarer, anmeldelser, sende beskeder eller uploade billeder, vil før eller siden støde på problemet med spam, svindel og obsceniteter. Det kan ikke undgås, men det skal bekæmpes.

Mit navn er Mikhail, og jeg arbejder i Anti-Spam-teamet, der beskytter brugerne af Yandex-tjenester mod sådanne problemer. Vores arbejde er sjældent synligt (og det er godt!), så i dag vil jeg fortælle mere om det. Du vil lære, hvornår moderering er nytteløs, og hvorfor nøjagtighed ikke er den eneste indikator for dens effektivitet. Vi skal også tale om bandeudsagn ved hjælp af eksempler fra katte og hunde, og hvorfor det i nogle tilfælde er nyttigt at 'tænke som en sviner'.

Der dukker flere og flere Yandex-tjenester op, hvor brugerne kan offentliggøre deres indhold. Man kan stille spørgsmål eller skrive svar i Yandex.Q, diskutere lokale nyheder i Yandex.Distriktet, eller dele trafikforhold i samtaler på Yandex.Kort. Men når publikummet vokser, bliver tjenesterne attraktive for svindlere og spammere. De dukker op og fylder kommentarer med tilbud om hurtig indtjening, reklamer for mirakelkurer og lovninger om sociale ydelser. På grund af spammere mister nogle brugere penge, mens andre mister lysten til at bruge tid på en forsømt tjeneste fyldt med spam.

Og det er ikke det eneste problem. Vi stræber efter ikke blot at beskytte brugerne mod svindlere, men også at skabe en behagelig atmosfære for kommunikation. Hvis folk i kommentarerne støder på bandeord og fornærmelser, vil de sandsynligvis forlade og aldrig komme tilbage. Det er også noget, vi skal være i stand til at bekæmpe.

Rent Web

Som det ofte sker hos os, opstod de første tiltag i Søgningen, i den del, der bekæmper spam i søgeresultaterne. For omkring ti år siden opstod der en opgave med at filtrere voksenindhold til familievenlig søgning og for forespørgsler, der ikke skulle indeholde svar fra 18+-kategorien. Det var her, de første, manuelt indtastede ordlister for pornografi og bandeord blev udviklet, og analytikere tilføjede dem. Hovedopgaven var klassificeringen af forespørgsler til dem, hvor det var acceptabelt at vise voksenindhold, og dem, hvor det ikke var. Til dette formål indsamlede man markup, byggede heuristikker og trænede modeller. Således opstod de første værktøjer til filtrering af uønsket indhold.

Med tiden begyndte UGC (brugergenereret indhold) at dukke op i Yandex - beskeder, som brugerne selv skrev, og Yandex offentliggjorde dem blot. Af de førnævnte grunde kunne mange beskeder ikke offentliggøres ukritisk - der krævedes moderation. Derfor blev det besluttet at lave en tjeneste, der kunne give beskyttelse mod spam og ondsindede aktører for alle Yandex' UGC-produkter og brugte de udviklede værktøjer til filtrering af uønsket indhold i Søgningen. Tjenesten blev kaldt "Rent Web".

Nye opgaver og hjælp fra tolokere

I starten havde vi kun enkel automation: tjenesterne sendte os tekster, og vi kørte dem gennem listerne over bandeord, pornografi og regulære udtryk - analytikere sammensatte alt manuelt. Men tjenesten blev over tid anvendt i et stigende antal Yandex-produkter, og vi måtte lære at håndtere nye problemer.

Ofte offentliggør brugerne meningsløse bogstavkombinationer i stedet for anmeldelser for at få opnået præstationer; nogle gange reklamerer de for deres virksomhed i anmeldelser om en konkurrents virksomhed, og nogle gange forveksler de blot organisationer, og skriver i en anmeldelse af et dyrebutik: "Fantastisk tilberedt fisk!". Måske vil kunstig intelligens en dag lære at opfange meningen af enhver tekst perfekt, men i øjeblikket klarer automatikken sig ofte dårligere end mennesker.

Det blev klart, at vi ikke kunne undgå manuel mærkning, og vi tilføjede et andet trin til vores flow - en menneskelig kontrol. Her kom de offentliggjorte tekster, som klassifikatoren ikke så problemer med. Omfanget af denne opgave kan du nemt forestille dig, så vi stolede ikke kun på bedømmerne, men udnyttede også "masserens visdom", det vil sige vi bad om hjælp fra folk, der kunne hjælpe os med at identificere det, maskinen havde overset, og dermed træne den.

Intelligent caching og LSH-hashing

En anden udfordring, vi stødte på i arbejdet med kommentarer, var spam, eller rettere sagt, mængden af det og hastigheden af spredningen. Da publikum på Yandex.Distriktet begyndte at vokse hurtigt, kom spammerne. De lærte at omgå regulære udtryk ved forsigtigt at ændre teksten. Spam blev selvfølgelig stadig fundet og fjernet, men i Yandex' målestok kunne en upassende besked, selv hvis den blev offentliggjort i kun 5 minutter, ses af hundrede personer.

Sådan åbner du for kommentarer uden at drukne i spam

Det tilfredsstillede os selvfølgelig ikke, og vi implementerede intelligent caching af tekster baseret på LSH (locality-sensitive hashing). Det fungerer således: vi normaliserede teksten, fjernede links fra den og delte den op i n-grammer (sekvenser af n bogstaver). Derefter beregnede vi hasher fra n-grammerne og byggede LSH-vektoren for dokumentet ud fra dem. Ideen er, at lignende tekster, selv efter små ændringer, blev til lignende vektorer.

Denne løsning gjorde det muligt at genbruge domme fra klassifikatorerne og bedømmerne for lignende tekster. Ved en spam-angreb, så snart den første besked bestod kontrol og kom i cachen med dommen "spam", fik alle nye lignende beskeder, selv de ændrede, den samme dom og blev automatisk fjernet. Senere lærte vi også at træne og automatisk genoptræne spam klassifikatorer, men denne "intelligente cache" er stadig med os og hjælper os ofte.

Klassifikatoren for gode tekster

Vi havde ikke engang tid til at tage en pause fra kampen mod spam, før vi indså, at 95 % af vores indhold modereres manuelt: klassifikatorer reagerer kun på overtrædelser, mens de fleste tekster er gode. Vi bruger tolker, som i 95 tilfælde ud af 100 bedømmer, at "alt er i orden". Vi måtte engagere os i en uvant opgave – at lave klassifikatorer for godt indhold, hvilket var heldigt, da vi i løbet af tiden har opbygget tilstrækkelig mærkning.

Den første klassifikator så således ud: vi lemmatiserer teksten (bringer ordene tilbage til deres grundform), fjerner alle funktionelle ord og anvender et forhåndsfremstillet "ordbog over gode lemmaer". Hvis alle ord i teksten er "gode", betyder det, at teksten som helhed ikke indeholder overtrædelser. På forskellige tjenester gav denne tilgang straks mellem 25 og 35 % automatisering af manuel mærkning. Selvfølgelig er denne tilgang ikke perfekt: det er ikke svært at kombinere flere harmløse ord og få en meget stødende udtalelse, men det gjorde det muligt for os hurtigt at nå et godt niveau af automatisering og gav tid til at træne mere komplekse modeller.

De næste versioner af klassifikatorerne for gode tekster indeholdt allerede både lineære modeller og beslutningstræer samt deres kombinationer. Til mærkning af grovheder og fornærmelser prøver vi for eksempel neurale netværk BERT. Her er det vigtigt at opfange betydningen af ordet i konteksten og forbindelsen mellem ord fra forskellige sætninger, og BERT klarer sig ganske godt med dette. (Forresten, for nylig meddelte kollegerne fra Nyhederne, fortalt, hvordan de anvender teknologien til en usædvanlig opgave – at finde fejl i overskrifter.) I sidste ende lykkedes det at automatisere op til 90 % af flowet afhængigt af tjenesten.

Nøjagtighed, komplethed og hastighed

For at udvikle sig er det nødvendigt at forstå, hvilken værdi de forskellige automatiske klassifikatorer, ændringer i dem, samt kvaliteten af manuelle kontroller giver. Til dette bruger vi nøjagtigheds- og fuldkommenhedsmål.

Præcision er andelen af korrekte vurderinger blandt alle vurderinger af dårligt indhold. Jo højere præcision, jo færre falske positiver. Hvis man ikke følger op på præcisionen, kan man i teorien fjerne al spam og bandeord, men også halvdelen af godt indhold. På den anden side, hvis man kun stoler på præcision, vil den bedste teknologi være den, der slet ikke fanget nogen. Derfor er der også et mål for fuldstændighed: andelen af identificeret dårligt indhold blandt alt dårligt indhold. Disse to metrikker balanserer hinanden.

For at måle dette samplede vi hele strømmen af indhold fra hver service og gav prøverne til bedømmerne til ekspertvurdering og sammenligning med maskinernes beslutninger.

Men der er en anden vigtig måling.

Som jeg nævnte, kan et uacceptablet budskab blive set af hundreder af mennesker på bare 5 minutter. Derfor tæller vi, hvor mange gange vi har haft mulighed for at vise folk dårligt indhold, før vi skjulte det. Dette er vigtigt, fordi det ikke er nok at arbejde kvalitativt - man skal også arbejde hurtigt. Og da vi byggede beskyttelse mod bandeord, mærkede vi dette fuldt ud.

Antibandeord ved hjælp af katte og hunde

Lidt en lyrisk afvigelse. Nogen kan sige, at bandeord og fornærmelser ikke er så farlige som ondsindede links, og ikke er så irriterende som spam. Men vi stræber efter at opretholde behagelige vilkår for kommunikationen mellem millioner af brugere, og folk kan ikke lide at vende tilbage til steder, hvor de bliver fornærmet. Der er ikke for ingenting, at forbuddet mod bandeord og fornærmelser er nedskrevet i reglerne for mange fællesskaber, herunder på Habr. Men vi gik væk fra emnet.

Bandeordslister har ikke kapacitet til at håndtere det rige russiske sprog. Selvom der kun er fire grundlæggende bandeord, kan man danne utallige ord, som du ikke kan fange med nogen regulære udtryk. Desuden kan man skrive en del af ordet med translitteration, erstatte bogstaver med lignende kombinationer, omrokere bogstaver, tilføje stjerner osv. Nogle gange kan det slet ikke bestemmes, hvad brugeren mente med et bandeord uden kontekst. Vi respekterer reglerne på Habr, så vi vil demonstrere dette ikke med virkelige eksempler, men med katte og hunde.

Sådan åbner du for kommentarer uden at drukne i spam

«Miau», sagde katten. Men vi forstår, at katten sagde et andet ord...

Vi begyndte at overveje algoritmer til 'uskarpt matching' af vores ordforråd og en mere intelligent forbehandling: vi omformede translitterationer, samlede mellemrum og tegnsætning, søgte efter mønstre og skrev separate regulære udtryk for dem. Denne tilgang gav resultater, men sænkede ofte nøjagtigheden, hvilket gjorde, at vi ikke fik den ønskede fuldstændighed.

Derfor besluttede vi at 'tænke som bandeordere'. Vi begyndte selv at tilføje støj til dataene: vi rearrangerede bogstaver, genererede tastefejl, erstattede bogstaver med lignende i skrivemåde og så videre. Den indledende markering tog vi fra at anvende bandeordsordbøger på store tekstmænger. Hvis man tager en sætning og forvrænger den på flere måder, får man allerede mange sætninger. Sådan kan man øge træningsdatasættet mange gange. Det eneste, der var tilbage, var at træne en nogenlunde intelligent model, der tager konteksten i betragtning på den resulterende pulje.

Sådan åbner du for kommentarer uden at drukne i spam

Det er for tidligt at tale om den endelige løsning. Vi eksperimenterer stadig med tilgange til dette problem, men ser allerede, at en simpel symbolsk konvolutionsnetværk bestående af flere lag betydeligt overgår ordbøger og regulære udtryk: det er muligt at øge både nøjagtigheden og fuldstændigheden.

Selvfølgelig forstår vi, at der altid vil være måder at omgå selv den mest avancerede automatisering, især når det er så underholdende: at skrive på en måde, så en dum maskine ikke forstår. Her, ligesom i kampen mod spam, er vores mål ikke at udrydde muligheden for at skrive noget ukrænkeligt, men at sikre, at spillet ikke er værd at spille.

At åbne op for muligheden for at dele sin mening, kommunikere og kommentere er ikke svært. Det er meget sværere at opnå sikre, komfortable forhold og respekt for mennesker. Og uden dette vil der ikke være nogen udvikling af nogen fællesskab.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster