
Jeder Dienst, dessen Benutzer ihre eigenen Inhalte erstellen können (UGC - User Generated Content), ist nicht nur gezwungen, geschäftliche Probleme zu lösen, sondern auch die Dinge in UGC in Ordnung zu bringen. Eine schlechte oder minderwertige Moderation von Inhalten kann letztendlich die Attraktivität des Dienstes für Benutzer bis zur Beendigung seiner Arbeit verringern.
Heute werden wir Sie über die Synergie zwischen Yula und Odnoklassniki informieren, die uns hilft, Anzeigen in Yule effektiv zu moderieren.
Synergien sind im Allgemeinen sehr nützlich und können in der modernen Welt, wenn sich Technologie und Trends sehr schnell ändern, zu einem Lebensretter werden. Warum sollten Sie knappe Ressourcen und Zeit für die Erfindung dessen aufwenden, was Sie bereits erfunden und in Erinnerung gerufen haben?
Wir dachten genauso, als wir uns der Herausforderung stellten, benutzergenerierte Inhalte zu moderieren - Bilder, Text und Links. Unsere Benutzer laden täglich Millionen von Inhaltseinheiten auf Yula hoch. Ohne automatische Verarbeitung ist das manuelle Moderieren all dieser Daten überhaupt nicht realistisch.
Deshalb haben wir die bereits vorbereitete Moderationsplattform genutzt, die unsere Kollegen aus Odnoklassniki zu diesem Zeitpunkt als „fast perfekt“ bezeichnet hatten.
Warum Klassenkameraden?
Täglich kommen zig Millionen Benutzer in das soziale Netzwerk, um Milliarden von Inhaltseinheiten zu veröffentlichen: von Fotos über Videos bis hin zu Texten. Die Moderationsplattform von Odnoklassniki hilft dabei, sehr große Datenmengen zu überprüfen und Spammern und Bots entgegenzuwirken.
Das OK-Moderationsteam hat viel Erfahrung gesammelt, da es sein Tool seit 12 Jahren verbessert. Es ist wichtig, dass sie nicht nur ihre vorgefertigten Lösungen teilen, sondern auch die Architektur ihrer Plattform für unsere spezifischen Aufgaben konfigurieren können.

Der Kürze halber werden wir die Moderationsplattform OK einfach "Plattform" nennen.
Wie es funktioniert
Der Datenaustausch zwischen Yula und Odnoklassniki wird über
Apache Kafka hergestellt .
Warum haben wir dieses Tool gewählt:
- In Yulia werden alle Anzeigen nachmoderiert, sodass zunächst keine synchrone Antwort erforderlich war.
- Wenn ein heftiger Absatz passiert und Yula oder Odnoklassniki nicht verfügbar sind, auch aufgrund einiger Spitzenlasten, verschwinden die Daten von Kafka nirgendwo und können später gelesen werden.
- Die Plattform wurde bereits in Kafka integriert, sodass die meisten Sicherheitsprobleme behoben wurden.

Für jede vom Nutzer in Yule erstellte oder geänderte Anzeige wird JSON mit Daten generiert, die zur späteren Moderation in Kafka abgelegt werden. Von Kafka werden Anzeigen auf die Plattform hochgeladen, wo Entscheidungen automatisch oder manuell getroffen werden. Schlechte Anzeigen werden aus einem bestimmten Grund blockiert, und diejenigen, bei denen die Plattform keine Verstöße festgestellt hat, werden als "gut" gekennzeichnet. Dann werden alle Entscheidungen an Yula zurückgeschickt und im Dienst angewendet.
Für Yula läuft alles auf einfache Aktionen hinaus: Senden Sie eine Anzeige an die Odnoklassniki-Plattform und erhalten Sie die Auflösung „ok“ oder warum nicht „ok“.
Automatische Verarbeitung
Was passiert mit einer Anzeige, nachdem sie auf der Plattform erscheint? Jede Anzeige ist in mehrere Einheiten unterteilt:
- Name
- Beschreibung
- Fotos
- vom Benutzer ausgewählte Kategorie und Unterkategorie der Anzeige,
- der Preis.

