Wie man Kommentare öffnet und nicht im Spam ertrinkt

Wie man Kommentare öffnet und nicht im Spam ertrinkt

Wenn deine Arbeit darin besteht, etwas Schönes zu schaffen, muss man wahrscheinlich nicht viel darüber erzählen, denn das Ergebnis ist für alle sichtbar. Wenn du jedoch Schriftzüge von Zäunen entfernst, merkt niemand deine Arbeit, solange die Zäune ordentlich aussehen oder bis du etwas Unpassendes entfernst.

Jeder Service, bei dem man Kommentare, Bewertungen, Nachrichten senden oder Bilder hochladen kann, sieht sich früher oder später dem Problem von Spam, Betrug und vulgärer Sprache gegenüber. Dagegen kann man nichts tun, aber man muss damit kämpfen.

Mein Name ist Михаил, ich arbeite im Anti-Spam-Team, das die Nutzer der Yandex-Services vor solchen Problemen schützt. Unsere Arbeit ist selten sichtbar (und das ist gut so!), deshalb werde ich heute näher darüber erzählen. Sie werden erfahren, in welchen Fällen Moderation nutzlos ist und warum Genauigkeit nicht das einzige Maß für ihre Effektivität ist. Außerdem werden wir am Beispiel von Katzen und Hunden über Flüche sprechen und warum es manchmal hilfreich ist, wie ein Fluchender zu denken.

Bei Yandex entstehen immer mehr Services, bei denen Nutzer ihre Inhalte veröffentlichen. Man kann Fragen stellen oder Antworten in Yandex.Q geben, über Nachrichten im Viertel in Yandex.Region diskutieren oder Informationen über den Straßenverkehr in den Yandex.Karten austauschen. Doch wenn die Nutzerbasis eines Services wächst, wird er für Betrüger und Spammer anziehend. Sie kommen und füllen die Kommentare: sie bieten leicht verdientes Geld an, bewerben Wunderprodukte und versprechen soziale Zahlungen. Wegen der Spammer verlieren einige Nutzer Geld, während andere das Interesse verlieren, ihre Zeit auf einem verwahrlosten, mit Spam überladenen Service zu verbringen.

Und das ist nicht das einzige Problem. Wir bemühen uns nicht nur, die Nutzer vor Betrügern zu schützen, sondern auch eine angenehme Atmosphäre für die Kommunikation zu schaffen. Wenn die Menschen in den Kommentaren auf vulgäre und beleidigende Sprache stoßen, werden sie mit großer Wahrscheinlichkeit gehen und nicht wiederkommen. Das bedeutet, dass man auch damit umgehen können muss.

Sauberes Netz

Wie es bei uns oft der Fall ist, entstanden die ersten Entwicklungen im Bereich der Suche, in dem Teil, der gegen Spam in den Ergebnissen kämpft. Vor etwa zehn Jahren entstand dort die Aufgabe, Inhalte für Erwachsene aus dem familiären Suchkontext herauszufiltern sowie für Suchanfragen, die keine Antworten aus der Kategorie 18+ erwarten. So entstanden die ersten manuell zusammengestellten Wörterbücher für Pornografie und Schimpfwörter, die von Analysten ergänzt wurden. Die Hauptaufgabe war die Klassifikation von Suchanfragen in die, bei denen es zulässig ist, erwachsene Inhalte anzuzeigen, und in die, bei denen dies nicht der Fall ist. Zu diesem Zweck wurde eine Annotation gesammelt, Heuristiken entwickelt und Modelle trainiert. So entstanden die ersten Ergebnisse für die Filterung unerwünschter Inhalte.

Im Laufe der Zeit begann im Yandex UGC (user generated content) aufzutauchen – Nachrichten, die die Nutzer selbst schreiben, während Yandex diese nur veröffentlicht. Aus den oben beschriebenen Gründen konnten viele Nachrichten nicht ohne Überprüfung veröffentlicht werden – es benötigte Moderation. Daher wurde beschlossen, einen Service zu schaffen, der Schutz vor Spam und Missbrauch für alle UGC-Produkte von Yandex bietet und die Erkenntnisse zur Filterung unerwünschter Inhalte aus der Suche verwendet. Der Service wurde „Reines Web“ genannt.

