Hvordan åpne kommentarer og ikke drukne i spam

Hvordan åpne kommentarer og ikke drukne i spam

Når jobben din er å skape noe vakkert, trenger du ikke snakke for mye om det, fordi resultatet er foran alles øyne. Men hvis du sletter inskripsjoner fra gjerder, vil ingen legge merke til arbeidet ditt så lenge gjerdene ser anstendige ut eller til du sletter noe galt.

Enhver tjeneste der du kan legge igjen en kommentar, omtale, sende en melding eller laste opp bilder, møter før eller siden problemet med spam, svindel og uanstendighet. Dette kan ikke unngås, men det må håndteres.

Mitt navn er Mikhail, jeg jobber i Antispam-teamet, som beskytter brukere av Yandex-tjenester mot slike problemer. Arbeidet vårt blir sjelden lagt merke til (og det er bra!), så i dag skal jeg fortelle deg mer om det. Du vil lære når moderasjon er ubrukelig og hvorfor nøyaktighet ikke er den eneste indikatoren på effektiviteten. Vi vil også snakke om banning ved å bruke eksemplet med katter og hunder og hvorfor det noen ganger er nyttig å "tenke som en banning."

Flere og flere tjenester dukker opp i Yandex hvor brukere publiserer innholdet sitt. Du kan stille et spørsmål eller skrive et svar i Yandex.Q, diskutere gårdsnyheter i Yandex.District, dele trafikkforhold i samtaler på Yandex.Maps. Men når tjenestens publikum vokser, blir den attraktiv for svindlere og spammere. De kommer og fyller ut kommentarer: de tilbyr enkle penger, annonserer mirakelkurer og lover sosiale goder. På grunn av spammere taper noen brukere penger, mens andre mister lysten til å bruke tid på en ustelt tjeneste som er overgrodd med spam.

Og dette er ikke det eneste problemet. Vi streber ikke bare etter å beskytte brukere mot svindlere, men også å skape en behagelig atmosfære for kommunikasjon. Hvis folk blir konfrontert med banning og fornærmelser i kommentarene, vil de sannsynligvis gå og aldri komme tilbake. Det betyr at du også må kunne håndtere dette.

Ren nett

Som ofte er tilfellet med oss, ble den første utviklingen født i Søk, i den delen som bekjemper spam i søkeresultater. For omtrent ti år siden dukket oppgaven med å filtrere vokseninnhold for familiesøk og for spørsmål som ikke krevde svar fra 18+-kategorien opp der. Slik dukket opp de første manuelt maskinskrevne ordbøkene for porno og banning, de ble etterfylt av analytikere. Hovedoppgaven var å klassifisere forespørsler i de der det er akseptabelt å vise voksent innhold og hvor det ikke er det. For denne oppgaven ble det samlet inn markup, heuristikk ble bygget og modeller ble trent. Slik så de første utviklingene for filtrering av uønsket innhold ut.

Over tid begynte UGC (brukergenerert innhold) å vises i Yandex - meldinger som er skrevet av brukerne selv, og Yandex publiserer bare. Av årsakene som er beskrevet ovenfor, kunne mange meldinger ikke publiseres uten å se - moderering var nødvendig. Deretter bestemte de seg for å lage en tjeneste som ville gi beskyttelse mot spam og angripere for alle Yandex UGC-produkter og bruke utviklinger for å filtrere uønsket innhold i Søk. Tjenesten ble kalt "Clean Web".

Nye oppgaver og hjelp fra pushere

Til å begynne med fungerte bare enkel automatisering for oss: tjenestene sendte oss tekster, og vi kjørte uanstendighetsordbøker, pornoordbøker og regulære uttrykk på dem - analytikere kompilerte alt manuelt. Men over tid ble tjenesten brukt i et økende antall Yandex-produkter, og vi måtte lære å jobbe med nye problemer.

Ofte, i stedet for en anmeldelse, publiserer brukere et meningsløst sett med brev, og prøver å øke prestasjonene sine, noen ganger annonserer de selskapet sitt i anmeldelser av en konkurrents selskap, og noen ganger forvirrer de ganske enkelt organisasjoner og skriver i en anmeldelse om en dyrebutikk: " Perfekt tilberedt fisk!" Kanskje en dag vil kunstig intelligens lære å forstå betydningen av enhver tekst perfekt, men nå takler automatisering noen ganger dårligere enn mennesker.