Anschließend gruppiert sich die Plattform für jede Entität, um Duplikate zu finden. Darüber hinaus werden Text und Fotos auf unterschiedliche Weise gruppiert.
Texte vor dem Clustering werden normalisiert, um Sonderzeichen, geänderte Buchstaben und anderen Müll zu löschen. Die empfangenen Daten werden in N-Gramm unterteilt, von denen jedes gehasht wird. Das Ergebnis sind viele einzigartige Hashes. Die Ähnlichkeit zwischen den Texten wird
als Jacquard zwischen den beiden resultierenden Mengen betrachtet. Wenn die Ähnlichkeit den Schwellenwert überschreitet, werden die Texte in einem Cluster zusammengeklebt. Um die Suche nach ähnlichen Clustern zu beschleunigen, werden MinHash- und Locality-sensitive Hashing verwendet.
Für Fotos wurden verschiedene Optionen zum Kleben von Bildern erfunden, vom Vergleich von pHash-Bildern bis zum Auffinden von Duplikaten mithilfe eines neuronalen Netzwerks.
Die letztere Methode ist die "härteste". Um das Modell zu trainieren, wurden solche Dreifachbilder (N, A, P) ausgewählt, bei denen N nicht wie A aussieht und P - wie A aussieht (ein halbes Duplikat). Dann lernte das neuronale Netzwerk, A und P so nah wie möglich und A und N so weit wie möglich zu machen. Dies führt zu weniger Fehlalarmen im Vergleich zum einfachen Einbetten aus einem vorab trainierten Netzwerk.
Wenn ein neuronales Netzwerk Bilder am Eingang empfängt, erzeugt es für jeden von ihnen einen N (128) -dimensionalen Vektor, und es wird eine Anforderung gestellt, die Nähe des Bildes zu bewerten. Als nächstes wird ein Schwellenwert berechnet, bei dem nahe Bilder als Duplikate betrachtet werden.
Das Modell kann gekonnt Spammer finden, die dasselbe Produkt aus verschiedenen Blickwinkeln fotografieren, um den pHash-Vergleich zu umgehen.

