Hoe je reacties opent en niet verdrinkt in spam

Hoe je reacties opent en niet verdrinkt in spam

Als het jouw taak is om iets moois te creëren, hoef je er niet te veel over te praten, omdat het resultaat voor ieders ogen ligt. Maar als u inscripties op hekken wist, zal niemand uw werk opmerken, zolang de hekken er maar goed uitzien of totdat u iets verkeerds wist.

Elke dienst waar u een reactie kunt achterlaten, een recensie kunt plaatsen, een bericht kunt sturen of foto's kunt uploaden, wordt vroeg of laat geconfronteerd met het probleem van spam, fraude en obsceniteit. Dit kan niet worden vermeden, maar moet wel worden aangepakt.

Mijn naam is Mikhail, ik werk in het Antispam-team, dat gebruikers van Yandex-services tegen dergelijke problemen beschermt. Ons werk wordt zelden opgemerkt (en dat is maar goed ook!), dus vandaag vertel ik je er meer over. U zult leren wanneer gematigdheid nutteloos is en waarom nauwkeurigheid niet de enige indicator is voor de effectiviteit ervan. We zullen ook praten over vloeken aan de hand van het voorbeeld van katten en honden en waarom het soms nuttig is om ‘te denken als een vloeker’.

Er verschijnen steeds meer services in Yandex waar gebruikers hun inhoud publiceren. U kunt een vraag stellen of een antwoord schrijven in Yandex.Q, werfnieuws bespreken in Yandex.District, verkeersomstandigheden delen in gesprekken op Yandex.Maps. Maar wanneer het publiek van de dienst groeit, wordt deze aantrekkelijk voor oplichters en spammers. Ze komen en vullen commentaar in: ze bieden gemakkelijk geld aan, maken reclame voor wondermiddelen en beloven sociale voordelen. Door spammers verliezen sommige gebruikers geld, terwijl anderen de wens verliezen om tijd te besteden aan een onverzorgde dienst die overgroeid is met spam.

En dit is niet het enige probleem. We streven er niet alleen naar om gebruikers te beschermen tegen oplichters, maar ook om een ​​comfortabele sfeer voor communicatie te creëren. Als mensen worden geconfronteerd met scheldwoorden en beledigingen in de reacties, is de kans groot dat ze weggaan en nooit meer terugkomen. Dit betekent dat jij hier ook mee om moet kunnen gaan.

Schoon web

Zoals vaak bij ons het geval is, werden de eerste ontwikkelingen geboren in Search, in het onderdeel dat spam in zoekresultaten bestrijdt. Ongeveer tien jaar geleden verscheen daar de taak om inhoud voor volwassenen te filteren voor zoekopdrachten naar gezinnen en voor zoekopdrachten waarvoor geen antwoorden uit de categorie 18+ nodig waren. Dit is hoe de eerste handmatig getypte woordenboeken met porno en vloeken verschenen, ze werden aangevuld door analisten. De belangrijkste taak was om verzoeken te classificeren in verzoeken waarbij het aanvaardbaar is om inhoud voor volwassenen weer te geven en verzoeken waarin dit niet het geval is. Voor deze taak werden markup verzameld, heuristieken ontwikkeld en modellen getraind. Zo ontstonden de eerste ontwikkelingen voor het filteren van ongewenste inhoud.

Na verloop van tijd begon UGC (door gebruikers gegenereerde inhoud) te verschijnen in Yandex - berichten die door gebruikers zelf zijn geschreven, en Yandex publiceert alleen. Om de hierboven beschreven redenen konden veel berichten niet worden gepubliceerd zonder te kijken; moderatie was vereist. Vervolgens besloten ze een service te creëren die bescherming zou bieden tegen spam en aanvallers voor alle Yandex UGC-producten en ontwikkelingen zouden gebruiken om ongewenste inhoud in Zoeken te filteren. De dienst heette "Clean Web".

Nieuwe taken en hulp van pushers

In eerste instantie werkte alleen eenvoudige automatisering voor ons: de diensten stuurden ons teksten, en we gebruikten obsceniteitswoordenboeken, pornowoordenboeken en reguliere expressies erop - analisten stelden alles handmatig samen. Maar na verloop van tijd werd de service in steeds meer Yandex-producten gebruikt en moesten we leren werken met nieuwe problemen.

Vaak publiceren gebruikers in plaats van een recensie een betekenisloze reeks brieven, in een poging hun prestaties te vergroten, soms adverteren ze hun bedrijf in recensies van het bedrijf van een concurrent, en soms verwarren ze eenvoudigweg organisaties en schrijven ze in een recensie over een dierenwinkel: “ Perfect bereide vis!” Misschien zal de kunstmatige intelligentie ooit de betekenis van welke tekst dan ook perfect leren begrijpen, maar nu kan de automatisering het soms slechter aan dan de mens.

