Sådan åbner du kommentarer og ikke drukner i spam

Sådan åbner du kommentarer og ikke drukner i spam

Når dit job er at skabe noget smukt, behøver du ikke tale for meget om det, for resultatet er for alles øjne. Men hvis du sletter inskriptioner fra hegn, vil ingen bemærke dit arbejde, så længe hegnene ser anstændige ud, eller indtil du sletter noget forkert.

Enhver tjeneste, hvor du kan efterlade en kommentar, anmelde, sende en besked eller uploade billeder, står før eller siden over for problemet med spam, bedrageri og uanstændighed. Dette kan ikke undgås, men det skal håndteres.

Mit navn er Mikhail, jeg arbejder på Antispam-teamet, som beskytter brugere af Yandex-tjenester mod sådanne problemer. Vores arbejde bliver sjældent bemærket (og det er en god ting!), så i dag vil jeg fortælle dig mere om det. Du vil lære, hvornår mådehold er nytteløst, og hvorfor nøjagtighed ikke er den eneste indikator for dens effektivitet. Vi vil også tale om bande ved at bruge eksemplet med katte og hunde, og hvorfor det nogle gange er nyttigt at "tænke som en bande".

Flere og flere tjenester dukker op i Yandex, hvor brugerne udgiver deres indhold. Du kan stille et spørgsmål eller skrive et svar i Yandex.Q, diskutere værftsnyheder i Yandex.District, dele trafikforhold i samtaler på Yandex.Maps. Men når tjenestens publikum vokser, bliver det attraktivt for svindlere og spammere. De kommer og udfylder kommentarer: de tilbyder nemme penge, annoncerer mirakelkure og lover sociale fordele. På grund af spammere mister nogle brugere penge, mens andre mister lysten til at bruge tid på en usoigneret tjeneste, der er overgroet med spam.

Og dette er ikke det eneste problem. Vi bestræber os ikke kun på at beskytte brugere mod svindlere, men også at skabe en behagelig atmosfære for kommunikation. Hvis folk bliver konfronteret med bandeord og fornærmelser i kommentarerne, vil de sandsynligvis gå og aldrig vende tilbage. Det betyder, at du også skal kunne håndtere dette.

Rent web

Som det ofte er tilfældet hos os, blev den første udvikling født i Search, i den del, der bekæmper spam i søgeresultater. For omkring ti år siden dukkede opgaven med at filtrere voksenindhold til familiesøgninger og forespørgsler, der ikke krævede svar fra kategorien 18+ op der. Sådan dukkede de første manuelt indskrevne ordbøger over porno og bande op, de blev genopfyldt af analytikere. Hovedopgaven var at klassificere anmodninger i dem, hvor det er acceptabelt at vise voksenindhold, og hvor det ikke er det. Til denne opgave blev markup indsamlet, heuristik blev bygget, og modeller blev trænet. Sådan så den første udvikling til filtrering af uønsket indhold ud.

Med tiden begyndte UGC (brugergenereret indhold) at dukke op i Yandex - beskeder, der er skrevet af brugerne selv, og Yandex udgiver kun. Af de ovenfor beskrevne årsager kunne mange meddelelser ikke offentliggøres uden at kigge - moderation var påkrævet. Derefter besluttede de at skabe en tjeneste, der ville give beskyttelse mod spam og angribere for alle Yandex UGC-produkter og bruge udviklinger til at filtrere uønsket indhold i Søgning. Tjenesten blev kaldt "Clean Web".

Nye opgaver og hjælp fra pushere

Først virkede kun simpel automatisering for os: Tjenesterne sendte os tekster, og vi kørte uanstændige ordbøger, pornoordbøger og regulære udtryk på dem - analytikere kompilerede alt manuelt. Men med tiden blev tjenesten brugt i et stigende antal Yandex-produkter, og vi skulle lære at arbejde med nye problemer.

Ofte, i stedet for en anmeldelse, udgiver brugere et meningsløst sæt breve, der forsøger at øge deres præstationer, nogle gange annoncerer de deres virksomhed i anmeldelser af en konkurrents virksomhed, og nogle gange forvirrer de simpelthen organisationer og skriver i en anmeldelse om en dyrehandel: " Perfekt tilberedt fisk!” Måske en dag vil kunstig intelligens lære at forstå betydningen af ​​enhver tekst perfekt, men nu klarer automatisering nogle gange værre end mennesker.