Neue Aufgaben und Unterstützung durch Toloker

Zunächst hatten wir nur eine einfache Automatisierung: Die Dienste schickten uns Texte, und wir liefen sie durch Wörterbücher für Schimpfwörter, Wörterbücher für Pornografie und reguläre Ausdrücke – die Analysten stellten alles manuell zusammen. Doch der Service wurde im Laufe der Zeit in immer mehr Yandex-Produkten verwendet, und wir mussten lernen, mit neuen Problemen umzugehen.

Oft veröffentlichen Nutzer anstelle einer Bewertung eine sinnlose Buchstabenansammlung, um sich eine Auszeichnung zu erschwindeln, manchmal bewerben sie ihr Unternehmen in den Bewertungen über die Konkurrenz, und manchmal verwechseln sie einfach die Organisationen, weshalb sie in einer Bewertung über einen Tierbedarfsladen schreiben: 'Wunderbar zubereiteter Fisch!'. Möglicherweise wird die künstliche Intelligenz eines Tages lernen, die Bedeutung jeden Textes perfekt zu erfassen, aber derzeit ist die Automatisierung manchmal schlechter als ein Mensch.

Es wurde klar, dass wir ohne manuelle Kennzeichnung nicht auskommen würden, und wir haben unserer Struktur eine zweite Stufe hinzugefügt – die Überprüfung durch einen Menschen. Dort landeten die veröffentlichten Texte, bei denen der Klassifikator keine Probleme sah. Die Dimensionen dieser Aufgabe können Sie sich leicht vorstellen, deshalb haben wir uns nicht nur auf die Gutachter verlassen, sondern auch die „Weisheit der Menge“ genutzt und um Unterstützung von Crowdsourcern gebeten. Sie helfen uns, das zu erkennen, was die Maschine übersehen hat, und schulen sie damit.

Intelligentes Caching und LSH-Hashing

Ein weiteres Problem, mit dem wir bei der Arbeit mit Kommentaren konfrontiert wurden, ist Spam, genauer gesagt dessen Volumen und Verbreitungsgeschwindigkeit. Als das Publikum von Yandex.Region schnell wuchs, kamen die Spammer. Sie lernten, sich durch kleine Änderungen im Text an reguläre Ausdrücke vorbeizuschleichen. Spam wurde natürlich trotzdem gefunden und entfernt, aber im Kontext von Yandex konnten Hunderte von Personen auch eine für fünf Minuten veröffentlichte inakzeptable Nachricht sehen.

Wie man Kommentare öffnet und nicht im Spam ertrinkt

Das hat uns natürlich nicht gepasst, und wir haben intelligentes Caching von Texten auf Basis von LSH (Locality-Sensitive Hashing). So funktioniert es: Wir haben den Text normalisiert, Links entfernt und ihn in n-Gramme (Folgen von n Buchstaben) zerlegt. Dann haben wir die Hashes der n-Gramme berechnet und darauf aufbauend den LSH-Vektor des Dokuments erstellt. Das Prinzip ist, dass ähnliche Texte, selbst wenn sie leicht verändert wurden, in ähnliche Vektoren umgewandelt werden.

Diese Lösung ermöglichte es, die Urteile der Klassifikatoren und Gutachter für ähnliche Texte wiederzuverwenden. Bei einem Spam-Angriff, sobald die erste Nachricht die Prüfung passierte und mit einem „Spam“-Urteil in den Cache kam, erhielten alle neuen ähnlichen Nachrichten, selbst wenn sie verändert waren, dasselbe Urteil und wurden automatisch entfernt. Später haben wir gelernt, die Spam-Klassifikatoren zu trainieren und automatisch neu zu trainieren, aber dieses „intelligente Caching“ ist bis heute bei uns und hilft uns oft weiter.

Klassifikator für gute Texte

