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

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

Lorsque votre travail consiste à créer quelque chose de beau, vous n’avez pas besoin d’en parler trop, car le résultat est sous les yeux de tous. Mais si vous effacez les inscriptions sur les clôtures, personne ne remarquera votre travail tant que les clôtures semblent correctes ou jusqu'à ce que vous effaciez quelque chose de mal.

Tout service permettant de laisser un commentaire, une critique, d'envoyer un message ou de télécharger des photos est tôt ou tard confronté au problème du spam, de la fraude et de l'obscénité. Cela ne peut être évité, mais il faut y faire face.

Je m'appelle Mikhail, je travaille dans l'équipe Antispam, qui protège les utilisateurs des services Yandex contre de tels problèmes. Notre travail est rarement remarqué (et c'est une bonne chose !), alors aujourd'hui je vais vous en parler davantage. Vous apprendrez quand la modération est inutile et pourquoi la précision n'est pas le seul indicateur de son efficacité. Nous parlerons également des jurons en prenant l’exemple des chats et des chiens et pourquoi il est parfois utile de « penser comme un juré ».

De plus en plus de services apparaissent dans Yandex où les utilisateurs publient leur contenu. Vous pouvez poser une question ou écrire une réponse dans Yandex.Q, discuter de l'actualité du chantier dans Yandex.District, partager les conditions de circulation dans des conversations sur Yandex.Maps. Mais lorsque l’audience du service augmente, il devient attrayant pour les escrocs et les spammeurs. Ils viennent remplir des commentaires : ils proposent de l'argent facile, annoncent des remèdes miracles et promettent des prestations sociales. À cause des spammeurs, certains utilisateurs perdent de l'argent, tandis que d'autres perdent l'envie de passer du temps sur un service négligé 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 également de créer une atmosphère de communication confortable. Si les gens sont confrontés à des jurons et à des insultes dans les commentaires, ils partiront probablement et ne reviendront jamais. Cela signifie que vous devez également être capable de gérer cela.

Web propre

Comme c'est souvent le cas chez nous, les premiers développements sont nés dans le Search, dans la partie qui lutte contre le spam dans les résultats de recherche. Il y a une dizaine d'années, la tâche de filtrer les contenus adultes pour les recherches familiales et pour les requêtes ne nécessitant pas de réponses de la catégorie 18+ est apparue. C'est ainsi qu'apparaissent les premiers dictionnaires de porno et de jurons saisis manuellement, ils ont été reconstitués par des analystes. La tâche principale consistait à classer les demandes selon lesquelles il est acceptable de montrer du contenu pour adultes et celles où cela ne l'est pas. Pour cette tâche, un balisage a été collecté, des heuristiques ont été construites et des modèles ont été formés. C’est ainsi qu’apparaissent les premiers développements pour filtrer les contenus indésirables.

Au fil du temps, l'UGC (contenu généré par l'utilisateur) a commencé à apparaître dans Yandex - des messages écrits par les utilisateurs eux-mêmes et que Yandex publie uniquement. Pour les raisons décrites ci-dessus, de nombreux messages ne pouvaient pas être publiés sans vérification – une modération était nécessaire. Ensuite, ils ont décidé de créer un service qui assurerait une protection contre le spam et les attaquants pour tous les produits Yandex UGC et d'utiliser des développements pour filtrer le contenu indésirable dans la recherche. Le service s’appelait « Clean Web ».

Nouvelles tâches et aide des pousseurs

Au début, seule une simple automatisation fonctionnait pour nous : les services nous envoyaient des textes et nous y utilisions des dictionnaires d'obscénités, des dictionnaires pornographiques et des expressions régulières - les analystes compilaient tout manuellement. Mais au fil du temps, le service a été utilisé dans un nombre croissant de produits Yandex et nous avons dû apprendre à travailler avec de nouveaux problèmes.

Souvent, au lieu d'un avis, les utilisateurs publient un ensemble de lettres dénuées de sens, essayant d'augmenter leurs réalisations, parfois ils font la publicité de leur entreprise dans les avis d'une entreprise concurrente, 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 à saisir parfaitement le sens de n'importe quel texte, mais aujourd'hui, l'automatisation s'en sort parfois moins bien que l'homme.