Det ble klart at vi ikke kunne gjøre dette uten manuell merking, og vi la til et andre trinn til kretsen vår – å sende den til manuell inspeksjon av en person. De publiserte tekstene som klassifisereren ikke så noen problemer for, ble inkludert der. Du kan enkelt forestille deg omfanget av en slik oppgave, så vi stolte ikke bare på bedømmere, men utnyttet også "menighetens visdom", det vil si at vi henvendte oss til tolokerne for å få hjelp. Det er de som hjelper oss å identifisere hva maskinen gikk glipp av, og dermed lære den.

Smart caching og LSH-hashing

Et annet problem vi møtte når vi jobbet med kommentarer var spam, eller mer presist, volum og spredningshastighet. Da Yandex.Region-publikummet begynte å vokse raskt, kom spammere dit. De lærte å omgå regulære uttrykk ved å endre litt på teksten. Spam, selvfølgelig, ble fortsatt funnet og slettet, men på skalaen til Yandex kunne en uakseptabel melding postet selv i 5 minutter bli sett av hundrevis av mennesker.

Hvordan åpne kommentarer og ikke drukne i spam

Dette passet selvfølgelig ikke oss, og vi laget smart tekstbufring basert på LSH (lokalitetsfølsom hashing). Det fungerer slik: vi normaliserte teksten, fjernet lenker fra den og kuttet den i n-gram (sekvenser av n bokstaver). Deretter ble hashen av n-gram beregnet, og LSH-vektoren til dokumentet ble bygget fra dem. Poenget er at lignende tekster, selv om de ble litt endret, ble til lignende vektorer.

Denne løsningen gjorde det mulig å gjenbruke dommene til klassifiserere og tolokere for lignende tekster. Under et spam-angrep, så snart den første meldingen passerte skanningen og kom inn i hurtigbufferen med en "spam"-dom, mottok alle nye lignende meldinger, selv modifiserte, den samme dommen og ble slettet automatisk. Senere lærte vi hvordan vi trener opp og automatisk omskoler spamklassifiserere, men denne "smartbufferen" ble med oss ​​og hjelper oss likevel ofte.

God tekstklassifisering

Uten å ha tid til å ta en pause fra å bekjempe spam, innså vi at 95 % av innholdet vårt modereres manuelt: klassifiserere reagerer kun på brudd, og de fleste tekstene er gode. Vi laster rengjøringsmidler som i 95 tilfeller av 100 gir karakteren «Alt er OK». Jeg måtte gjøre en uvanlig jobb - å lage klassifiserere av godt innhold, heldigvis hadde det samlet seg nok oppslag i løpet av denne tiden.

Den første klassifikatoren så slik ut: vi lemmatiserer teksten (reduserer ordene til den opprinnelige formen), kaster ut alle hjelpedelene av talen og bruker en forhåndsforberedt "ordbok over gode lemmas". Hvis alle ordene i teksten er "gode", inneholder ikke hele teksten noen brudd. På forskjellige tjenester ga denne tilnærmingen umiddelbart fra 25 til 35 % automatisering av manuell markering. Selvfølgelig er denne tilnærmingen ikke ideell: det er lett å kombinere flere uskyldige ord og få en veldig støtende uttalelse, men den tillot oss raskt å nå et godt automatiseringsnivå og ga oss tid til å trene mer komplekse modeller.

De neste versjonene av gode tekstklassifiserere inkluderte allerede lineære modeller, beslutningstrær og deres kombinasjoner. For å markere uhøflighet og fornærmelser prøver vi for eksempel BERT nevrale nettverk. Det er viktig å forstå betydningen av et ord i kontekst og sammenhengen mellom ord fra ulike setninger, og BERT gjør en god jobb med dette. (Forresten, nylig kolleger fra News fortalte, hvordan teknologi brukes til en ikke-standard oppgave - å finne feil i overskrifter.) Som et resultat var det mulig å automatisere opptil 90 % av flyten, avhengig av tjenesten.

Nøyaktighet, fullstendighet og hastighet

For å utvikle, må du forstå hvilke fordeler visse automatiske klassifiserere gir, endringer i dem, og om kvaliteten på manuelle kontroller er forringende. For å gjøre dette bruker vi presisjons- og gjenkallingsmålinger.