Det blev klart, at vi ikke kunne gøre dette uden manuel mærkning, og vi tilføjede et andet trin til vores kredsløb - at sende det til manuel inspektion af en person. De udgivne tekster, som klassificereren ikke så nogen problemer for, blev inkluderet der. Du kan nemt forestille dig omfanget af en sådan opgave, så vi stolede ikke kun på bedømmere, men udnyttede også "mængdens visdom", det vil sige, vi henvendte os til tolokerne for at få hjælp. Det er dem, der hjælper os med at identificere, hvad maskinen gik glip af, og derved lære den.

Smart caching og LSH hashing

Et andet problem, vi stødte på, når vi arbejdede med kommentarer, var spam, eller mere præcist, dens mængde og spredningshastighed. Da Yandex.Region-publikummet begyndte at vokse hurtigt, kom spammere dertil. De lærte at omgå regulære udtryk ved at ændre teksten lidt. Spam blev selvfølgelig stadig fundet og slettet, men på Yandex-skalaen kunne en uacceptabel besked, der blev sendt selv i 5 minutter, ses af hundredvis af mennesker.

Sådan åbner du kommentarer og ikke drukner i spam

Det passede selvfølgelig ikke os, og vi lavede smart tekst-caching baseret på LSH (lokalitetsfølsom hashing). Det fungerer sådan her: vi normaliserede teksten, fjernede links fra den og skar den i n-gram (sekvenser af n bogstaver). Dernæst blev hasherne af n-gram beregnet, og dokumentets LSH-vektor blev bygget ud fra dem. Pointen er, at lignende tekster, selvom de var lidt ændret, blev til lignende vektorer.

Denne løsning gjorde det muligt at genbruge dommene fra klassifikatorer og tolokere til lignende tekster. Under et spam-angreb, så snart den første meddelelse passerede scanningen og kom ind i cachen med en "spam"-dom, modtog alle nye lignende meddelelser, selv modificerede, den samme dom og blev slettet automatisk. Senere lærte vi, hvordan man træner og automatisk genoptræner spamklassifikatorer, men denne "smart cache" blev hos os og hjælper os stadig ofte.

God tekstklassificering

Uden at have tid til at tage en pause fra bekæmpelsen af ​​spam, indså vi, at 95 % af vores indhold modereres manuelt: klassificerere reagerer kun på overtrædelser, og de fleste af teksterne er gode. Vi læsser rengøringsmidler, som i 95 tilfælde ud af 100 giver karakteren "Alt er OK". Jeg var nødt til at gøre et usædvanligt stykke arbejde - at lave klassificeringer af godt indhold, heldigvis var der akkumuleret nok markup i løbet af denne tid.

Den første klassificerer så sådan ud: vi lemmatiserer teksten (reducerer ordene til deres oprindelige form), smider alle hjælpedele af talen ud og bruger en på forhånd forberedt "ordbog over gode lemmas". Hvis alle ordene i teksten er "gode", så indeholder hele teksten ingen overtrædelser. På forskellige tjenester gav denne tilgang straks fra 25 til 35 % automatisering af manuel opmærkning. Selvfølgelig er denne tilgang ikke ideel: det er nemt at kombinere flere uskyldige ord og få en meget stødende udtalelse, men den gav os mulighed for hurtigt at nå et godt niveau af automatisering og gav os tid til at træne mere komplekse modeller.

De næste versioner af gode tekstklassifikatorer inkluderede allerede lineære modeller, beslutningstræer og deres kombinationer. For at markere uhøflighed og fornærmelser forsøger vi for eksempel BERT neurale netværk. Det er vigtigt at forstå betydningen af ​​et ord i kontekst og sammenhængen mellem ord fra forskellige sætninger, og det gør BERT et godt stykke arbejde med. (Forresten, for nylig kolleger fra News fortalt, hvordan teknologien bruges til en ikke-standard opgave - søgning efter fejl i overskrifter.) Som følge heraf var det muligt at automatisere op til 90% af flowet, afhængig af tjenesten.

Nøjagtighed, fuldstændighed og hurtighed

For at udvikle skal du forstå, hvilke fordele visse automatiske klassifikatorer medfører, ændringer i dem, og om kvaliteten af ​​manuelle kontroller er forringende. For at gøre dette bruger vi præcisions- og tilbagekaldelsesmålinger.

