Wie man Kommentare öffnet und nicht in Spam ertrinkt



Wenn es Ihre Aufgabe ist, etwas Schönes zu schaffen, können Sie nicht besonders darüber sprechen, denn das Ergebnis liegt vor allen Augen. Aber wenn Sie die Inschriften von Zäunen löschen, bemerkt niemand Ihre Arbeit, bis die Zäune anständig aussehen oder bis Sie etwas Falsches löschen.

Jeder Dienst, bei dem Sie einen Kommentar hinterlassen, eine Bewertung abgeben, eine Nachricht senden oder Bilder hochladen können, ist früher oder später mit dem Problem von Spam, Betrug und obszöner Sprache konfrontiert. Dies kann nicht vermieden werden, aber dies muss bekämpft werden.

Mein Name ist Mikhail, ich arbeite im Anti-Spam-Team, das Benutzer von Yandex-Diensten vor solchen Problemen schützt. Unsere Arbeit ist selten auffällig (und gut!), Deshalb werde ich heute ausführlicher darüber sprechen. Sie werden herausfinden, in welchen Fällen Moderation nutzlos ist und warum Genauigkeit nicht der einzige Indikator für ihre Wirksamkeit ist. Wir werden auch über Partner am Beispiel von Katzen und Hunden sprechen und warum es manchmal nützlich ist, "wie ein Betrüger zu denken".

In Yandex gibt es immer mehr Dienste, bei denen Benutzer ihre Inhalte veröffentlichen. Sie können eine Frage stellen oder eine Antwort in Yandex.Kew schreiben, die Nachrichten der Werft in Yandex.Rayon diskutieren und die Verkehrssituation in Gesprächen auf Yandex.Maps teilen. Aber wenn das Service-Publikum wächst, wird es für Betrüger und Spammer attraktiv. Sie kommen und füllen die Kommentare aus: Sie bieten leichtes Geld, werben für wundersame Gelder und versprechen Sozialleistungen. Aufgrund von Spammern verlieren einige Benutzer Geld, während andere Zeit mit einem ungepflegten, von Spam überwucherten Dienst verbringen möchten.

Und das ist nicht das einzige Problem. Wir bemühen uns nicht nur, Benutzer vor Betrügern zu schützen, sondern auch eine angenehme Atmosphäre für die Kommunikation zu schaffen. Wenn Personen in den Kommentaren auf obszöne Sprache und Beleidigungen stoßen, werden sie sehr wahrscheinlich gehen und niemals zurückkehren. Das muss also auch kämpfen können.

Web reinigen


Wie so oft bei uns wurden die ersten Entwicklungen in der Suche geboren, in dem Teil, der Spam in den Suchergebnissen bekämpft. Vor zehn Jahren gab es die Aufgabe, Inhalte für Erwachsene nach Familiensuchen und nach Abfragen zu filtern, die keine Antworten aus der Kategorie 18+ implizieren. So erschienen die ersten manuell getippten Wörterbücher für Pornos und Matten, die von Analysten aufgefüllt wurden. Die Hauptaufgabe bestand darin, Anfragen in solche zu klassifizieren, bei denen Inhalte für Erwachsene akzeptabel sind und bei denen dies nicht der Fall ist. Für diese Aufgabe wurden Markups gesammelt, Heuristiken erstellt und Modelle trainiert. So erschienen die ersten Entwicklungen zum Filtern unangemessener Inhalte.

Im Laufe der Zeit erschien Yandex UGC (User Generated Content) - Nachrichten, die von den Benutzern selbst geschrieben wurden und die Yandex nur veröffentlicht. Aus den oben beschriebenen Gründen konnten viele Nachrichten nicht ohne Rücksicht veröffentlicht werden - Moderation war erforderlich. Anschließend haben wir beschlossen, einen Dienst zu erstellen, der alle Yandex UGC-Produkte vor Spam und Cyberkriminellen schützt und die Best Practices zum Filtern unangemessener Inhalte in der Suche verwendet. Der Dienst wurde Clean Web genannt.

