Come aprire i commenti e non rimanere sommersi dallo spam

Come aprire i commenti e non rimanere sommersi dallo spam

Quando il tuo lavoro è creare qualcosa di bello, non devi parlarne troppo, perché il risultato è sotto gli occhi di tutti. Ma se cancelli le iscrizioni dai recinti, nessuno noterà il tuo lavoro finché i recinti sembreranno decenti o finché non cancellerai qualcosa di sbagliato.

Qualsiasi servizio in cui è possibile lasciare un commento, recensire, inviare un messaggio o caricare immagini prima o poi deve affrontare il problema dello spam, della frode e dell'oscenità. Questo non può essere evitato, ma deve essere affrontato.

Mi chiamo Mikhail, lavoro nel team Antispam, che protegge gli utenti dei servizi Yandex da tali problemi. Il nostro lavoro raramente viene notato (ed è un bene!), quindi oggi ve ne parlerò meglio. Imparerai quando la moderazione è inutile e perché la precisione non è l'unico indicatore della sua efficacia. Parleremo anche delle parolacce usando l’esempio dei cani e dei gatti e del perché a volte è utile “pensare come un bestemmiatore”.

In Yandex compaiono sempre più servizi in cui gli utenti pubblicano i propri contenuti. Puoi porre una domanda o scrivere una risposta in Yandex.Q, discutere le notizie del cantiere in Yandex.District, condividere le condizioni del traffico nelle conversazioni su Yandex.Maps. Ma quando il pubblico del servizio cresce, diventa attraente per truffatori e spammer. Vengono e compilano commenti: offrono soldi facili, pubblicizzano cure miracolose e promettono benefici sociali. A causa degli spammer, alcuni utenti perdono denaro, mentre altri perdono il desiderio di dedicare tempo a un servizio trasandato e invaso dallo spam.

E questo non è l'unico problema. Ci impegniamo non solo a proteggere gli utenti dai truffatori, ma anche a creare un'atmosfera confortevole per la comunicazione. Se le persone si confrontano con parolacce e insulti nei commenti, è probabile che se ne vadano e non ritornino mai più. Ciò significa che devi essere in grado di affrontare anche questo.

Rete pulita

Come spesso accade da noi, i primi sviluppi sono nati nella Ricerca, nella parte che combatte lo spam nei risultati di ricerca. Circa dieci anni fa, lì è apparso il compito di filtrare i contenuti per adulti per le ricerche familiari e per le domande che non richiedevano risposte dalla categoria 18+. È così che sono comparsi i primi dizionari di pornografia e parolacce digitati manualmente, che sono stati reintegrati dagli analisti. Il compito principale era classificare le richieste in quelle in cui è accettabile mostrare contenuti per adulti e in quelle in cui non lo è. Per questo compito è stato raccolto markup, sono state costruite euristiche e sono stati addestrati modelli. È così che sono comparsi i primi sviluppi per il filtraggio dei contenuti indesiderati.

Nel corso del tempo, gli UGC (contenuti generati dagli utenti) hanno iniziato ad apparire in Yandex: messaggi scritti dagli utenti stessi e Yandex pubblica solo. Per i motivi sopra descritti, molti messaggi non potevano essere pubblicati senza esaminarli: era necessaria la moderazione. Quindi hanno deciso di creare un servizio che fornisse protezione contro spam e aggressori per tutti i prodotti Yandex UGC e utilizzi gli sviluppi per filtrare i contenuti indesiderati nella Ricerca. Il servizio si chiamava “Clean Web”.

Nuovi compiti e aiuto dagli spacciatori

All'inizio, per noi funzionava solo una semplice automazione: i servizi ci inviavano testi e su di essi eseguivamo dizionari di oscenità, dizionari porno ed espressioni regolari: gli analisti compilavano tutto manualmente. Ma nel tempo, il servizio è stato utilizzato in un numero crescente di prodotti Yandex e abbiamo dovuto imparare a lavorare con nuovi problemi.

Spesso, invece di una recensione, gli utenti pubblicano una serie di lettere prive di significato, cercando di aumentare i propri risultati, a volte pubblicizzano la propria azienda nelle recensioni dell'azienda di un concorrente, a volte semplicemente confondono le organizzazioni e scrivono in una recensione su un negozio di animali: " Pesce cucinato alla perfezione!” Forse un giorno l'intelligenza artificiale imparerà a cogliere perfettamente il significato di qualsiasi testo, ma ora l'automazione a volte se la cava peggio degli umani.

