Comment ouvrir des commentaires et ne pas se noyer dans le spam



Lorsque votre travail consiste à créer quelque chose de beau, vous ne pouvez surtout pas en parler, car le résultat est devant tout le monde. Mais si vous effacez les inscriptions des clôtures, personne ne remarque votre travail jusqu'à ce que les clôtures soient décentes ou jusqu'à ce que vous effaciez quelque chose de mal.

Tout service où vous pouvez laisser un commentaire, un avis, envoyer un message ou télécharger des photos, est tôt ou tard confronté au problème du spam, de la fraude et du langage obscène. Cela ne peut être évité, mais cela doit être combattu.

Mon nom est Mikhail, je travaille dans l'équipe Anti-Spam, qui protège les utilisateurs des services Yandex de tels problèmes. Notre travail est rarement perceptible (et bon!), Donc aujourd'hui j'en parlerai plus en détail. Vous découvrirez dans quels cas la modération est inutile et pourquoi la précision n'est pas le seul indicateur de son efficacité. Nous parlerons également du compagnon en utilisant l'exemple des chats et des chiens et pourquoi il est parfois utile de "penser comme un escroc".

Dans Yandex, il y a de plus en plus de services où les utilisateurs publient leur contenu. Vous pouvez poser une question ou écrire une réponse dans Yandex.Kew, discuter de l'actualité du chantier à Yandex.Rayon, partager la situation du trafic dans les conversations sur Yandex.Maps. Mais lorsque le public des services augmente, il devient attrayant pour les escrocs et les spammeurs. Ils viennent remplir les commentaires: ils offrent de l'argent facile, annoncent des fonds miraculeux et promettent des avantages sociaux. En raison des spammeurs, certains utilisateurs perdent de l'argent, tandis que d'autres perdent le désir de passer du temps sur un service peu soigné et envahi par le spam.

Et ce n'est pas le seul problème. Nous nous efforçons non seulement de protéger les utilisateurs contre les fraudeurs, mais aussi de créer une atmosphère confortable pour la communication. Si les personnes dans les commentaires rencontrent un langage obscène et des insultes, elles sont très susceptibles de partir et de ne jamais revenir. Donc, cela doit également pouvoir se battre.

Web propre


Comme cela arrive souvent chez nous, les premiers développements sont nés dans la Recherche, dans la partie qui combat le spam dans les résultats de recherche. Il y a dix ans, il est apparu la tâche de filtrer le contenu pour adultes pour les recherches familiales et pour les requêtes qui n'impliquent pas de réponses de la catégorie 18+. Ainsi, les premiers dictionnaires de porno et de tapis tapés manuellement sont apparus, ils ont été réapprovisionnés par les analystes. La tâche principale consistait à classer les demandes dans celles où le contenu réservé aux adultes est acceptable ou non. Pour cette tâche, un balisage a été collecté, des heuristiques ont été construites, des modèles ont été formés. Les premiers développements sont donc apparus pour filtrer les contenus inappropriés.