Neue Aufgaben und Hilfe für Toloker


Anfangs funktionierte für uns nur eine einfache Automatisierung: Die Dienste schickten uns Texte, und wir führten Mat-Wörterbücher, Pornos und reguläre Wörterbücher darauf aus - Analysten haben alles manuell erstellt. Im Laufe der Zeit wurde der Service jedoch in immer mehr Yandex-Produkten eingesetzt, und wir mussten lernen, mit neuen Problemen umzugehen.

Anstatt sich zu erinnern, veröffentlichen Benutzer häufig einen bedeutungslosen Satz von Briefen, versuchen, ihre Erfolge zu beenden, machen manchmal Werbung für ihr Unternehmen in Bewertungen des Unternehmens eines Mitbewerbers, und manchmal verwirren sie einfach Organisationen und schreiben in einer Bewertung über eine Zoohandlung: „Perfekt gekochter Fisch!“. Vielleicht wird künstliche Intelligenz eines Tages lernen, die Bedeutung eines Textes perfekt zu erfassen, aber jetzt kommt die Automatisierung manchmal schlechter zurecht als der Mensch.

Es wurde klar, dass man ohne manuelle Kennzeichnung nicht auskommen konnte, und wir fügten unserer Schaltung den zweiten Schritt hinzu - das Senden zur manuellen Inspektion durch eine Person. Es gab jene veröffentlichten Texte, für die der Klassifikator keine Probleme sah. Sie können sich das Ausmaß einer solchen Aufgabe leicht vorstellen, daher haben wir uns nicht nur auf Gutachter verlassen, sondern auch die „Weisheit der Menge“ genutzt, dh wir haben die Toloker um Hilfe gebeten. Sie helfen uns zu erkennen, was die Maschine übersehen hat, und lehren sie dabei.

Smart Caching und LSH-Hashing


Ein weiteres Problem, auf das wir bei der Arbeit mit Kommentaren gestoßen sind, ist Spam bzw. dessen Umfang und Verteilungsgeschwindigkeit. Als das Publikum von Yandex.Ryon schnell zu wachsen begann, kamen Spammer dorthin. Sie lernten, mit Stammgästen umzugehen, indem sie den Text leicht änderten. Spam wurde natürlich immer noch gefunden und gelöscht, aber Hunderte von Menschen konnten eine inakzeptable Nachricht sogar für 5 Minuten auf einer Yandex-Skala sehen.



Dies passte natürlich nicht zu uns und wir haben das intelligente Caching von Texten basierend auf LSH ( Locality-Sensitive Hashing) durchgeführt) Das funktioniert so: Wir haben den Text normalisiert, Links daraus entfernt und ihn in n-Gramm (Folgen von n Buchstaben) geschnitten. Ferner wurden die Hashes von n-Gramm berücksichtigt, und der LSH-Vektor des Dokuments wurde bereits darauf aufgebaut. Der Punkt ist, dass ähnliche Texte, auch wenn sie sich ein wenig verändert haben, zu ähnlichen Vektoren wurden.

Diese Entscheidung ermöglichte die Wiederverwendung von Urteilen von Klassifikatoren und Tokern für ähnliche Texte. Bei einem Spam-Angriff erhielten alle neuen ähnlichen Nachrichten, auch geänderte, das gleiche Urteil und wurden automatisch gelöscht, sobald die erste Nachricht die Prüfung bestanden und mit dem Spam-Urteil in den Cache gelangt war. Später haben wir gelernt, Spam-Klassifikatoren zu trainieren und automatisch neu zu trainieren, aber dieser „intelligente Cache“ ist bei uns geblieben und hilft uns immer noch sehr.

Klassifikator für gute Texte