È diventato chiaro che non potevamo farlo senza la marcatura manuale e abbiamo aggiunto una seconda fase al nostro circuito: inviarlo per l'ispezione manuale da parte di una persona. Qui sono stati inclusi i testi pubblicati per i quali il classificatore non ha riscontrato problemi. Potete facilmente immaginare la portata di un simile compito, quindi non solo ci siamo affidati agli assessori, ma abbiamo anche approfittato della "saggezza della folla", cioè ci siamo rivolti agli operatori per chiedere aiuto. Sono loro che ci aiutano a identificare ciò che la macchina ha mancato e quindi a insegnarglielo.

Caching intelligente e hashing LSH

Un altro problema che abbiamo riscontrato lavorando con i commenti è stato lo spam, o più precisamente, il suo volume e la velocità di diffusione. Quando il pubblico di Yandex.Region iniziò a crescere rapidamente, gli spammer arrivarono lì. Hanno imparato a bypassare le espressioni regolari modificando leggermente il testo. Lo spam, ovviamente, è stato comunque trovato ed eliminato, ma sulla scala di Yandex, un messaggio inaccettabile pubblicato anche per 5 minuti potrebbe essere visto da centinaia di persone.

Come aprire i commenti e non rimanere sommersi dallo spam

Ovviamente questo non ci andava bene e abbiamo creato una memorizzazione nella cache del testo intelligente basata su LSH (hashing sensibile alla località). Funziona così: abbiamo normalizzato il testo, rimosso i collegamenti da esso e tagliato in n grammi (sequenze di n lettere). Successivamente, sono stati calcolati gli hash di n-grammi e da essi è stato costruito il vettore LSH del documento. Il punto è che testi simili, anche se leggermente modificati, si sono trasformati in vettori simili.

Questa soluzione ha permesso di riutilizzare i verdetti di classificatori e toloker per testi simili. Durante un attacco di spam, non appena il primo messaggio ha superato la scansione ed è entrato nella cache con un verdetto "spam", tutti i nuovi messaggi simili, anche quelli modificati, hanno ricevuto lo stesso verdetto e sono stati cancellati automaticamente. Successivamente, abbiamo imparato come addestrare e riqualificare automaticamente i classificatori di spam, ma questa "cache intelligente" è rimasta con noi e spesso ci aiuta ancora.

Buon classificatore di testi

Senza avere il tempo di prenderci una pausa dalla lotta allo spam, ci siamo resi conto che il 95% dei nostri contenuti è moderato manualmente: i classificatori reagiscono solo alle violazioni e la maggior parte dei testi sono buoni. Carichiamo addetti alle pulizie che in 95 casi su 100 danno la valutazione “Tutto ok”. Ho dovuto fare un lavoro insolito: creare classificatori di buoni contenuti, fortunatamente durante questo periodo si era accumulato abbastanza markup.

Il primo classificatore assomigliava a questo: lemmatizziamo il testo (riduciamo le parole alla loro forma iniziale), eliminiamo tutte le parti ausiliarie del discorso e utilizziamo un "dizionario di buoni lemmi" pre-preparato. Se tutte le parole nel testo sono "buone", l'intero testo non contiene alcuna violazione. Su diversi servizi, questo approccio ha immediatamente dato dal 25 al 35% di automazione del markup manuale. Naturalmente, questo approccio non è l’ideale: è facile combinare diverse parole innocenti e ottenere un’affermazione molto offensiva, ma ci ha permesso di raggiungere rapidamente un buon livello di automazione e ci ha dato il tempo di addestrare modelli più complessi.