Il est devenu évident que nous ne pouvions pas y parvenir sans marquage manuel, et nous avons ajouté une deuxième étape à notre circuit : l'envoyer pour inspection manuelle par une personne. Les textes publiés pour lesquels le classificateur n'a vu aucun problème y ont été inclus. Vous pouvez facilement imaginer l'ampleur d'une telle tâche, c'est pourquoi nous nous sommes non seulement appuyés sur des évaluateurs, mais avons également profité de la « sagesse de la foule », c'est-à-dire que nous nous sommes tournés vers les tolokers pour obtenir de l'aide. Ce sont eux qui nous aident à identifier ce que la machine a manqué et ainsi à lui apprendre.

Mise en cache intelligente et hachage LSH

Un autre problème que nous avons rencontré lorsque nous travaillions avec les commentaires était le spam, ou plus précisément son volume et sa vitesse de propagation. Lorsque l'audience de Yandex.Region a commencé à croître rapidement, les spammeurs sont venus là-bas. Ils ont appris à contourner les expressions régulières en modifiant légèrement le texte. Le spam, bien sûr, était toujours trouvé et supprimé, mais à l'échelle de Yandex, un message inacceptable posté même pendant 5 minutes pouvait être vu par des centaines de personnes.

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

Bien sûr, cela ne nous convenait pas et nous avons créé une mise en cache de texte intelligente basée sur LSH (hachage sensible à la localité). Cela fonctionne comme ceci : nous avons normalisé le texte, supprimé les liens et l'avons découpé en n-grammes (séquences de n lettres). Ensuite, les hachages de n-grammes ont été calculés et le vecteur LSH du document a été construit à partir d'eux. Le fait est que des textes similaires, même s'ils ont été légèrement modifiés, se sont transformés en vecteurs similaires.

Cette solution a permis de réutiliser les verdicts des classificateurs et des tolokers pour des textes similaires. Lors d'une attaque de spam, dès que le premier message passait l'analyse et entrait dans le cache avec un verdict « spam », tous les nouveaux messages similaires, même modifiés, recevaient le même verdict et étaient automatiquement supprimés. Plus tard, nous avons appris à entraîner et à recycler automatiquement les classificateurs de spam, mais ce « cache intelligent » est resté avec nous et nous aide encore souvent.

Bon classificateur de texte

Sans avoir le temps de faire une pause dans la lutte contre le spam, nous nous sommes rendu compte que 95 % de nos contenus sont modérés manuellement : les classificateurs ne réagissent qu'aux violations, et la plupart des textes sont bons. Nous chargeons des nettoyeurs qui, dans 95 cas sur 100, donnent la note « Tout va bien ». J'ai dû faire un travail inhabituel : créer des classificateurs de bon contenu, heureusement suffisamment de balisage s'était accumulé pendant cette période.

Le premier classificateur ressemblait à ceci : nous lemmatisons le texte (réduisons les mots à leur forme initiale), supprimons toutes les parties auxiliaires du discours et utilisons un « dictionnaire des bons lemmes » préparé à l'avance. Si tous les mots du texte sont « bons », alors l’ensemble du texte ne contient aucune violation. Sur différents services, cette approche a immédiatement donné de 25 à 35 % d'automatisation du balisage manuel. 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 offensante, mais elle nous a permis d'atteindre rapidement un bon niveau d'automatisation et nous a donné le temps d'entraîner des modèles plus complexes.

Les versions suivantes des bons classificateurs de texte incluaient déjà des modèles linéaires, des arbres de décision et leurs combinaisons. Pour marquer les impolitesses et les insultes, par exemple, nous essayons le réseau de neurones BERT. Il est important de saisir la signification d'un mot dans son contexte et le lien entre les mots de différentes phrases, et BERT fait du bon travail dans ce domaine. (Au fait, récemment, des collègues de News dit, comment la technologie est utilisée pour une tâche non standard - rechercher des erreurs dans les en-têtes.) En conséquence, il a été possible d'automatiser jusqu'à 90 % du flux, selon le service.

Précision, exhaustivité et rapidité

Pour vous développer, vous devez comprendre quels avantages apportent certains classificateurs automatiques, quels sont leurs changements et si la qualité des contrôles manuels se dégrade. Pour ce faire, nous utilisons des métriques de précision et de rappel.