Het werd duidelijk dat we dit niet konden doen zonder handmatige markering, en we voegden een tweede fase aan ons circuit toe: we stuurden het ter handmatige inspectie door iemand. De gepubliceerde teksten waarvoor de classificator geen problemen zag, werden daar opgenomen. Je kunt je de omvang van een dergelijke taak gemakkelijk voorstellen, dus vertrouwden we niet alleen op beoordelaars, maar profiteerden we ook van de 'wijsheid van de menigte', dat wil zeggen dat we ons tot de tolokers wendden voor hulp. Zij zijn degenen die ons helpen te identificeren wat de machine heeft gemist, en het daardoor kunnen onderwijzen.

Slimme caching en LSH-hashing

Een ander probleem dat we tegenkwamen bij het werken met reacties was spam, of preciezer gezegd, de omvang en snelheid van verspreiding ervan. Toen het Yandex.Region-publiek snel begon te groeien, kwamen daar spammers. Ze leerden reguliere expressies te omzeilen door de tekst enigszins te veranderen. Spam werd natuurlijk nog steeds gevonden en verwijderd, maar op de schaal van Yandex kon een onaanvaardbaar bericht dat zelfs gedurende 5 minuten werd gepost, door honderden mensen worden gezien.

Hoe je reacties opent en niet verdrinkt in spam

Dit beviel ons natuurlijk niet en we hebben slimme tekstcaching gemaakt op basis van LSH (plaatsgevoelige hashing). Het werkt als volgt: we hebben de tekst genormaliseerd, de links eruit verwijderd en deze in n-grammen (reeksen van n letters) geknipt. Vervolgens werden de hashes van n-grammen berekend en werd de LSH-vector van het document daaruit opgebouwd. Het punt is dat vergelijkbare teksten, ook al waren ze enigszins gewijzigd, in vergelijkbare vectoren veranderden.

Deze oplossing maakte het mogelijk om de uitspraken van classifiers en tolokers voor soortgelijke teksten te hergebruiken. Zodra tijdens een spamaanval het eerste bericht de scan had doorstaan ​​en de cache was binnengekomen met het oordeel 'spam', kregen alle nieuwe soortgelijke berichten, zelfs gewijzigde berichten, hetzelfde oordeel en werden ze automatisch verwijderd. Later leerden we hoe we spamclassificatoren konden trainen en automatisch opnieuw trainen, maar deze ‘slimme cache’ bleef bij ons en helpt ons nog steeds vaak.

Goede tekstclassificator

Zonder tijd te hebben om een ​​pauze te nemen in de strijd tegen spam, realiseerden we ons dat 95% van onze inhoud handmatig wordt gemodereerd: classificaties reageren alleen op overtredingen en de meeste teksten zijn goed. Wij beladen schoonmakers die in 95 van de 100 gevallen de beoordeling “Alles in orde” geven. Ik moest iets ongebruikelijks doen: classificaties maken van goede inhoud, gelukkig was er in deze periode voldoende markup verzameld.

De eerste classificator zag er als volgt uit: we lemmatiseren de tekst (herleiden de woorden tot hun oorspronkelijke vorm), gooien alle hulpdelen van de spraak weg en gebruiken een vooraf opgesteld “woordenboek met goede lemma’s”. Als alle woorden in de tekst “goed” zijn, bevat de gehele tekst geen overtredingen. Op verschillende diensten leverde deze aanpak onmiddellijk 25 tot 35% automatisering van handmatige markup op. Deze aanpak is natuurlijk niet ideaal: het is gemakkelijk om verschillende onschuldige woorden te combineren en een zeer aanstootgevende verklaring te krijgen, maar het stelde ons in staat snel een goed automatiseringsniveau te bereiken en gaf ons de tijd om complexere modellen te trainen.