Au fil du temps, Yandex a commencé à apparaître UGC (contenu généré par l'utilisateur) - des messages qui sont écrits par les utilisateurs eux-mêmes, et Yandex ne publie que. Pour les raisons décrites ci-dessus, de nombreux messages ne pouvaient pas être publiés sans recherche - une modération était requise. Nous avons ensuite décidé de créer un service qui fournirait une protection contre le spam et les cybercriminels pour tous les produits Yandex UGC et utiliser les meilleures pratiques pour filtrer le contenu inapproprié dans la recherche. Le service s'appelait Clean Web.

De nouvelles tâches et aider les tolokers


Au début, seule une automatisation simple fonctionnait pour nous: les services nous envoyaient des textes, et nous y exécutions des dictionnaires mat, du porno et des dictionnaires réguliers - les analystes faisaient tout manuellement. Mais au fil du temps, le service a été utilisé dans un nombre croissant de produits Yandex, et nous avons dû apprendre à gérer de nouveaux problèmes.

Souvent, au lieu de se rappeler, les utilisateurs publient un ensemble de lettres dénuées de sens, essayant de conclure leurs réalisations, annoncent parfois leur entreprise dans les avis sur l'entreprise d'un concurrent, et parfois ils confondent simplement les organisations et écrivent dans un avis sur une animalerie: «Du poisson parfaitement cuit!». Peut-être qu'un jour l'intelligence artificielle apprendra à capturer parfaitement le sens de n'importe quel texte, mais maintenant l'automatisation fait parfois pire que les humains.

Il est devenu clair que l'on ne pouvait pas se passer de marquage manuel, et nous avons ajouté la deuxième étape à notre circuit - l'envoyer pour inspection manuelle par une personne. Il y avait ces textes publiés pour lesquels le classificateur ne voyait pas de problèmes. Vous pouvez facilement imaginer l’ampleur d’une telle tâche. Par conséquent, non seulement nous nous sommes appuyés sur des évaluateurs, mais nous avons également utilisé la «sagesse de la foule», c’est-à-dire que nous avons demandé l’aide de tolokers. Ce sont eux qui nous aident à identifier ce que la machine a manqué, et donc à l'enseigner.

Mise en cache intelligente et hachage LSH


Un autre problème que nous avons rencontré lors de l'utilisation de commentaires est le spam, ou plutôt son volume et sa vitesse de distribution. Lorsque le public de Yandex.Ryon a commencé à croître rapidement, des spammeurs sont venus. Ils ont appris à contourner les habitués en modifiant légèrement le texte. Le spam, bien sûr, était toujours trouvé et supprimé, mais des centaines de personnes pouvaient voir un message inacceptable même pendant 5 minutes sur une échelle Yandex.



Bien sûr, cela ne nous convenait pas, et nous avons fait une mise en cache intelligente des textes basée sur LSH ( hachage sensible à la localité)) Cela fonctionne comme ceci: nous avons normalisé le texte, en avons jeté des liens et l'avons coupé en n-grammes (séquences de n lettres). De plus, les hachages de n-grammes ont été pris en compte et le vecteur LSH du document était déjà construit sur eux. Le fait est que des textes similaires, même s'ils ont un peu changé, se sont transformés en vecteurs similaires.

Cette décision a permis de réutiliser les verdicts des classificateurs et des jetons pour des textes similaires. Dans une attaque de spam, dès que le premier message a passé le contrôle et est entré dans le cache avec le verdict «spam», tous les nouveaux messages similaires, même modifiés, ont reçu le même verdict et ont été supprimés automatiquement. Plus tard, nous avons appris à former et à recycler automatiquement les classificateurs de spam, mais ce «cache intelligent» est resté avec nous et nous aide toujours beaucoup.

Classificateur de bons textes


N'ayant pas le temps de faire une pause dans la lutte contre le spam, nous avons réalisé que 95% de notre contenu est modéré manuellement: les classificateurs ne répondent qu'aux violations, et la plupart des textes sont bons. Nous chargeons les tolokers, qui dans 95 cas sur 100 attribuent la note «Tout va bien». J'ai dû faire un travail inhabituel - pour faire des classificateurs de bon contenu, les avantages du balisage pour cette période se sont suffisamment accumulés.

Le premier classificateur ressemblait à ceci: nous lemmatisons le texte (nous réduisons les mots à la forme initiale), jetons toutes les parties utiles du discours et utilisons le «dictionnaire de bons lemmes» pré-préparé. Si tous les mots sont «bons» dans le texte, alors le texte entier ne contient pas de violations. Sur différents services, cette approche a immédiatement donné de 25 à 35% d'automatisation manuelle du balisage. Bien sûr, cette approche n'est pas idéale: il est facile de combiner plusieurs mots innocents et d'obtenir une déclaration très offensive, mais elle nous a permis d'atteindre rapidement un bon niveau d'automatisation et a donné le temps de former des modèles plus complexes.

Les versions suivantes des classificateurs de bons textes incluaient déjà des modèles linéaires, des arbres de décision et leurs combinaisons. Pour marquer l'impolitesse et les insultes, par exemple, nous essayons le réseau neuronal BERT. Ici, il est important de saisir le sens du mot dans son contexte et la connexion des mots de différentes phrases, et BERT fait un bon travail à cet égard. (Soit dit en passant, récemment, des collègues des News ont expliqué comment ils utilisent la technologie pour une tâche non standard - pour rechercher des erreurs dans les en-têtes.) En conséquence, nous avons réussi à automatiser jusqu'à 90% du flux en fonction du service.

Précision, exhaustivité et rapidité


Pour se développer, vous devez comprendre quels types de classificateurs automatiques apportent des avantages, les modifier, et aussi si la qualité des contrôles manuels ne se dégrade pas. Pour cela, nous utilisons des indicateurs de précision et d'exhaustivité.