Nøyaktighet er andelen riktige dommer blant alle dommer om dårlig innhold. Jo høyere nøyaktighet, jo færre falske positiver. Hvis du ikke tar hensyn til nøyaktigheten, kan du i teorien slette all spam og uanstendigheter, og sammen med dem halvparten av de gode meldingene. På den annen side, hvis du bare stoler på nøyaktighet, vil den beste teknologien være den som ikke fanger noen i det hele tatt. Derfor er det også en indikator på fullstendighet: andelen identifisert dårlig innhold blant det totale volumet av dårlig innhold. Disse to beregningene balanserer hverandre.

For å måle prøver vi hele den innkommende strømmen for hver tjeneste og gir innholdsprøver til bedømmere for ekspertevaluering og sammenligning med maskinløsninger.

Men det er en annen viktig indikator.

Jeg skrev ovenfor at en uakseptabel melding kan sees av hundrevis av mennesker selv på 5 minutter. Så vi teller hvor mange ganger vi viste folk dårlig innhold før vi skjulte det. Dette er viktig fordi det ikke er nok å jobbe effektivt – du må også jobbe raskt. Og da vi bygget et forsvar mot banning, følte vi det til fulle.

Antimatisme ved å bruke eksemplet med katter og hunder

En liten lyrisk digresjon. Noen vil kanskje si at uanstendighet og fornærmelser ikke er like farlige som ondsinnede lenker, og ikke så irriterende som spam. Men vi streber etter å opprettholde komfortable forhold for kommunikasjon for millioner av brukere, og folk liker ikke å returnere til steder hvor de blir fornærmet. Det er ikke for ingenting at forbudet mot banning og fornærmelser er nedfelt i reglene i mange lokalsamfunn, inkludert Habré. Men vi går bort.

Banneordbøker kan ikke takle all rikdommen til det russiske språket. Til tross for at det bare er fire hovedbannerøtter, kan du fra dem lage et utallig antall ord som ikke kan fanges opp av noen vanlige motorer. I tillegg kan du skrive en del av et ord i translitterasjon, erstatte bokstaver med lignende kombinasjoner, omorganisere bokstaver, legge til stjerner osv. Noen ganger, uten kontekst, er det i utgangspunktet umulig å fastslå at brukeren mente et banneord. Vi respekterer Habrs regler, så vi vil demonstrere dette ikke med levende eksempler, men med katter og hunder.

Hvordan åpne kommentarer og ikke drukne i spam

"Lov," sa katten. Men vi forstår at katten sa et annet ord...

Vi begynte å tenke på "fuzzy matching"-algoritmer for ordboken vår og på smartere forhåndsbehandling: vi ga translitterasjon, limte mellomrom og tegnsetting sammen, så etter mønstre og skrev separate regulære uttrykk på dem. Denne tilnærmingen ga resultater, men reduserte ofte nøyaktigheten og ga ikke ønsket fullstendighet.

Så bestemte vi oss for å «tenke som sverre». Vi begynte å introdusere støy i dataene selv: vi omorganiserte bokstaver, genererte skrivefeil, erstattet bokstaver med lignende stavemåter, og så videre. Den første markeringen for dette ble tatt ved å bruke matteordbøker på store tekstkorpus. Tar du én setning og vrir den på flere måter, ender du opp med mange setninger. På denne måten kan du øke treningsutvalget titalls ganger. Det gjensto bare å trene på den resulterende bassenget en eller annen mer eller mindre smart modell som tok hensyn til konteksten.

Hvordan åpne kommentarer og ikke drukne i spam

Det er for tidlig å si noe om den endelige avgjørelsen. Vi eksperimenterer fortsatt med tilnærminger til dette problemet, men vi kan allerede se at et enkelt symbolsk konvolusjonsnettverk av flere lag overgår ordbøker og vanlige motorer betydelig: det er mulig å øke både nøyaktighet og gjenkalling.

Selvfølgelig forstår vi at det alltid vil være måter å omgå selv den mest avanserte automatiseringen, spesielt når saken er så farlig: skriv på en slik måte at en dum maskin ikke vil forstå. Her, som i kampen mot spam, er ikke målet vårt å utrydde selve muligheten for å skrive noe uanstendig, vår oppgave er å sørge for at spillet ikke er verdt lyset.

Å åpne opp muligheten til å dele din mening, kommunisere og kommentere er ikke vanskelig. Det er mye vanskeligere å oppnå trygge, komfortable forhold og respektfull behandling av mennesker. Og uten dette blir det ingen utvikling av noe fellesskap.

Kilde: www.habr.com

Legg til en kommentar