Le versioni successive di buoni classificatori di testi includevano già modelli lineari, alberi decisionali e le loro combinazioni. Per segnalare maleducazione e insulti, ad esempio, proviamo la rete neurale BERT. È importante cogliere il significato di una parola nel contesto e la connessione tra parole di frasi diverse, e BERT fa un buon lavoro in questo. (A proposito, recentemente i colleghi di News detto, come viene utilizzata la tecnologia per un'attività non standard: trovare errori nelle intestazioni.) Di conseguenza, è stato possibile automatizzare fino al 90% del flusso, a seconda del servizio.

Precisione, completezza e velocità

Per svilupparlo, è necessario comprendere quali vantaggi apportano determinati classificatori automatici, quali cambiamenti apportano e se la qualità dei controlli manuali è in peggioramento. Per fare ciò, utilizziamo metriche di precisione e richiamo.

L'accuratezza è la proporzione dei verdetti corretti tra tutti i verdetti relativi a contenuti inappropriati. Maggiore è la precisione, minori saranno i falsi positivi. Se non presti attenzione alla precisione, in teoria puoi eliminare tutto lo spam e le oscenità e insieme a loro metà dei messaggi validi. D’altra parte, se ti affidi solo alla precisione, la tecnologia migliore sarà quella che non cattura nessuno. Pertanto, esiste anche un indicatore di completezza: la quota di contenuti cattivi identificati sul volume totale di contenuti cattivi. Questi due parametri si bilanciano a vicenda.

Per misurare, campioniamo l'intero flusso in entrata per ciascun servizio e forniamo campioni di contenuto ai valutatori per la valutazione di esperti e il confronto con le soluzioni delle macchine.

Ma c’è un altro indicatore importante.

Ho scritto sopra che un messaggio inaccettabile può essere visto da centinaia di persone anche in 5 minuti. Quindi contiamo quante volte abbiamo mostrato alle persone contenuti dannosi prima di nasconderli. Questo è importante perché non basta lavorare in modo efficiente: è necessario anche lavorare velocemente. E quando abbiamo costruito una difesa contro le parolacce, lo abbiamo sentito appieno.

Antimatismo usando l'esempio di cani e gatti

Una piccola digressione lirica. Qualcuno potrebbe dire che l'oscenità e gli insulti non sono pericolosi quanto i link dannosi, e nemmeno fastidiosi quanto lo spam. Ma ci sforziamo di mantenere condizioni confortevoli per la comunicazione per milioni di utenti e alle persone non piace tornare nei luoghi in cui vengono insultate. Non per niente il divieto di parolacce e insulti è sancito nelle regole di molte comunità, inclusa quella di Habré. Ma stiamo divagando.

I dizionari di parolacce non possono far fronte a tutta la ricchezza della lingua russa. Nonostante ci siano solo quattro radici principali delle parolacce, da esse puoi creare un numero infinito di parole che non possono essere catturate da nessun motore normale. Inoltre, puoi scrivere parte di una parola in traslitterazione, sostituire lettere con combinazioni simili, riorganizzare le lettere, aggiungere asterischi, ecc. A volte, senza contesto, è praticamente impossibile determinare che l'utente intendesse una parolaccia. Rispettiamo le regole di Habr, quindi lo dimostreremo non con esempi dal vivo, ma con cani e gatti.

Come aprire i commenti e non rimanere sommersi dallo spam

"Legge", disse il gatto. Ma capiamo che il gatto ha detto una parola diversa...

Abbiamo iniziato a pensare ad algoritmi di “corrispondenza fuzzy” per il nostro dizionario e a una preelaborazione più intelligente: abbiamo fornito la traslitterazione, incollato insieme spazi e punteggiatura, cercato modelli e scritto su di essi espressioni regolari separate. Questo approccio ha portato risultati, ma spesso ha ridotto la precisione e non ha fornito la completezza desiderata.

Poi abbiamo deciso di “pensare come imprecatori”. Abbiamo iniziato noi stessi a introdurre rumore nei dati: abbiamo riorganizzato le lettere, generato errori di battitura, sostituito lettere con ortografie simili e così via. Il markup iniziale per questo è stato preso applicando dizionari mat a grandi corpora di testi. Se prendi una frase e la modifichi in diversi modi, ti ritroverai con molte frasi. In questo modo puoi aumentare il campione di allenamento di decine di volte. Non restava che addestrare sul pool risultante qualche modello più o meno intelligente che tenesse conto del contesto.

Come aprire i commenti e non rimanere sommersi dallo spam

È troppo presto per parlare della decisione finale. Stiamo ancora sperimentando approcci a questo problema, ma possiamo già vedere che una semplice rete convoluzionale simbolica di più strati supera significativamente le prestazioni dei dizionari e dei normali motori: è possibile aumentare sia la precisione che il ricordo.

Naturalmente capiamo che ci saranno sempre modi per aggirare anche l'automazione più avanzata, soprattutto quando la questione è così pericolosa: scrivere in modo tale che una stupida macchina non capisca. Qui, come nella lotta allo spam, il nostro obiettivo non è sradicare la possibilità stessa di scrivere qualcosa di osceno; il nostro compito è fare in modo che il gioco non valga la candela.

Aprire l'opportunità di condividere la tua opinione, comunicare e commentare non è difficile. È molto più difficile ottenere condizioni sicure, confortevoli e un trattamento rispettoso delle persone. E senza questo non ci sarà sviluppo di nessuna comunità.

Fonte: habr.com

Aggiungi un commento