Kaum hatten wir uns von dem Kampf gegen den Spam erholt, erkannten wir, dass 95 % der Inhalte von uns manuell moderiert werden: Die Klassifizierer reagieren nur auf Verstöße, während die meisten Texte gut sind. Wir belasten die Tolokers, die in 95 von 100 Fällen die Bewertung „Alles OK“ abgeben. Wir mussten uns mit einer ungewohnten Aufgabe befassen – Klassifizierer für gute Inhalte zu erstellen, zum Glück hat sich im Laufe der Zeit genügend Markierung angesammelt.

Der erste Klassifizierer sah folgendermaßen aus: Wir lemmatisieren den Text (bringen die Wörter in ihre Grundform), werfen alle Funktionsteile der Sprache heraus und wenden ein im Voraus vorbereitetes „Wörterbuch guter Lemmata“ an. Wenn alle Wörter im Text „gut“ sind, enthält der gesamte Text keine Verstöße. Bei verschiedenen Diensten hat dieser Ansatz sofort 25 bis 35 % der manuellen Markierung automatisiert. Natürlich ist dieser Ansatz nicht perfekt: Es ist nicht schwer, mehrere harmlose Wörter zu kombinieren und eine sehr beleidigende Aussage zu erhalten, aber er hat es uns ermöglicht, schnell ein gutes Automatisierungsniveau zu erreichen und Zeit zu gewinnen, um komplexere Modelle zu trainieren.

Die nächsten Versionen der Klassifizierer für gute Texte umfassten bereits lineare Modelle, Entscheidungsbäume und deren Kombinationen. Für die Markierung von Grobheiten und Beleidigungen versuchen wir beispielsweise das neuronale Netzwerk BERT. Hier ist es wichtig, die Bedeutung eines Wortes im Kontext zu erfassen und die Verbindungen zwischen Wörtern aus verschiedenen Sätzen zu erkennen, und BERT schlägt sich dabei ganz gut. (Übrigens, kürzlich haben Kollegen aus den Nachrichten, und berichteten, wie sie die Technologie für eine unkonventionelle Aufgabe – die Suche nach Fehlern in Überschriften – anwenden.) Am Ende gelang es uns, bis zu 90 % des Datenstroms abhängig vom Dienst zu automatisieren.

Präzision, Vollständigkeit und Schnelligkeit

Um sich weiterzuentwickeln, ist es wichtig zu verstehen, welchen Nutzen bestimmte automatische Klassifizierer bringen, welche Änderungen es daran gibt und ob die Qualität der manuellen Prüfungen nicht abnimmt. Dazu verwenden wir die Kennzahlen für Präzision und Vollständigkeit.

Die Genauigkeit ist der Anteil korrekter Urteile unter allen Urteilen über schlechten Inhalt. Je höher die Genauigkeit, desto weniger Fehlalarme gibt es. Wenn man nicht auf die Genauigkeit achtet, könnte man theoretisch allen Spam und vulgäre Inhalte entfernen und dabei die Hälfte der guten Nachrichten verlieren. Andererseits, wenn man sich nur auf die Genauigkeit verlässt, wäre die beste Technologie die, die überhaupt niemanden erwischt. Daher gibt es noch einen weiteren Indikator: den Anteil erkannten schlechten Inhalts am gesamten schlechten Inhalts. Diese beiden Metriken gleichen sich aus.

Für die Messung ziehen wir eine Stichprobe aus dem gesamten eingehenden Datenstrom für jeden Dienst und geben Content-Proben zur Expertenbewertung an Gutachter ab, um diese mit den Entscheidungen der Maschine zu vergleichen.

Aber es gibt noch einen weiteren wichtigen Indikator.

Ich habe oben geschrieben, dass ein unannehmbarer Beitrag in nur 5 Minuten von hunderten Menschen gesehen werden kann. Daher zählen wir, wie oft wir es geschafft haben, den Nutzern schlechten Inhalt zu zeigen, bevor wir ihn versteckt haben. Das ist wichtig, denn es reicht nicht aus, qualitativ zu arbeiten – man muss auch schnell arbeiten. Und als wir den Schutz vor vulgären Inhalten aufbauten, wurden wir uns dessen voll bewusst.

Antivulgär am Beispiel von Katzen und Hunden

