Mit diesem Artikel beginnen wir mit der Veröffentlichung einer Reihe von Artikeln über Data Science, die Aufgaben, die wir im Zentrum für die Entwicklung von Finanztechnologien der Russischen Landwirtschaftsbank lösen.
Im vergangenen Jahr kündigte die Rosselkhozbank die Schaffung und Entwicklung eines Ökosystems für Unternehmen im agroindustriellen Komplex an. Für einen der grundlegenden Standorte des Ökosystems - Unsere Landwirtschaft - haben wir uns entschlossen, einige nützliche Aufgaben zu erledigen, die wir weiter unten diskutieren werden.
Der Standort Svoe Farmezstvo ist ein Marktplatz für Waren für landwirtschaftliche Erzeuger der größten Lieferanten aus ganz Russland. Die Website umfasst Waren der Kategorien mit der höchsten Priorität für Landwirte: Pflanzenschutzmittel, Düngemittel, Saatgut, landwirtschaftliche Maschinen usw. Tausende Lieferanten laden zum Verkauf Informationen über ihre Produkte hoch. Und natürlich müssen Sie einen Prozess implementieren, um die Qualität der heruntergeladenen Inhalte zu überprüfen. In diesem Zusammenhang haben wir uns entschlossen, ein eigenes Tool zur Vormoderation von Text- und Grafikinformationen zu erstellen.
Was machten sie?
In diesem Artikel werden wir Ihnen sagen , wie, in Zusammenarbeit mit dem MIPT Laboratory, speziell geschaffen für die Aufgaben der Bank haben wir ein Tool entwickelt , das Sie Inhalte mit hohen Genauigkeit vorzunehmen moderaten Text erlaubt.
Unser Ziel klang recht einfach: Das von uns erstellte Tool sollte den Text automatisch als für die Platzierung auf der Site akzeptabel (Klasse 0) oder nicht akzeptabel (Klasse 1) klassifizieren. Wenn der Algorithmus nicht klar verstehen kann, zu welcher Klasse der Text gehört, senden wir ihn (den Text) zur manuellen Moderation.
Wir haben die Aufgabe der Textverarbeitung: Wir möchten Texte filtern, die in jeder Hinsicht „giftig“ sind, nämlich Flüche, Beleidigungen, verschiedene gesetzlich verbotene Inhalte und einfach Text, der für die Platzierung auf der Website nicht akzeptabel ist.
Wir erwarten, dass der von uns entwickelte Algorithmus eine Reihe von Texten als Eingabe verwendet und eine Zahl von 0 bis 1 erzeugt - der Grad oder die Wahrscheinlichkeit, dass der Text „toxisch“ ist. Je näher diese Zahl an eins liegt, desto giftiger ist der Kommentar.
Es ist anzumerken, dass das Problem der Erkennung toxischer Texte überhaupt nicht neu ist und im englischsprachigen Bereich sehr beliebt ist. Vor einigen Jahren wurde ein ähnliches Problem bei der Toxic Comment Classification Challenge auf Kaggle gelöst. Für die russische Sprache sollte die Lösung auf ähnliche Weise erhalten werden, aber die Qualität des Modells kann sich als geringer herausstellen, da die russische Sprache strukturell komplizierter als die englische ist.
Es gibt nur einen markierten russischsprachigen Datensatz im öffentlichen Bereichim Text nach Toxizität suchen. Es ist uns auch gelungen, einen Datensatz für die Suche nach Beleidigungen zu finden (ein Sonderfall der Toxizität). Außerdem haben wir Anzeigenbeispiele von landwirtschaftlichen Portalen gesammelt und als akzeptabel markiert (Klasse - 0).
Die von uns gestellte Aufgabe erwies sich in Bezug auf das jeweilige landwirtschaftliche Thema als ziemlich einzigartig. Seine Besonderheit liegt in der Tatsache, dass Sätze, die im Alltag Beleidigungen sind, in der Landwirtschaft nicht immer so sind. Folgendes kann aus alltäglichen Beispielen angeführt werden: „Steck deine Schnauze nicht fest“ - der Text ist eindeutig inakzeptabel, während der Text mit „Schweineschnauze“ auf der Website platziert werden kann (obwohl dies vom Kontext abhängt). Gleiches gilt für bestimmte Unterarten von Nutztieren und Pflanzen.
Wenn wir über die Lösung solcher Probleme der Textklassifizierung sprechen, dann liefern sogar die einfachsten Modelle (linear) bereits gute Ergebnisse . Um jedoch eine höhere Qualität zu erzielen, werden wir wie immer neuronale Netze verwenden. Die beliebteste Architektur (zum Zeitpunkt dieses Schreibens) zur Lösung solcher Probleme ist BERT. Zum Zeitpunkt des oben erwähnten Kaggle-Wettbewerbs existierte diese Architektur nicht, so dass andere verwendet wurden. Später wurde diese Aufgabe jedoch mit Hilfe von BERT erfolgreich gelöst .
Wie hast du es gemacht?
Kommen wir zum interessantesten Teil - der Lösung des Problems. Nachdem wir ein wenig über die „Architektur“ des Tools nachgedacht hatten, entschieden wir uns für drei Modelle: Wörterbuchsuche (als Filter für obszöne Wörter), logistische Regression (als Basislösung) und BERT (als erweiterte Lösung).
Allgemeines Schema
Das allgemeine Schema der Lösung sieht folgendermaßen aus: Innerhalb der „Black Box“ wird der Text zuerst in den naiven Klassifikator eingegeben, der auf einem Wörterbuch obszöner Wörter (expletives Wort) basiert. Hier werden Texte, die „schlechte“ Wörter enthalten, sofort abgeschnitten (ihre Toxizität ist immer eins ( 1) Die Texte, die die erste Stufe bestanden haben, fallen in ein komplexeres neuronales Netzwerkmodell, das den Grad ihrer Toxizität angibt. Im Falle eines Versagens des neuronalen Netzwerkmodells wird es durch eine einfachere logistische Regression ersetzt. Das heißt, wir erhalten auf jeden Fall ein nicht naives Ergebnis .
Jetzt einen Blick auf jede Komponente im Detail lassen.
Naiver Klassifikator
Hier ist alles ganz einfach: Nach dem Wörterbuch des obszönen Wortschatzes ist es leicht zu verstehen, ob der Text dieses oder jenes „schlechte“ Wort enthält oder nicht.
Das heißt, zu diesem Zeitpunkt können Sie sogar auf das ML-Modell als solches verzichten und sofort Texte aussortieren, die „schlechte“ Wörter enthalten. Was aber, wenn solche Wörterbuchwörter nicht im Text verwendet werden, der Text jedoch für die Veröffentlichung auf dem Portal nicht akzeptabel ist? Versuchen wir, dieses Problem mithilfe der logistischen Regression und BERT'a zu lösen.
Logistische Regression
Das einfachste Modell ermöglicht es, einen Wert basierend auf den verfügbaren Daten vorherzusagen. Textvektoren für dieses Modell werden mit TF-IDF und TweetTokenizer von nltk erhalten. Ein solches Modell ermöglicht es bekanntlich, die Wahrscheinlichkeit einer Texttoxizität unter Verwendung einer logistischen Funktion abzuschätzen. In unserer Architektur „versichert“ die logistische Regression das neuronale Netzwerk.
Großartiger und schrecklicher BERT
Wir haben das vorgefertigte RuBert- Modell von DeepPavlov verwendet, das wir an den markierten Texten weiter trainiert haben. Der Vorhersageprozess, ohne auf Details einzugehen, ist wie folgt:
Wir haben gebaut, gebaut und endlich gebaut!
Wir haben die Qualität anhand unserer bevorzugten Metriken Genauigkeit, ROC-AUC und F1-Messung bewertet. Die endgültigen Qualitätsmetriken für die zurückgestellte Stichprobe lauten wie folgt:
| Algorithmus / Metrik
|
Naiv
|
BERT
|
LR
|
Naiv → BERT
|
Naiv → LR
|
| Richtigkeit
|
0,854
|
0,901
|
0,865
|
0,909
|
0,879
|
| ROC-AUC
|
0,782
|
0,960
|
0,921
|
0,963
|
0,939
|
| F1-Maßnahme
|
0,722
|
0,840
|
0,800
|
0,855
|
0,824
|
Betriebsgeschwindigkeit: ~ 2800 Texte pro Minute auf der GPU (GeForce 1080Ti) bei BERT-Verarbeitung als langsamster Algorithmus von den vorgestellten.
Wie erwartet fielen die Metriken mit BERT etwas besser aus, wenn auch nicht viel.
Welche Schlussfolgerungen haben wir gezogen?
Abschließend möchte ich einige wichtige Aspekte erwähnen, ohne die es unserer Meinung nach unmöglich ist, solche Lösungen im industriellen Modus auf den Markt zu bringen.
- Sie müssen immer die Besonderheiten der Aufgabe in Bezug auf das Markup von Texten berücksichtigen.
- Es ist notwendig, den Text manuell zu moderieren, wenn das Modell seine Entscheidung „bezweifelt“. Sie möchten nicht, dass unangemessener Inhalt in Ihrem Produkt landet.
- Es ist auch erforderlich, die handmarkierten Texte aus dem vorherigen Absatz für zusätzliche Schulungen zu senden. Auf diese Weise können Sie das Modell in kleinen Schritten verbessern und den Arbeitsaufwand während der manuellen Moderation im Laufe der Zeit reduzieren.
- Es ist besser, einen integrierten Ansatz zur Lösung des Problems zu verwenden. Manchmal liefern sogar die einfachsten "Modelle" in Wörterbüchern bereits ein gutes Ergebnis.
- Wählen Sie das beste Modell basierend auf Ihrer Aufgabe. In unserem Fall haben wir uns für BERT entschieden, weil es besser auf den Kontext reagiert als die logistische Regression.
Vielen Dank für Ihre Aufmerksamkeit!
Im nächsten Artikel werden wir unsere Erfahrungen mit der Vormoderation von Bildern auf derselben Plattform unseres Ökosystems - Our Farming - teilen.