Nøjagtighed er andelen af ​​korrekte domme blandt alle domme om dårligt indhold. Jo højere nøjagtighed, jo færre falske positiver. Hvis du ikke er opmærksom på nøjagtigheden, så kan du i teorien slette al spam og uanstændigheder, og sammen med dem halvdelen af ​​de gode beskeder. På den anden side, hvis du kun stoler på nøjagtighed, så vil den bedste teknologi være den, der slet ikke fanger nogen. Derfor er der også en indikator for fuldstændighed: andelen af ​​identificeret dårligt indhold blandt den samlede mængde dårligt indhold. Disse to målinger balancerer hinanden.

For at måle prøver vi hele den indgående strøm for hver tjeneste og giver indholdsprøver til bedømmere til ekspertevaluering og sammenligning med maskinløsninger.

Men der er en anden vigtig indikator.

Jeg skrev ovenfor, at en uacceptabel besked kan ses af hundredvis af mennesker selv på 5 minutter. Så vi tæller, hvor mange gange vi viste folk dårligt indhold, før vi skjulte det. Det er vigtigt, fordi det ikke er nok at arbejde effektivt – du skal også arbejde hurtigt. Og da vi byggede et forsvar mod bande, mærkede vi det til fulde.

Antimatisme ved at bruge eksemplet med katte og hunde

En lille lyrisk digression. Nogle vil måske sige, at uanstændighed og fornærmelser ikke er så farlige som ondsindede links og ikke så irriterende som spam. Men vi stræber efter at opretholde behagelige betingelser for kommunikation for millioner af brugere, og folk kan ikke lide at vende tilbage til steder, hvor de bliver fornærmet. Det er ikke for ingenting, at forbuddet mod bandeord og fornærmelser er præciseret i reglerne i mange samfund, herunder på Habré. Men vi afviger.

Bandeordbøger kan ikke klare al rigdommen i det russiske sprog. På trods af at der kun er fire hovedbanderødder, kan du ud fra dem lave et utal af ord, der ikke kan fanges af nogen almindelige motorer. Derudover kan du skrive en del af et ord i translitteration, erstatte bogstaver med lignende kombinationer, omarrangere bogstaver, tilføje stjerner osv. Nogle gange er det uden kontekst dybest set umuligt at fastslå, at brugeren mente et bandeord. Vi respekterer Habrs regler, så vi vil demonstrere dette ikke med levende eksempler, men med katte og hunde.

Sådan åbner du kommentarer og ikke drukner i spam

"Lov," sagde katten. Men vi forstår, at katten sagde et andet ord...

Vi begyndte at tænke på "fuzzy matching"-algoritmer til vores ordbog og om smartere forbehandling: vi sørgede for translitteration, limede mellemrum og tegnsætning sammen, ledte efter mønstre og skrev separate regulære udtryk på dem. Denne tilgang gav resultater, men reducerede ofte nøjagtigheden og gav ikke den ønskede fuldstændighed.

Så besluttede vi at "tænke som banderier." Vi begyndte selv at indføre støj i dataene: vi omarrangerede bogstaver, genererede tastefejl, erstattede bogstaver med lignende stavemåder og så videre. Den indledende markering for dette blev taget ved at anvende matordbøger på store korpus af tekster. Hvis du tager én sætning og vrider den på flere måder, ender du med mange sætninger. På denne måde kan du øge træningsprøven ti gange. Tilbage var kun at træne på den resulterende pulje en eller anden mere eller mindre smart model, der tog hensyn til konteksten.

Sådan åbner du kommentarer og ikke drukner i spam

Det er for tidligt at tale om den endelige beslutning. Vi eksperimenterer stadig med tilgange til dette problem, men vi kan allerede se, at et simpelt symbolsk foldningsnetværk af flere lag udkonkurrerer ordbøger og almindelige motorer væsentligt: ​​det er muligt at øge både nøjagtigheden og genkaldelsen.

Selvfølgelig forstår vi, at der altid vil være måder at omgå selv den mest avancerede automatisering, især når sagen er så farlig: skriv på en sådan måde, at en dum maskine ikke vil forstå. Her, som i kampen mod spam, er vores mål ikke at udrydde selve muligheden for at skrive noget uanstændigt; vores opgave er at sikre, at spillet ikke er lyset værd.

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

Kilde: www.habr.com

Tilføj en kommentar