Da wir keine Zeit hatten, eine Pause von der Bekämpfung von Spam einzulegen, stellten wir fest, dass 95% unserer Inhalte manuell moderiert werden: Klassifizierer reagieren nur auf Verstöße, und die meisten Texte sind gut. Wir laden die Toloker, die in 95 von 100 Fällen die Bewertung "Alles ist in Ordnung" abgeben. Ich musste einen ungewöhnlichen Job machen - um Klassifikatoren mit gutem Inhalt zu erstellen, hat sich der Vorteil des Markups für diese Zeit genug angesammelt.

Der erste Klassifikator sah folgendermaßen aus: Wir lemmatisieren den Text (wir reduzieren die Wörter auf die ursprüngliche Form), werfen alle Serviceteile der Sprache weg und verwenden das vorbereitete „Wörterbuch der guten Lemmas“. Wenn alle Wörter im Text „gut“ sind, enthält der gesamte Text keine Verstöße. Bei verschiedenen Diensten ergab dieser Ansatz sofort 25 bis 35% der manuellen Markup-Automatisierung. Natürlich ist dieser Ansatz nicht ideal: Es ist einfach, mehrere unschuldige Wörter zu kombinieren und eine sehr beleidigende Aussage zu erhalten, aber er ermöglichte es uns, schnell einen guten Automatisierungsgrad zu erreichen und gab uns Zeit, komplexere Modelle zu trainieren.

Die folgenden Versionen der Klassifikatoren guter Texte enthielten bereits lineare Modelle und Entscheidungsbäume sowie deren Kombinationen. Zum Markieren von Unhöflichkeit und Beleidigungen versuchen wir beispielsweise das neuronale BERT-Netzwerk. Hier ist es wichtig, die Bedeutung des Wortes im Kontext und die Verbindung von Wörtern aus verschiedenen Sätzen zu erfassen, und BERT leistet hier gute Arbeit. (Übrigens haben kürzlich Kollegen aus den Nachrichten erklärt , wie sie die Technologie für eine nicht standardmäßige Aufgabe verwenden - um nach Fehlern in den Headern zu suchen.) Infolgedessen konnten wir je nach Service bis zu 90% des Flusses automatisieren.

Genauigkeit, Vollständigkeit und Geschwindigkeit


Um sich zu entwickeln, müssen Sie verstehen, welche Art von automatischen Klassifizierern Vorteile bringt, welche Änderungen sie bewirken und ob sich die Qualität der manuellen Überprüfungen nicht verschlechtert. Hierfür verwenden wir Indikatoren für Genauigkeit und Vollständigkeit.

Die Genauigkeit ist der Anteil korrekter Urteile an allen Urteilen mit schlechtem Inhalt. Je höher die Genauigkeit, desto weniger Fehlalarme. Wenn Sie die Genauigkeit nicht einhalten, können Sie theoretisch alle Spam- und Obszönitäten und damit die Hälfte der guten Nachrichten löschen. Wenn Sie sich jedoch nur auf Genauigkeit verlassen, ist die beste Technologie, die niemanden fängt. Daher gibt es auch einen Indikator für die Vollständigkeit: den Anteil des erkannten fehlerhaften Inhalts am Gesamtvolumen des fehlerhaften Inhalts. Diese beiden Metriken gleichen sich aus.

Zur Messung erfassen wir den gesamten eingehenden Datenstrom für jeden Service und geben den Prüfern Inhaltsproben zur Expertenbewertung und zum Vergleich mit Maschinenlösungen.

Es gibt aber noch einen weiteren wichtigen Indikator.

Ich habe oben geschrieben, dass Hunderte von Menschen sogar in 5 Minuten eine inakzeptable Nachricht sehen können. Daher überlegen wir, wie oft wir es geschafft haben, schlechten Inhalten zu zeigen, bevor wir sie ausgeblendet haben. Dies ist wichtig, da es nicht ausreicht, effizient zu arbeiten. Sie müssen schnell arbeiten. Und als wir die Verteidigung gegen die Matte aufbauten, fühlten wir es in vollen Zügen.

Antimat am Beispiel von Kätzchen und Hunden


