Come moderiamo gli annunci

Come moderiamo gli annunci

Ogni servizio che permette agli utenti di creare contenuti propri (UGC - User-generated content) deve affrontare non solo compiti aziendali, ma anche gestire l'UGC. Una moderazione scadente o inadeguata dei contenuti può ridurre l'attrattiva del servizio per gli utenti, arrivando fino a compromettere la sua operatività.

Oggi vi parleremo della sinergia tra Yula e Odnoklassniki, che ci aiuta a moderare efficacemente gli annunci su Yula.

La sinergia è in generale una cosa molto utile, e nel mondo moderno, dove la tecnologia e le tendenze cambiano rapidamente, può diventare un vero e proprio salvavita. Perché spendere risorse scarse e tempo per inventare ciò che è già stato inventato e perfezionato da altri?

Abbiamo pensato esattamente così quando ci siamo trovati di fronte alla sfida di moderare i contenuti degli utenti - immagini, testi e link. I nostri utenti caricano ogni giorno su Yula milioni di contenuti, e senza un'elaborazione automatica, moderare tutti questi dati manualmente è semplicemente irrealizzabile.

Pertanto, abbiamo utilizzato una piattaforma di moderazione già pronta, che nel frattempo i nostri colleghi di Odnoklassniki avevano portato a uno stato di 'quasi perfezione'.

Perché Odnoklassniki?

Ogni giorno, decine di milioni di utenti accedono al social network, pubblicando miliardi di contenuti: dalle foto ai video e ai testi. La piattaforma di moderazione di Odnoklassniki aiuta a controllare grandi volumi di dati e a contrastare spam e bot.

Il team di moderazione di OK ha accumulato una grande esperienza, poiché ottimizza il proprio strumento da 12 anni. È importante che non solo potessero condividere le loro soluzioni pronte, ma anche adattare l'architettura della loro piattaforma alle nostre esigenze specifiche.

Come moderiamo gli annunci

D'ora in poi, per brevità, ci riferiremo alla piattaforma di moderazione di OK semplicemente come 'piattaforma'.

Come funziona tutto

Tra Yula e Odnoklassniki, lo scambio di dati è organizzato tramite Apache Kafka.

Perché abbiamo scelto questo strumento:

  • In Yula, tutti gli annunci passano una moderazione posteriore, quindi inizialmente non era richiesta una risposta sincrona.
  • Se si verifica un'interruzione grave e Юла o Одноклассники diventano inaccessibili, anche a causa di picchi di carico, i dati da Kafka non andranno persi e potranno essere letti in seguito.
  • La piattaforma è già stata integrata con Kafka, quindi la maggior parte delle questioni relative alla sicurezza sono state risolte.

Come moderiamo gli annunci

Per ogni annuncio creato o modificato dall'utente su Юла, viene generato un JSON con i dati, che viene inviato a Kafka per la successiva moderazione. Dagli annunci in Kafka, vengono caricati nella piattaforma, dove le decisioni vengono prese automaticamente o manualmente. Gli annunci inadeguati vengono bloccati con una spiegazione, mentre quelli nei quali la piattaforma non ha trovato violazioni vengono contrassegnati come "buoni". Tutte le decisioni vengono poi restituite a Юла e applicate nel servizio.

Alla fine, per Юла si riduce a semplici operazioni: inviare un annuncio alla piattaforma Одноклассников e ricevere indietro la risoluzione "ok", o il motivo per cui non è "ok".

Elaborazione automatica

Cosa succede all'annuncio dopo che è stato inviato alla piattaforma? Ogni annuncio viene suddiviso in diverse entità:

  • titolo,
  • descrizione,
  • foto,
  • categoria e sottocategoria selezionate dall'utente,
  • prezzo.

Come moderiamo gli annunci

Successivamente, per ciascuna entità, la piattaforma esegue la clustering per identificare i duplicati. I testi e le fotografie vengono raggruppati secondo schemi diversi.

I testi vengono normalizzati prima del clustering per rimuovere caratteri speciali, lettere modificate e altri elementi indesiderati. I dati risultanti vengono suddivisi in N-grammi, ognuno dei quali viene hashato. Alla fine si ottiene un insieme di hash unici. La somiglianza tra i testi viene calcolata tramite la misura di Jaccard tra i due insiemi ottenuti. Se la somiglianza supera una certa soglia, i testi vengono uniti in un'unica cluster. Per velocizzare la ricerca di cluster simili, vengono utilizzati MinHash e hashing sensibile alla località.

Per le fotografie sono stati ideati vari metodi di fusione delle immagini, che spaziano dal confronto di immagini pHash fino alla ricerca di duplicati tramite reti neurali.

L'ultimo approccio è il più 'rigoroso'. Per addestrare il modello, sono state selezionate coppie di immagini (N, A, P) in cui N non è simile ad A, mentre P è simile ad A (è un semi-doppione). Successivamente, la rete neurale è stata addestrata a rendere A e P quanto più vicini possibile, mentre A e N quanto più distanti possibile. Questo porta a meno falsi positivi rispetto a prendere semplicemente le embeddings da una rete pre-addestrata.

