Avec cet article, nous commençons la publication d'une série d'articles sur la science des données, les tâches que nous résolvons au Centre pour le développement des technologies financières de la Banque agricole russe.
L'année dernière, la Rosselkhozbank a annoncé la création et le développement d'un écosystème pour les entreprises du complexe agro-industriel. Pour l'un des sites de base de l'écosystème - Notre agriculture, nous avons décidé de faire quelques tâches utiles, dont nous discuterons ci-dessous.
Le site de Svoe Farmezstvo est une place de marché de produits pour les producteurs agricoles des plus grands fournisseurs de toute la Russie. Le site comprend des produits des catégories les plus prioritaires pour les agriculteurs: produits phytopharmaceutiques, engrais, semences, machines agricoles, etc. Des milliers de fournisseurs téléchargent des informations sur leurs produits dans le but de vendre. Et, bien sûr, vous devez mettre en œuvre un processus de vérification de la qualité du contenu que vous téléchargez. À cet égard, nous avons décidé de créer notre propre outil de pré-modération des informations textuelles et graphiques.
Que faisaient-ils?
Dans cet article, nous vous expliquerons comment, en coopération avec le laboratoire MIPT, spécialement créé pour les missions de la Banque, nous avons développé un outil qui vous permet de pré-modérer le contenu textuel avec une grande précision.
Notre objectif semblait assez simple - l'outil que nous avons créé devrait automatiquement classer le texte comme acceptable pour le placement sur le site (classe 0) ou inacceptable (classe 1). Si l'algorithme ne peut pas comprendre clairement à quelle classe appartient le texte, nous l'envoyons (le texte) pour une modération manuelle.
Nous avons la tâche du traitement de texte: nous voulons filtrer les textes qui sont «toxiques» dans tous les sens, à savoir: les malédictions, les insultes, les contenus divers interdits par la loi, et uniquement les textes dont le placement sur le site est inacceptable.
Nous prévoyons que l'algorithme que nous avons développé prendra un ensemble de textes en entrée et produira un nombre de 0 à 1 - le degré ou la probabilité que le texte soit «toxique». Plus ce nombre est proche de un, plus le commentaire est toxique.
Il est à noter que le problème de la détection des textes toxiques n'est pas du tout nouveau et est assez populaire dans le segment anglophone. Il y a plusieurs années, un problème similaire a été résolu dans le défi de classification des commentaires toxiques sur Kaggle. Pour la langue russe, la solution doit être obtenue de la même manière, mais la qualité du modèle peut s'avérer inférieure en raison du fait que la langue russe est structurellement plus compliquée que l'anglais.
Il n'y a qu'un seul ensemble de données balisé en russe dans le domaine publicrechercher la toxicité dans le texte. Nous avons également réussi à trouver un ensemble de données pour la recherche d'insultes (un cas particulier de toxicité). De plus, nous avons rassemblé des exemples d'annonces provenant de portails agricoles et les avons marquées comme acceptables (classe - 0).
La tâche que nous nous sommes fixée s'est avérée tout à fait unique en termes de thème agricole donné. Sa spécificité réside dans le fait que les phrases qui dans la vie quotidienne sont des insultes ne le sont pas toujours lorsqu'il s'agit d'agriculture. Les exemples suivants peuvent être cités à partir d'exemples courants: «Ne mâchez pas votre museau» - le texte est clairement inacceptable, tandis que le texte avec «museau de cochon» peut être placé sur le site (bien que cela dépende du contexte). Il en va de même pour certaines sous-espèces d'animaux et de plantes d'élevage.
Si nous parlons de résoudre de tels problèmes de classification de texte, alors, en fait, même les modèles les plus simples (linéaires) donnent déjà de bons résultats . Mais, comme toujours, pour atteindre une qualité supérieure, nous utiliserons des réseaux de neurones. L'architecture la plus populaire (au moment d'écrire ces lignes) pour résoudre de tels problèmes est BERT. Au moment du concours Kaggle mentionné ci-dessus, cette architecture n'existait pas, donc d'autres ont été utilisées. Cependant, plus tard, cette tâche a été résolue avec succès avec l'aide de BERT.
Comment avez-vous fait?
Passons à la partie la plus intéressante - résoudre le problème. Après avoir réfléchi un peu à «l'architecture» de l'outil, nous avons décidé d'utiliser trois modèles: la recherche dans le dictionnaire (comme filtre pour le vocabulaire obscène), la régression logistique (comme solution de base) et BERT (comme solution plus avancée).
Schéma général
Le schéma général de la solution ressemble à ceci: à l'intérieur de la «boîte noire» le texte entre d'abord dans le classificateur naïf, qui est basé sur un dictionnaire de mots obscènes (jurons), ici les textes contenant de «mauvais» mots sont immédiatement coupés (leur toxicité est toujours égale à un ( 1). Les textes qui ont passé la première étape tombent dans un modèle de réseau de neurones plus complexe, qui donne le degré de leur toxicité. En cas de défaillance du modèle de réseau de neurones, il est remplacé par un plus simple - la régression logistique. Autrement dit, nous obtiendrons un résultat non naïf dans tous les cas .
maintenant , regardons chaque composant en détail.
Classificateur naĂŻf
Tout est assez simple ici: selon le dictionnaire de vocabulaire obscène, il est assez facile de comprendre si le texte contient tel ou tel «mauvais» mot ou non.
Autrement dit, à ce stade, vous pouvez même vous passer du modèle ML en tant que tel et éliminer immédiatement les textes contenant de «mauvais» mots. Mais que se passe-t-il si de tels mots du dictionnaire ne sont pas utilisés dans le texte, mais que le texte est néanmoins inacceptable pour publication sur le portail? Essayons de résoudre ce problème en utilisant la régression logistique et BERT'a.
RĂ©gression logistique
Le modèle le plus simple permet de prédire une valeur basée sur les données disponibles. Les vecteurs de texte pour ce modèle sont obtenus en utilisant TF-IDF et TweetTokenizer de nltk. Un tel modèle, comme on le sait, permet d'estimer la probabilité de toxicité du texte à l'aide d'une fonction logistique. Dans notre architecture, la régression logistique «assure» le réseau de neurones.
Grand et terrible BERT
Nous avons utilisé le modèle RuBert pré- formé de DeepPavlov, que nous avons ensuite formé sur les textes balisés. Le processus de prédiction, sans entrer dans les détails, est le suivant:
Nous avons construit, construit et finalement construit!
Nous avons évalué la qualité à l'aide de nos mesures préférées Précision, ROC-AUC et F1-mesure. Les mesures de qualité finales sur l'échantillon différé sont les suivantes:
Algorithme / métrique
|
NaĂŻve
|
BERT
|
G / D
|
Naïf → BERT
|
Naïf → LR
|
Précision
|
0,854
|
0,901
|
0,865
|
0,909
|
0,879
|
ROC-AUC
|
0,782
|
0,960
|
0,921
|
0,963
|
0,939
|
Mesure F1
|
0,722
|
0,840
|
0,800
|
0,855
|
0,824
|
Vitesse de fonctionnement: ~ 2800 textes par minute sur GPU (GeForce 1080Ti) en cas de traitement BERT comme algorithme le plus lent parmi ceux présentés.
Comme prévu, les métriques avec BERT se sont avérées légèrement meilleures, mais pas beaucoup.
Quelles conclusions avons-nous tirées
En conclusion, je voudrais relever plusieurs aspects importants, sans lesquels, Ă notre avis, il est impossible de lancer de telles solutions en mode industriel.
- Vous devez toujours prendre en compte les spécificités de la tâche concernant le balisage des textes.
- Il est nécessaire de prévoir une modération manuelle du texte, dans le cas où le modèle «doute» de sa décision. Vous ne voulez pas qu'un contenu inapproprié se retrouve dans votre produit.
- Il est également nécessaire d'envoyer les textes marqués à la main du paragraphe précédent pour une formation supplémentaire. Ainsi, vous pouvez améliorer le modèle par petites étapes et réduire la quantité de travail pendant la modération manuelle au fil du temps.
- Il est préférable d'utiliser une approche intégrée pour résoudre le problème. Parfois, même les «modèles» les plus simples des dictionnaires donnent déjà de bons résultats.
- Choisissez le meilleur modèle en fonction de votre tâche. Dans notre cas, nous avons choisi BERT car il réagit mieux au contexte que la régression logistique.
Merci de votre attention!
Dans le prochain article, nous partagerons notre expérience en pré-modération d'images le tout sur la même plateforme de notre écosystème - Our Farming.