Ein leichter lyrischer Exkurs. Jemand könnte sagen, dass Fluchen und Beleidigungen nicht so gefährlich sind wie böswillige Links und nicht so ärgerlich wie Spam. Wir bemühen uns jedoch um eine komfortable Umgebung für die Kommunikation zwischen Millionen von Benutzern, und die Menschen kehren nicht gerne dorthin zurück, wo sie beleidigt sind. Kein Wunder, dass das Verbot obszöner Sprache und Beleidigungen in den Regeln vieler Gemeinden, einschließlich Habré, festgelegt ist. Aber wir waren abgelenkt.

Mata-Wörterbücher bewältigen nicht den gesamten Reichtum der russischen Sprache. Trotz der Tatsache, dass es nur vier obszöne Hauptwurzeln gibt, können Sie daraus eine Vielzahl von Wörtern machen, die Sie von keinem Stammgast verstehen können. Darüber hinaus können Sie einen Teil eines Wortes in Transliteration schreiben, Buchstaben durch ähnliche Kombinationen ersetzen, Buchstaben neu anordnen, Sterne hinzufügen usw. Manchmal ist es ohne Kontext grundsätzlich unmöglich zu bestimmen, was der Benutzer ein obszönes Wort meinte. Wir respektieren die Regeln von Habr, deshalb werden wir dies nicht an lebenden Beispielen demonstrieren, sondern an Robben und Hunden.



"Lyau", sagte die Katze. Aber wir verstehen, dass die Katze ein anderes Wort gesagt hat ...

Wir begannen über die Algorithmen des „Fuzzy Matching“ unseres Wortschatzes und über eine intelligentere Vorverarbeitung nachzudenken: transliterierte, geklebte Räume und Interpunktion, suchten nach Mustern und schrieben separate Stammgäste darauf. Dieser Ansatz lieferte Ergebnisse, reduzierte jedoch häufig die Genauigkeit, ohne die gewünschte Vollständigkeit zu liefern.

Dann beschlossen wir, "wie Schimpfwörter zu denken". Wir selbst haben begonnen, Rauschen in die Daten einzuführen: die Buchstaben neu angeordnet, Tippfehler generiert, die Buchstaben durch ähnliche Schreibweisen ersetzt und so weiter. Das anfängliche Markup hierfür wurde durch Anwenden von Mat-Wörterbüchern auf große Textkorps vorgenommen. Wenn Sie einen Satz nehmen und auf verschiedene Weise verzerren, haben Sie bereits viele Sätze. So können Sie das Trainingsmuster um das Zehnfache erhöhen. Alles, was blieb, war, auf einem empfangenen Pool ein mehr oder weniger intelligentes Modell zu trainieren, das den Kontext berücksichtigte.



Es ist zu früh, um über die endgültige Entscheidung zu sprechen. Wir experimentieren immer noch mit Ansätzen für dieses Problem, aber wir sehen bereits, dass ein einfaches symbolisches Faltungsnetzwerk aus mehreren Schichten Wörterbücher und Stammbücher erheblich übertrifft: Es stellt sich heraus, dass es sowohl die Genauigkeit als auch die Vollständigkeit erhöht.

Natürlich verstehen wir, dass es immer Möglichkeiten gibt, selbst die fortschrittlichste Automatisierung zu umgehen, besonders wenn sie so rücksichtslos ist: Schreiben, damit eine dumme Maschine nicht versteht. Hier, wie im Kampf gegen Spam, haben wir kein Ziel, die Möglichkeit auszuschließen, etwas Obszönes zu schreiben. Unsere Aufgabe ist es, das Spiel so zu gestalten, dass es die Kerze nicht wert ist.

Es ist einfach, die Gelegenheit zu eröffnen, Ihre Meinung zu teilen, zu kommunizieren und zu kommentieren. Es ist viel schwieriger, ein sicheres, komfortables Umfeld und Respekt für die Menschen zu erreichen. Und ohne dies wird es keine Entwicklung einer Gemeinschaft geben.

All Articles