De volgende versies van goede tekstclassificatoren bevatten al lineaire modellen, beslissingsbomen en hun combinaties. Om grofheid en beledigingen te markeren, proberen we bijvoorbeeld het neurale netwerk van BERT. Het is belangrijk om de betekenis van een woord in de context en het verband tussen woorden uit verschillende zinnen te begrijpen, en BERT doet dit goed. (Overigens onlangs collega's van Nieuws vertelde, hoe technologie wordt gebruikt voor een niet-standaard taak: zoeken naar fouten in headers.) Als resultaat was het mogelijk om tot 90% van de stroom te automatiseren, afhankelijk van de service.

Nauwkeurigheid, volledigheid en snelheid

Om zich te kunnen ontwikkelen, moet u begrijpen welke voordelen bepaalde automatische classificaties met zich meebrengen, wat de veranderingen daarin zijn en of de kwaliteit van handmatige controles vernederend is. Om dit te doen, gebruiken we precisie- en herinneringsstatistieken.

Nauwkeurigheid is het aandeel correcte uitspraken onder alle uitspraken over slechte inhoud. Hoe hoger de nauwkeurigheid, hoe minder valse positieven. Als je geen aandacht besteedt aan nauwkeurigheid, kun je in theorie alle spam en obsceniteiten verwijderen, en daarmee de helft van de goede berichten. Aan de andere kant, als je alleen op nauwkeurigheid vertrouwt, zal de beste technologie degene zijn die helemaal niemand betrapt. Daarom is er ook een indicator van volledigheid: het aandeel geïdentificeerde slechte inhoud in het totale volume aan slechte inhoud. Deze twee statistieken houden elkaar in evenwicht.

Om te meten, nemen we voor elke dienst een steekproef van de gehele inkomende stroom en geven we inhoudsvoorbeelden aan beoordelaars voor deskundige evaluatie en vergelijking met machineoplossingen.

Maar er is nog een belangrijke indicator.

Ik schreef hierboven dat een onaanvaardbare boodschap zelfs binnen 5 minuten door honderden mensen kan worden gezien. We tellen dus hoe vaak we mensen slechte inhoud hebben laten zien voordat we deze verborgen hielden. Dit is belangrijk omdat het niet genoeg is om efficiënt te werken; je moet ook snel werken. En toen we een verdediging tegen vloeken opbouwden, voelden we dat ten volle.

Antimatisme naar het voorbeeld van katten en honden

Een kleine lyrische uitweiding. Sommigen zullen misschien zeggen dat obsceniteit en beledigingen niet zo gevaarlijk zijn als kwaadaardige links, en niet zo vervelend als spam. Maar we streven ernaar comfortabele communicatieomstandigheden voor miljoenen gebruikers te handhaven, en mensen keren niet graag terug naar plaatsen waar ze worden beledigd. Het is niet voor niets dat het verbod op vloeken en beledigingen is vastgelegd in de regels van veel gemeenschappen, ook op Habré. Maar we dwalen af.

Vloekenwoordenboeken kunnen niet omgaan met alle rijkdom van de Russische taal. Ondanks het feit dat er slechts vier belangrijke scheldwoorden zijn, kun je daaruit een ontelbaar aantal woorden verzinnen die niet door reguliere motoren kunnen worden opgevangen. Bovendien kunt u een deel van een woord in transliteratie schrijven, letters vervangen door soortgelijke combinaties, letters herschikken, sterretjes toevoegen, enz. Soms is het zonder context in principe onmogelijk om vast te stellen dat de gebruiker een scheldwoord bedoelde. We respecteren de regels van Habr, dus we zullen dit niet met live voorbeelden demonstreren, maar met katten en honden.

Hoe je reacties opent en niet verdrinkt in spam

‘Wet,’ zei de kat. Maar we begrijpen dat de kat een ander woord zei...

We begonnen na te denken over ‘fuzzy matching’-algoritmen voor ons woordenboek en over slimmere voorbewerking: we zorgden voor transliteratie, plakten spaties en interpunctie aan elkaar, zochten naar patronen en schreven er aparte reguliere expressies op. Deze aanpak leverde resultaten op, maar verminderde vaak de nauwkeurigheid en leverde niet de gewenste volledigheid op.

Toen besloten we om ‘te denken als vloekers’. We begonnen zelf ruis in de gegevens te introduceren: we herschikten letters, maakten typefouten, vervingen letters door soortgelijke spellingen, enzovoort. De initiële opwaardering hiervoor werd bereikt door matte woordenboeken toe te passen op grote corpora van teksten. Als je één zin neemt en deze op verschillende manieren verdraait, krijg je veel zinnen. Zo kun je de trainingssteekproef tientallen keren vergroten. Het enige dat overbleef was het trainen van de resulterende pool met een min of meer slim model dat rekening hield met de context.

Hoe je reacties opent en niet verdrinkt in spam

Het is nog te vroeg om over de definitieve beslissing te praten. We experimenteren nog steeds met benaderingen van dit probleem, maar we kunnen al zien dat een eenvoudig symbolisch convolutioneel netwerk van verschillende lagen aanzienlijk beter presteert dan woordenboeken en reguliere zoekmachines: het is mogelijk om zowel de nauwkeurigheid als de herinnering te vergroten.

Natuurlijk begrijpen we dat er altijd manieren zullen zijn om zelfs de meest geavanceerde automatisering te omzeilen, vooral als de zaak zo gevaarlijk is: schrijf zo dat een stomme machine het niet zal begrijpen. Ons doel is hier, net als bij de strijd tegen spam, niet het uitroeien van de mogelijkheid om iets obsceens te schrijven; het is onze taak ervoor te zorgen dat het spel de kaars niet waard is.

Het is niet moeilijk om de mogelijkheid te bieden om uw mening te delen, te communiceren en commentaar te leveren. Het is veel moeilijker om veilige, comfortabele omstandigheden en een respectvolle behandeling van mensen te bereiken. En zonder dit zal er geen enkele gemeenschap kunnen ontstaan.

Bron: www.habr.com

Voeg een reactie