Ein kleiner lyrischer Einschub. Jemand könnte sagen, dass vulgäre Sprache und Beleidigungen nicht so gefährlich sind wie schädliche Links und nicht so sehr stören wie Spam. Aber wir streben danach, angenehme Bedingungen für die Kommunikation von Millionen Nutzern aufrechtzuerhalten, denn Menschen kehren nicht gerne dorthin zurück, wo sie beleidigt werden. Es ist kein Zufall, dass das Verbot von vulgärer Sprache und Beleidigungen in den Regeln vieler Gemeinschaften, einschließlich der auf Habré, festgeschrieben ist. Aber ich habe mich abgelenkt.

Die Wörterbücher der vulgären Sprache können nicht all der Reichtum der russischen Sprache bewältigen. Obwohl es nur vier Hauptwurzeln vulgärer Wörter gibt, kann man daraus eine unzählige Anzahl von Wörtern bilden, die man mit regulären Ausdrücken nicht erfassen kann. Man kann auch Teile eines Wortes in Transliteration schreiben, Buchstaben durch ähnliche Kombinationen ersetzen, Buchstaben umstellen, Sterne hinzufügen usw. Manchmal kann man ohne Kontext überhaupt nicht bestimmen, was der Nutzer mit einem vulgären Wort gemeint hat. Wir respektieren die Regeln von Habr, daher werden wir das nicht an realen Beispielen demonstrieren, sondern an Katzen und Hunden.

Wie man Kommentare öffnet und nicht im Spam ertrinkt

„Miau“, sagte das Kätzchen. Aber wir verstehen, dass das Kätzchen ein anderes Wort gesagt hat…

Wir begannen über die Algorithmen des "unscharfen Matchings" unseres Wörterbuchs und eine intelligentere Vorverarbeitung nachzudenken: wir führten Transliterationen durch, entfernten Leerzeichen und Interpunktionen, suchten nach Mustern und schrieben separate reguläre Ausdrücke dafür. Diese Herangehensweise brachte Ergebnisse, reduzierte jedoch oft die Genauigkeit und lieferte nicht die gewünschte Vollständigkeit.

Dann beschlossen wir, "wie Schimpfwörter zu denken". Wir begannen, selbst Rauschen in die Daten einzubringen: wir permutierten Buchstaben, generierten Tippfehler, ersetzt die Buchstaben durch ähnliche und so weiter. Die anfängliche Markierung dafür holten wir uns, indem wir Schimpfwörter-Wörterbücher auf große Textkorpora anwendeten. Wenn man einen Satz nimmt und ihn auf verschiedene Weisen verdreht, erhält man bereits viele Sätze. So kann man die Trainingsmenge um ein Vielfaches erhöhen. Es blieb nur noch, auf dem erhaltenen Pool ein mehr oder weniger intelligentes Modell zu trainieren, das den Kontext berücksichtigt.

Wie man Kommentare öffnet und nicht im Spam ertrinkt

Über die endgültige Lösung zu sprechen, ist derzeit noch verfrüht. Wir experimentieren weiterhin mit Ansätzen zu diesem Problem, sehen jedoch bereits, dass ein einfacher zeichenbasierten Convolutional Neural Network aus mehreren Schichten die Wörterbücher und regulären Ausdrücke deutlich übertrifft: dadurch können sowohl die Genauigkeit als auch die Vollständigkeit erhöht werden.

Natürlich verstehen wir, dass es immer Wege geben wird, selbst die fortschrittlichste Automatisierung zu umgehen, besonders wenn es so spannend ist: so zu schreiben, dass es eine dumme Maschine nicht versteht. Hier, wie im Kampf gegen Spam, ist es nicht unser Ziel, die Möglichkeit, etwas Unflätiges zu schreiben, auszurotten; unsere Aufgabe ist es, dafür zu sorgen, dass das Spiel den Aufwand nicht wert ist.

Die Möglichkeit zu eröffnen, seine Meinung zu teilen, zu kommunizieren und Kommentare abzugeben, ist nicht schwierig. Viel schwieriger ist es, sichere, angenehme Bedingungen und respektvollen Umgang mit Menschen zu erreichen. Ohne das wird es keine Entwicklung irgendeiner Gemeinschaft geben.

Quelle: habr.com

60GB SSD 8Gb DDR4