Quando la rete neurale riceve le immagini in ingresso, genera un vettore N (128 dimensioni) per ciascuna di esse e fa una richiesta per valutare la somiglianza dell'immagine. Viene quindi calcolata una soglia, oltre la quale le immagini simili sono considerate duplicati.

Il modello è abile nel trovare spammer che fotografano deliberatamente lo stesso prodotto da angolazioni diverse per superare il confronto basato su pHash.

Come moderiamo gli annunciCome moderiamo gli annunci
Esempio di foto di spammer, unite dalla rete neurale come duplicati.

Nella fase finale, i duplicati degli annunci vengono cercati contemporaneamente sia nel testo che nelle immagini.

Se nel cluster si sovrappongono due o più annunci, il sistema avvia un blocco automatico, che secondo determinati algoritmi seleziona quali duplicati eliminare e quali mantenere. Ad esempio, se due utenti hanno foto identiche nell'annuncio, il sistema bloccherà l'annuncio più recente.

Dopo la creazione, tutti i cluster vengono sottoposti a una serie di filtri automatici. Ogni filtro assegna al cluster un punteggio (score): con quale probabilità contiene una minaccia identificata da quel filtro.

Ad esempio, il sistema analizza la descrizione dell'annuncio e seleziona per essa categorie potenziali. Poi prende quella con la massima probabilità e la confronta con la categoria indicata dall'autore dell'annuncio. Se non coincidono, l'annuncio viene bloccato per categoria errata. Poiché siamo gentili e onesti, comunichiamo direttamente all'utente quale categoria deve scegliere affinché l'annuncio venga moderato.

Come moderiamo gli annunci
Notifica di blocco per categoria errata.

Nella nostra piattaforma, il machine learning si sente a casa. Ad esempio, lo utilizziamo per cercare nei titoli e nelle descrizioni prodotti vietati in Russia. I modelli di reti neurali esaminano attentamente le immagini per verificare la presenza di URL, testi spam, numeri di telefono e, ancora una volta, articoli "vietati".

Per i casi in cui un prodotto vietato viene venduto mascherato da qualcosa di legale, e non ci sono testi né nel titolo né nella descrizione, utilizziamo il tagging delle immagini. Per ogni immagine possono essere assegnati fino a 11.000 diversi tag che descrivono ciò che appare nell'immagine.

Come moderiamo gli annunci
Si cerca di vendere un narghilè mascherandolo da samovar.

In parallelo ai filtri complessi, operano anche filtri semplici che risolvono problemi evidenti legati al testo:

  • linguaggio offensivo;
  • rilevatore di URL e numeri di telefono;
  • menzione di messenger e altri contatti;
  • prezzo troppo basso;
  • annunci in cui non si vende nulla, ecc.

Oggi ogni annuncio passa attraverso un piccolo setaccio di oltre 50 filtri automatici che cercano di individuare qualcosa di negativo nell'annuncio.

Se nessuno dei rilevatori è attivo, viene inviato a Yula un messaggio che l'annuncio è, «probabilmente», in perfette condizioni. Applichiamo questa risposta internamente, e gli utenti che si sono iscritti al venditore ricevono una notifica sull'arrivo di un nuovo prodotto.

Come moderiamo gli annunci
Notifica che il venditore ha un nuovo prodotto.

Di conseguenza, ogni annuncio è «arricchito» di metadati, parte dei quali viene generata al momento della creazione dell'annuncio (indirizzo IP dell'autore, user-agent, piattaforma, geolocalizzazione, ecc.), mentre il resto sono score forniti da ciascun filtro.

Code degli annunci

Quando un annuncio entra nella piattaforma, il sistema lo colloca in una delle code. Ogni coda è formata attraverso una formula matematica che combina i metadati dell'annuncio in modo da rilevare eventuali schemi problematici.

Ad esempio, è possibile creare una coda di annunci nella categoria «Cellulari» da utenti di Yula presumibilmente di San Pietroburgo, mentre i loro indirizzi IP provengono da Mosca o altre città.

Come moderiamo gli annunci
Esempio di annunci pubblicati da un singolo utente in diverse città.

Oppure è possibile creare code basate sui punteggi che la rete neurale assegna agli annunci, ordinandoli in base a valori decrescenti.

Ogni coda, secondo la propria formula, assegna un punteggio finale all'annuncio. Successivamente, si possono intraprendere diverse azioni:

  • specificare un valore soglia, al di sotto del quale l'annuncio subirà un determinato tipo di blocco;
  • inviare tutti gli annunci nella coda ai moderatori per una revisione manuale;
  • oppure combinare le opzioni precedenti: stabilire una soglia di blocco automatico e inviare ai moderatori quegli annunci che non hanno raggiunto tale soglia.