La précision est la proportion de verdicts corrects parmi tous les verdicts de mauvais contenu. Plus la précision est élevée, moins il y a de faux positifs. Si vous ne respectez pas l'exactitude, vous pouvez en théorie supprimer tous les spams et obscénités, et avec eux la moitié des bons messages. D'un autre côté, si vous ne comptez que sur la précision, la meilleure technologie sera celle qui n'attrapera personne. Par conséquent, il existe également un indicateur de complétude: la proportion de mauvais contenu détecté par rapport au volume total de mauvais contenu. Ces deux mesures s'équilibrent.

Pour la mesure, nous échantillonnons l'intégralité du flux entrant pour chaque service et donnons des échantillons de contenu aux évaluateurs pour une évaluation experte et une comparaison avec les solutions de la machine.

Mais il y a un autre indicateur important.

J'ai écrit ci-dessus que des centaines de personnes peuvent voir un message inacceptable même en 5 minutes. Par conséquent, nous considérons combien de fois nous avons réussi à montrer aux gens du mauvais contenu avant de le cacher. Ceci est important, car il ne suffit pas de travailler efficacement - vous devez travailler rapidement. Et quand nous avons construit la défense contre le tapis, nous l'avons pleinement ressentie.

Antimat sur l'exemple des chatons et des chiens


Une légère digression lyrique. Quelqu'un peut dire que les jurons et les insultes ne sont pas aussi dangereux que les liens malveillants et pas aussi ennuyeux que le spam. Mais nous nous efforçons de maintenir un environnement confortable pour la communication entre des millions d'utilisateurs, et les gens n'aiment pas retourner là où ils sont offensés. Pas étonnant que l'interdiction du langage obscène et des insultes soit énoncée dans les règles de nombreuses communautés, y compris sur Habré. Mais nous étions distraits.

Les dictionnaires Mata ne font pas face à toutes les richesses de la langue russe. Malgré le fait qu'il n'y a que quatre racines obscènes principales, vous pouvez en faire une myriade de mots que vous ne pouvez pas attraper par les habitués. De plus, vous pouvez écrire en translittération une partie d'un mot, remplacer des lettres par des combinaisons similaires, réorganiser des lettres, ajouter des étoiles, etc. Parfois, sans contexte, il est pratiquement impossible de déterminer ce que l'utilisateur entend par un mot obscène. Nous respectons les règles de Habr, par conséquent, nous le démontrerons non pas sur des exemples vivants, mais sur des phoques et des chiens.



"Lyau", dit le chat. Mais on comprend que le chat a dit un autre mot ...

Nous avons commencé à réfléchir aux algorithmes de «mise en correspondance floue» de notre vocabulaire et à un prétraitement plus intelligent: translittéré, espaces collés et ponctuation, recherché des modèles et écrit des habitués distincts à leur sujet. Cette approche a donné des résultats, mais souvent réduit la précision, sans donner l'exhaustivité souhaitée.

Puis nous avons décidé de "penser comme des jurons". Nous avons nous-mêmes commencé à introduire du bruit dans les données: réorganisé les lettres, généré des fautes de frappe, remplacé les lettres par une orthographe similaire, etc. Le balisage initial pour cela a été pris en appliquant des dictionnaires mat à un grand corps de textes. Si vous prenez une phrase et la déformez de plusieurs manières, vous aurez déjà plusieurs phrases. Vous pouvez donc augmenter l'échantillon d'entraînement des dizaines de fois. Il ne restait plus qu'à former sur un bassin reçu un modèle plus ou moins intelligent prenant en compte le contexte.



Il est trop tôt pour parler de la décision finale. Nous expérimentons toujours des approches à ce problème, mais nous constatons déjà qu'un simple réseau de convolution symbolique de plusieurs couches dépasse considérablement les dictionnaires et les habitués: il s'avère augmenter à la fois la précision et l'exhaustivité.

Bien sûr, nous comprenons qu'il existe toujours des moyens de contourner même l'automatisation la plus avancée, surtout quand elle est si téméraire: écrire pour qu'une machine stupide ne comprenne pas. Ici, comme dans la lutte contre le spam, nous n'avons pas pour but d'éradiquer la possibilité même d'écrire quelque chose d'obscène, notre tâche est de faire en sorte que le jeu n'en vaille pas la chandelle.

Il est facile d'ouvrir l'opportunité de partager votre opinion, de communiquer et de commenter. Il est beaucoup plus difficile de parvenir à un environnement sûr et confortable et au respect des personnes. Et sans cela, aucune communauté ne se développera.

All Articles