Ein Beispiel für Spam-Fotos, die von einem neuronalen Netzwerk als Duplikate verklebt werden.In der letzten Phase werden doppelte Anzeigen gleichzeitig in Text und Bild durchsucht.
Wenn zwei oder mehr Anzeigen in einem Cluster stecken bleiben, startet das System eine automatische Blockierung, bei der nach bestimmten Algorithmen ausgewählt wird, welche Duplikate entfernt und welche verlassen werden sollen. Wenn beispielsweise zwei Nutzer dieselben Fotos in einer Anzeige haben, blockiert das System eine neuere Anzeige.
Nach der Erstellung durchlaufen alle Cluster eine Reihe von automatischen Filtern. Jeder Filter gibt dem Cluster eine Bewertung: Mit welcher Wahrscheinlichkeit enthält er die Bedrohung, die dieser Filter identifiziert.
Beispielsweise analysiert das System die Beschreibung in der Anzeige und wählt mögliche Kategorien dafür aus. Dann nimmt er die mit der höchsten Wahrscheinlichkeit und vergleicht sie mit der vom Ersteller der Anzeige angegebenen Kategorie. Wenn sie nicht übereinstimmen, wird die Anzeige für die falsche Kategorie blockiert. Und da wir freundlich und ehrlich sind, teilen wir dem Nutzer direkt mit, welche Kategorie er auswählen muss, damit die Anzeige die Moderation besteht.
Blockbenachrichtigung für die falsche Kategorie.Auf unserer Plattform fühlt sich maschinelles Lernen wie zu Hause. Zum Beispiel suchen wir mit seiner Hilfe nach in der Russischen Föderation verbotenen Waren in Namen und Beschreibungen. Und Modelle neuronaler Netze "suchen" akribisch nach Bildern für URLs, Spammertexte, Telefone und dieselben "verbotenen".
In Fällen, in denen sie versuchen, verbotene Waren zu verkaufen, indem sie sich als etwas Legales tarnen, und gleichzeitig weder im Namen noch in der Beschreibung Text enthalten ist, verwenden wir die Bildkennzeichnung. Für jedes Bild können bis zu 11.000 verschiedene Tags angebracht werden, die beschreiben, was sich auf dem Bild befindet.
Sie versuchen, eine Wasserpfeife zu verkaufen und sie als Samowar zu verkleiden.Parallel zu komplexen Filtern können einfache, offensichtliche Aufgaben im Zusammenhang mit Textarbeiten gelöst werden:
- Antimat;
- URL- und Telefonnummerndetektor;
- Erwähnung von Instant Messenger und anderen Kontakten;
- niedriger Preis;
- Anzeigen, die nichts verkaufen usw.
Heute durchläuft jede Anzeige ein feines Sieb mit mehr als 50 automatischen Filtern, die versuchen, etwas Schlechtes in der Anzeige zu finden.
Wenn keiner der Detektoren funktioniert hat, wird eine Antwort an Yulu gesendet, dass die Ankündigung „höchstwahrscheinlich“ vollständig ist. Wir verwenden diese Antwort zu Hause, und Benutzer, die den Verkäufer abonnieren, erhalten eine Benachrichtigung über das Erscheinen eines neuen Produkts.
Benachrichtigung, dass der Verkäufer ein neues Produkt hat.Infolgedessen wird jede Anzeige mit Metadaten „überwachsen“, von denen einige beim Erstellen der Anzeige generiert werden (IP-Adresse des Autors, Benutzeragent, Plattform, Geolocation usw.). Der Rest ist die von jedem Filter angegebene Punktzahl.
Anzeigenwarteschlangen
Wenn eine Anzeige auf die Plattform gelangt, wird sie vom System in eine der Warteschlangen gestellt. Jede Warteschlange wird mithilfe einer mathematischen Formel gebildet, die Anzeigenmetadaten so kombiniert, dass ein schlechtes Muster erkannt wird.
Sie können beispielsweise eine Warteschlange mit Anzeigen in der Kategorie "Handys" von Nutzern von Yula erstellen, die angeblich aus St. Petersburg stammen, gleichzeitig aber auch ihre IP-Adressen aus Moskau oder anderen Städten.
Ein Beispiel für Anzeigen, die von einem Nutzer in verschiedenen Städten geschaltet wurden.Sie können auch Warteschlangen basierend auf den Punkten erstellen, die das neuronale Netzwerk Anzeigen zuweist, und diese in absteigender Reihenfolge platzieren.
Jede Zeile weist der Anzeige gemäß ihrer Formel eine endgültige Punktzahl zu. Dann können Sie auf verschiedene Arten handeln:
- Geben Sie einen Schwellenwert an, bei dem die Anzeige eine bestimmte Art der Blockierung erhält.
- Alle Anzeigen in der Warteschlange sollten zur manuellen Überprüfung an die Moderatoren gesendet werden.
- oder kombinieren Sie die vorherigen Optionen: Geben Sie den Schwellenwert für die automatische Blockierung an und senden Sie die Anzeigen an die Moderatoren, die diesen Schwellenwert nicht erreicht haben.

Warum sind diese Zeilen notwendig? Angenommen, ein Benutzer hat ein Foto einer Schusswaffe hochgeladen. Das neuronale Netzwerk weist ihm eine Punktzahl von 95 bis 100 zu und bestimmt mit einer Genauigkeit von 99 Prozent, welche Waffe auf dem Bild zu sehen ist. Wenn der Score-Wert jedoch unter 95% liegt, beginnt die Genauigkeit des Modells abzunehmen (dies ist ein Merkmal von neuronalen Netzwerkmodellen).
Infolgedessen wird eine Warteschlange basierend auf dem Bewertungsmodell gebildet, und die Anzeigen, die zwischen 95 und 100 eingegangen sind, werden automatisch als "Verbotene Waren" blockiert. Anzeigen mit Punkten unter 95 werden zur manuellen Verarbeitung an Moderatoren gesendet.
Schokoladen-Beretta mit Patronen. Nur zur manuellen Moderation! :) :)Manuelle Moderation
Zu Beginn des Jahres 2019 werden etwa 94% aller Anzeigen in Yule automatisch moderiert.

Wenn die Plattform keine Ankündigungen festlegen kann, werden diese zur manuellen Moderation gesendet. Klassenkameraden entwickelten ein eigenes Tool: Aufgaben für Moderatoren zeigen sofort alle notwendigen Informationen an, um eine schnelle Entscheidung zu treffen - die Werbung ist geeignet oder sollte mit Angabe des Grundes blockiert werden.
Und damit bei manueller Moderation die Servicequalität nicht leidet, wird die Arbeit der Menschen ständig überwacht. Zum Beispiel zeigt der Moderator im Aufgabenstrom „Fallen“ - Ankündigungen, für die es bereits vorgefertigte Lösungen gibt. Wenn die Entscheidung des Moderators nicht mit der fertigen übereinstimmt, wird ein Fehler zum Moderator gezählt.
Der durchschnittliche Moderator benötigt 10 Sekunden, um eine Anzeige zu überprüfen. Darüber hinaus beträgt die Anzahl der Fehler nicht mehr als 0,5% aller getesteten Anzeigen.
Volksmoderation
Kollegen aus Odnoklassniki gingen noch weiter und nutzten die "Hilfe der Halle": Sie schrieben ein Anwendungsspiel für das soziale Netzwerk, in dem Sie schnell eine große Datenmenge markieren und ein schlechtes Zeichen hervorheben können. - Odnoklassnikov Moderator (
https://ok.ru/app/ Moderator ). Eine gute Möglichkeit, die Hilfe von OK-Benutzern zu nutzen, die versuchen, Inhalte angenehmer zu gestalten.
Ein Spiel, in dem Benutzer Fotos mit einer Telefonnummer markieren.Jede Warteschlange von Anzeigen auf der Plattform kann zum Spiel Odnoklassniki Moderator umgeleitet werden. Alles, was Benutzer des Spiels markieren, wird dann zur Überprüfung an interne Moderatoren weitergeleitet. Mit diesem Schema können Sie Anzeigen blockieren, für die noch keine Filter erstellt wurden, und gleichzeitig Schulungsbeispiele erstellen.
Speicherung von Moderationsergebnissen
Wir speichern alle während der Moderation getroffenen Entscheidungen, damit wir später die Ankündigungen, die bereits eine Entscheidung getroffen haben, später nicht verarbeiten.
Anzeigen generieren täglich Millionen von Clustern. Im Laufe der Zeit erhält jeder Cluster die Note "gut" oder "schlecht". Jede neue Anzeige oder ihre Edition, die mit einer Markierung in den Cluster fällt, erhält automatisch die Auflösung des Clusters selbst. Etwa 20.000 solcher automatischen Auflösungen pro Tag.

Wenn der Cluster keine neuen Deklarationen erhält, wird er aus dem Speicher gelöscht und sein Hash und seine Lösung werden in Apache Cassandra geschrieben.
Wenn die Plattform eine neue Ankündigung erhält, versucht sie zunächst, einen ähnlichen Cluster unter den bereits erstellten zu finden und eine Entscheidung daraus zu treffen. Wenn es keinen solchen Cluster gibt, geht die Plattform zu Cassandra und sucht dort. Gefunden? Großartig, wendet die Lösung auf den Cluster an und sendet sie an Yula. Im Durchschnitt werden 70.000 dieser „wiederholten“ Entscheidungen rekrutiert - 8% der Gesamtzahl.
Zusammenfassend
Wir nutzen die Odnoklassniki-Moderationsplattform zweieinhalb Jahre lang. Wir mögen die Ergebnisse:
- Wir moderieren automatisch 94% aller Anzeigen pro Tag.
- Die Moderationskosten für eine Anzeige wurden von 2 Rubel auf 7 Kopeken reduziert.
- Dank des fertigen Tools vergaßen sie die Probleme bei der Verwaltung von Moderatoren.
- Die Anzahl der manuell verarbeiteten Anzeigen mit der gleichen Anzahl von Moderatoren und dem gleichen Budget wurde um das 2,5-fache erhöht. Die Qualität der manuellen Moderation stieg aufgrund der automatisierten Steuerung ebenfalls an und schwankt um 0,5% der Fehler.
- Filtern Sie schnell neue Arten von Spam.
- Verbinden Sie schnell neue Einheiten von Yula Vertical mit Moderation. Seit 2017 sind in Yule Branchen wie Immobilien, Jobs und Auto vertreten.