L'exactitude est la proportion de verdicts corrects parmi tous les verdicts concernant un mauvais contenu. Plus la précision est élevée, moins il y a de faux positifs. Si vous ne faites pas attention à l’exactitude, vous pouvez en théorie supprimer tous les spams et obscénités, ainsi que la moitié des bons messages. D’un autre côté, si vous comptez uniquement sur la précision, la meilleure technologie sera celle qui n’attrape personne du tout. Il existe donc également un indicateur d’exhaustivité : la part des mauvais contenus identifiés dans le volume total des mauvais contenus. Ces deux mesures s’équilibrent.

Pour mesurer, 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 machines.

Mais il existe un autre indicateur important.

J'ai écrit plus haut qu'un message inacceptable peut être vu par des centaines de personnes même en 5 minutes. Nous comptons donc combien de fois nous avons montré aux gens du mauvais contenu avant de le cacher. Ceci est important car il ne suffit pas de travailler efficacement, il faut aussi travailler rapidement. Et lorsque nous avons construit une défense contre les jurons, nous l’avons pleinement ressenti.

L'antimatisme à l'exemple des chats et des chiens

Une petite digression lyrique. Certains pourraient dire que les obscénités et les insultes ne sont pas aussi dangereuses que les liens malveillants, ni aussi ennuyeuses que le spam. Mais nous nous efforçons de maintenir des conditions de communication confortables pour des millions d'utilisateurs, et les gens n'aiment pas retourner dans des endroits où ils sont insultés. Ce n’est pas pour rien que l’interdiction des jurons et des insultes est inscrite dans les règles de nombreuses communautés, y compris chez Habré. Mais nous nous éloignons.

Les dictionnaires jurés ne peuvent pas faire face à toute la richesse de la langue russe. Malgré le fait qu'il n'y ait que quatre racines principales de jurons, vous pouvez composer à partir d'elles un nombre incalculable de mots qui ne peuvent être captés par aucun moteur ordinaire. De plus, vous pouvez écrire une partie d'un mot en translittération, remplacer des lettres par des combinaisons similaires, réorganiser les lettres, ajouter des astérisques, etc. Parfois, sans contexte, il est fondamentalement impossible de déterminer que l'utilisateur voulait dire un gros mot. Nous respectons les règles de Habr, nous le démontrerons donc non pas avec des exemples réels, mais avec des chats et des chiens.

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

"La loi", dit le chat. Mais on comprend que le chat a dit un mot différent...

Nous avons commencé à réfléchir à des algorithmes de « correspondance floue » pour notre dictionnaire et à un prétraitement plus intelligent : nous avons fourni la translittération, collé les espaces et la ponctuation ensemble, recherché des modèles et écrit des expressions régulières distinctes dessus. Cette approche a donné des résultats, mais a souvent réduit la précision et n'a pas fourni l'exhaustivité souhaitée.

Nous avons alors décidé de « penser comme des jurons ». Nous avons commencé à introduire nous-mêmes du bruit dans les données : nous avons réorganisé les lettres, généré des fautes de frappe, remplacé les lettres par des orthographes similaires, etc. Le balisage initial a été réalisé en appliquant des dictionnaires mats à de grands corpus de textes. Si vous prenez une phrase et la modifiez de plusieurs manières, vous obtenez plusieurs phrases. De cette façon, vous pouvez augmenter l'échantillon d'entraînement des dizaines de fois. Il ne restait plus qu'à former sur le pool obtenu un modèle plus ou moins intelligent tenant compte du contexte.

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

Il est trop tôt pour parler de la décision finale. Nous expérimentons encore des approches de ce problème, mais nous pouvons déjà voir qu'un simple réseau convolutif symbolique de plusieurs couches surpasse considérablement les dictionnaires et les moteurs classiques : il est possible d'augmenter à la fois la précision et le rappel.

Bien sûr, nous comprenons qu’il y aura toujours moyen de contourner l’automatisation la plus avancée, surtout lorsque l’affaire est si dangereuse : écrivez de telle manière qu’une machine stupide ne comprendra pas. Ici, comme dans la lutte contre le spam, notre objectif n'est pas d'éradiquer la possibilité même d'écrire quelque chose d'obscène ; notre tâche est de nous assurer que le jeu n'en vaut pas la chandelle.

Ouvrir la possibilité de partager votre opinion, de communiquer et de commenter n’est pas difficile. Il est beaucoup plus difficile d’instaurer des conditions de sécurité et de confort et un traitement respectueux des personnes. Et sans cela, aucune communauté ne pourra se développer.

Source: habr.com

Ajouter un commentaire