Come moderiamo gli annunci

A cosa servono queste code? Supponiamo che un utente carichi una foto di un'arma da fuoco. La rete neurale le assegna un punteggio da 95 a 100 e con una precisione del 99% identifica che nell'immagine c'è un'arma. Ma se il punteggio è inferiore al 95%, la precisione del modello inizia a diminuire (è una caratteristica dei modelli di reti neurali).

Di conseguenza, si forma una coda basata sul punteggio del modello, e quegli annunci che ricevono da 95 a 100 vengono bloccati automaticamente come "Merce vietata". Gli annunci con punteggi inferiori a 95 vengono inviati per una revisione manuale ai moderatori.

Come moderiamo gli annunci
Beretta di cioccolato con proiettili. Solo per moderazione manuale! 🙂

Moderazione manuale

All'inizio del 2019, circa il 94% di tutti gli annunci su Yula vengono moderati automaticamente.

Come moderiamo gli annunci

Se la piattaforma non riesce a decidere su alcuni annunci, li invia alla moderazione manuale. Classmates ha sviluppato uno strumento proprio: nelle assegnazioni per i moderatori viene visualizzata immediatamente tutta l'informazione necessaria per prendere una decisione rapida — se l'annuncio è valido o se deve essere bloccato con indicazione del motivo.

E affinché la qualità del servizio non ne risenta durante la moderazione manuale, il lavoro delle persone è costantemente monitorato. Ad esempio, nel flusso di assegnazioni, al moderatore vengono mostrati 'trampolini' — annunci per i quali esistono già soluzioni pronte. Se la decisione del moderatore non corrisponde a quella già pronta, gli viene segnata un'errore.

In media, un moderatore impiega 10 secondi per verificare un annuncio. Nel contempo, il numero di errori non supera lo 0,5% di tutti gli annunci controllati.

Moderazione popolare

I colleghi di Odnoklassniki sono andati oltre, utilizzando l'«aiuto della comunità»: hanno sviluppato un'app di gioco per i social media, in cui è possibile etichettare rapidamente un gran numero di dati, evidenziando qualche caratteristica negativa — Moderatore di Odnoklassniki (https://ok.ru/app/moderator). Un buon modo per sfruttare l'aiuto degli utenti di OK, che cercano di rendere i contenuti più gradevoli.

Come moderiamo gli annunci
Un gioco in cui gli utenti segnano le foto che contengono un numero di telefono.

Qualsiasi coda di annunci sulla piattaforma può essere reindirizzata al gioco Moderatore di Odnoklassniki. Tutto ciò che viene etichettato dagli utenti del gioco viene poi inviato ai moderatori interni per la verifica. Questo sistema consente di bloccare gli annunci per cui non sono ancora stati creati filtri, e al contempo creare campioni per l'addestramento.

Conservazione dei risultati della moderazione

Salviamo tutte le decisioni prese durante la moderazione, per non dover elaborare nuovamente gli annunci per cui è già stata presa una decisione.

Ogni giorno vengono creati milioni di cluster per gli annunci. Nel tempo, ogni cluster riceve un'etichetta di "buono" o "cattivo". Ogni nuovo annuncio o la sua modifica, entrando in un cluster con un'etichetta, riceve automaticamente la risoluzione del cluster stesso. In un giorno si accumulano circa 20.000 risoluzioni automatiche.

Come moderiamo gli annunci

Se un cluster non riceve nuovi annunci, viene rimosso dalla memoria e il suo hash e la risoluzione vengono registrati in Apache Cassandra.

Quando la piattaforma riceve un nuovo annuncio, prima cerca un cluster simile tra quelli già creati e prende da esso la risoluzione. Se un tale cluster non esiste, la piattaforma va in Cassandra e cerca lì. Trovato? Ottimo, applica la risoluzione al cluster e lo invia a Yula. Ogni giorno si accumulano in media 70.000 "risoluzioni ripetute" — l'8% del totale.

In sintesi

Utilizziamo la piattaforma di moderazione di Odnoklassniki da due anni e mezzo. I risultati ci piacciono:

  • Moderiamo automaticamente il 94% di tutti gli annunci in un giorno.
  • Il costo di moderazione di un annuncio è stato ridotto da 2 rubli a 7 kopechi.
  • Grazie a questo strumento pronto, ci siamo dimenticati dei problemi di gestione dei moderatori.
  • Abbiamo aumentato di 2,5 volte il numero di annunci trattati manualmente mantenendo lo stesso numero di moderatori e budget. Inoltre, la qualità della moderazione manuale è migliorata grazie al controllo automatizzato, oscillando attorno allo 0,5% di errori.
  • Copriamo rapidamente nuovi tipi di spam con filtri.
  • Connettiamo rapidamente nuove divisioni alla moderazione. «Yulа Verticali». Dal 2017, Yula ha introdotto verticali in Immobili, Offerte di lavoro e Auto.

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster