Mai 2017

Band 32, Nummer 5

Cognitive Services: Schützen von Web-Apps mit Microsoft Content Moderator

Von Maarten Van De Bospoort | Mai 2017

Täglich nehmen Milliarden von Benutzern Bilder und Videos auf, die sie in den sozialen Medien teilen. Wie jedermann weiß, der es schon einmal mit von Benutzern generierten Inhalten im Internet zu tun hatte, tritt in der Anonymität des Netzes nicht unbedingt das beste menschliche Verhalten zutage. 

Ein weiterer wichtiger neuer Trend ist das Aufkommen von Chatbots. Kein Tag vergeht, ohne dass eine neue Sammlung von Bots veröffentlicht wird, die alle möglichen Aufgaben von Reisebuchungen bis hin zum Koordinieren Ihrer Besprechungen und Onlinebanking ausführen können. Diese Bots sind zweifellos nützlich, doch der Killerchatbot wurde noch immer nicht gefunden: der eine Bot, den sich alle Messagingplattformen wünschen, um das Ziel von einer Milliarde aktiven Benutzern pro Tag zu knacken.

Angenommen, Sie haben soeben genau diesen Bot erstellt: Butterfly, der Bot, den jeder gern verwenden möchte. Benutzer können Medien mit Ihrem Bot teilen, und durch Ihren geheimen Machine Learning-Algorithmus kann der Bot ihre Zukunft für die nächsten 24 Stunden vorhersagen. Nach einem Jahr harter Arbeit haben Sie Ihren Bot veröffentlicht. Und über Nacht hat sich Butterfly viral verbreitet. Unglücklicherweise verwandelt sich Ihr Startuptraum schnell in einen Public Relations-Albtraum. Benutzer übermitteln jugendgefährdende oder gewagte Inhalte, die dann geteilt werden und öffentlich für andere Botbenutzer verfügbar sind. Und einige dieser Inhalte sind inakzeptabel. Wirklich inakzeptabel. Benutzer verklagen Sie, das Telefon hört nicht mehr auf zu klingeln, und Ihnen wird die Abschaltung Ihres Webdiensts angedroht. Sie benötigen eine leistungsfähige Lösung, damit Sie die inakzeptablen Inhalte erkennen und verhindern können, dass sie für andere Benutzer sichtbar sind. Und das auch noch schnell.

Hier bietet sich Microsoft Content Moderator als Rettung an!

In diesem Artikel erfahren Sie, wie Content Moderator helfen kann. Wir erstellen zuerst einen Chatbot mithilfe von Microsoft Bot Framework. Denken Sie jedoch daran, dass diese Informationen auch für jede beliebige Web- oder Clientanwendung gelten. Butterfly ermöglicht Endbenutzern das Teilen von Text, Bildern und Videos und verwendet Content Moderator zum Ausfiltern von ungeeignetem Material, bevor dieses veröffentlicht wird. Dabei erfahren Sie, wie benutzerdefinierte Content Moderator-Workflows konfiguriert werden und wie die Schwellenwerte für die Inhaltsklassifizierer angepasst werden. Außerdem werden die verschiedenen Connectors behandelt, die im Workflow verwendet werden können, z. B. Text und Kindesmissbrauch. Beginnen wir mit einem Überblick über die Inhaltsmoderation.

Inhaltsmoderation

Microsoft kann auf eine lange und bewiesene Erfolgsgeschichte im Kampf gegen digitale Verbrechen zurückblicken. Die Microsoft Digital Crimes Unit engagiert sich im Kampf gegen Botnets, versucht, Betrug beim technischen Support einzuschränken, vereitelt Phishingversuche und vieles mehr. Weniger sichtbar ist es, wie diese Einheit weltweit die Strafverfolgung bei Kindesmissbrauch unterstützt. Microsoft bietet seit 2009 PhotoDNA als kostenlosen Dienst an. Das gleiche Team stellt nun auch Inhaltsmoderation vor.

Inhaltsmoderation ist ein Bereich von Machine Learning, in dem Computer Menschen enorm unterstützen können. Die Menge an Daten, die von Benutzern generiert wird, ist einfach viel zu groß, um von Menschen schnell und kosteneffektiv überprüft werden zu können. Wichtiger noch: Inhaltsmoderation ist für Menschen keine angenehme Aktivität. Einige Hintergrundinformationen dazu finden Sie unter tcrn.ch/2n1d9M0.

Content Moderation ist ein Mitglied der stetig wachsenden Sammlung der Microsoft Cognitive Services-APIs, die in Azure ausgeführt werden. Diese APIs sind alle spezifische Implementierungen von Machine Learning-Modellen. Dies bedeutet, dass Microsoft diese Modelle mit großen Datenmengen trainiert hat. Als Entwickler rufen Sie einfach eine der APIs auf, um ein Ergebnis zu erhalten: für maschinelles Sehen, Sprecherkennung oder Sprachverständnis, um nur einige Einsatzmöglichkeiten zu nennen. Die Bild-API von Content Moderator verwendet Bilderkennung, einen Bereich von Machine Learning, der in den letzten Jahren von großen Fortschritten geprägt wurde.

Abbildung 1 zeigt, wie die Content Moderator-Pipeline eingerichtet wird. Abhängig von Ihren Anforderungen bietet die Inhaltsmoderation verschiedene APIs, die aufgerufen werden können, einschließlich Moderation, Review und Aufgaben mit zunehmender Anpassbarkeit. Die Workflow-API ermöglicht z. B. das programmgesteuerte Ändern von Workflows, die für Aufgaben verwendet werden. Außerdem können Sie die verschiedenen Klassifizierer für Bild, Text und Video sowie CSAM (Child Sexual Abuse Material) erkennen. PhotoDNA ist die Technologie, die Organisationen beim Kampf gegen die Verbreitung dieser Bilder unterstützt. Der CSAM-“Klassifizierer“ funktioniert etwas anders als die zuvor genannten Klassifizierer: PhotoDNA verwendet einen Hashwert und Übereinstimmungstechnologie, die Vergleiche anhand einer Datenbank bekannter Bilder vornimmt. Mit Content Moderator können Sie Workflows einrichten, die mehrere Filter verbinden (z. B. zuerst CSAM einsetzen und dann nach den Kategorien „Jugendgefährdend/Gewagt“ in Bildern suchen). Der Workflow kann auch Menschen für die Überprüfung heranziehen. Zusammenfassend kann gesagt werden, dass die Content Moderator-Pipeline flexibel ist und in Zukunft auch andere APIs integriert werden können.

Benutzerinhalte durchlaufen Content Moderator, wobei Machine Learning-Modelle und Menschen zusammenarbeiten, um unerwünschtes Material auszufiltern
Abbildung 1: Benutzerinhalte durchlaufen Content Moderator, wobei Machine Learning-Modelle und Menschen zusammenarbeiten, um unerwünschtes Material auszufiltern

Moderieren Sie die Inhalte Ihrer Benutzer

Da Sie nun über Kenntnisse der Moderationstechnologie verfügen, wenden wir diese auf unseren Butterfly-Bot an. Wir erstellen den Bot mit dem Microsoft Bot Framework und nutzen dabei die Node.js-Konfiguration von Bot Framework für Butterfly. Da alle diese APIs reine Aufrufe der REST-APIs sind, könnten Sie Ihre Inhalte ebenso einfach aus C# moderieren. In der Tat könnte das noch einfacher sein, weil ein .NET SDK für Content Moderator (bit.ly/2mXQqQV) vorhanden ist. 

In diesem Magazin sind diverse Artikel erschienen, die eine hervorragende Übersicht über Bots bereitstellen. Wenn Sie noch keinen Bot erstellt haben, kann ich Ihnen die folgenden Artikel dringend empfehlen:

Alternativ können Sie auch die Schnellstarts unter dev.botframework.com verwenden, um in kürzester Zeit erste Schritte ausführen zu können.

Hier verwenden wir die einfache Starterlösung für Node.js. Wir verwenden das vom Node.js-Framework bereitgestellte Dialogmodell, um die Unterhaltung in separate Dialoge zu trennen. Im Dialogcode, den Abbildung 2 zeigt, fordert der Bot den Benutzer in der ersten Funktion zur Eingabe eine URL zu einem Bild auf. Die Steuerung wird dann zurück an den Benutzer übergeben. Wenn der Benutzer Text sendet, übergibt der Dialogdatenfluss die Benutzereingabe an die zweite Funktion. Der Bot leitet die Eingabe dann zur Auswertung in moderate.js weiter. Im ersten Versuch rufen wir die einfache Moderator-API auf (im Vergleich zu den anspruchsvolleren Review- und Aufgaben-APIs).

Abbildung 2: Dialogcode

bot.dialog('/moderateImage', [
  function (session, args) {
    builder.Prompts.text(session, 'Give me a picture URL to moderate, please.');
  },
  function (session, results){
    var input = session.message.text;
    var cm = require('./moderate.js');
    cm( 'ImageUrl', input, function(err, body) {
      if (err) {
        session.send('Oops. Something went wrong.');
        return;
      }
      var output = JSON.stringify(body);
      session.endDialog(output);
    });
  }
]);

Zum Aufrufen der Content Moderator-API benötigen Sie Anmeldeinformationen, die Sie von der Content Moderator-Website oder aus Azure abrufen können. Hier verwenden wir die letztgenannte Möglichkeit. Erstellen Sie im Azure-Portal (portal.azure.com) ein neues Cognitive Services-Konto, indem Sie auf das grüne Pluszeichen klicken und dann „Cognitive Services“ angeben. Nachdem Sie auf „Erstellen“ geklickt haben, geben Sie „Content Moderator“ als API-Typ an (siehe Abbildung 3). Verwenden Sie die F0-Schicht, weil diese kostenlos ist und einen Aufruf pro Sekunde ermöglicht. Dies sollte im Moment ausreichen, um ein wenig herumzuspielen. Nachdem das Konto erstellt wurde, finden Sie den Kontonamen und -schlüssel unter „Schlüssel“ in „Ressourcenverwaltung“. Beachten Sie, dass Sie einen der Schlüssel und die Ressourcen-ID-Zeichenfolge (aus „Eigenschaften“) verwenden, um die Content Moderator-API später in das Content Moderator-Reviewportal zu integrieren.

Auswählen von „Content Moderator“ aus der Liste „Cognitive Services“
Abbildung 3: Auswählen von „Content Moderator“ aus der Liste „Cognitive Services“

Das Azure-Portal zeigt auch den Endpunkt als „https://westus.api.cognitive.microsoft.com/contentmoderator“ an. Das ist zwar die richtige Basisadresse, aber etwas zu kurz. Den vollständigen Endpunkt finden Sie in der Content Moderator-Dokumentation.

Wie Abbildung 4 zeigt, geben wir „URL“ als „DataRepresentation“ an, um die URL zum Bild zu senden. Sie können das Bild jedoch genau so einfach als ein Blob senden. Nachdem Sie die Moderator-API aufgerufen haben, enthält der Textkörper des zurückgegebenen Ergebnisses JSON-Code mit den Bewertungen für das Bild. Die Bewertungen reichen von 0,0 (unverfänglich) bis zu 1,0 (sehr jugendgefährdend/gewagt).

Abbildung 4: Senden einer Bild-URL an Content Moderator

var unirest = require("unirest");
var url = "https://westus.api.cognitive.microsoft.com/contentmoderator/
  moderate/v1.0/ProcessImage/Evaluate";
module.exports = function(input, cb) {
  unirest.post(url)
    .type("json")
    .headers({
      "content-type": "application/json",
      "Ocp-Apim-Subscription-Key":<Key from the Azure portal>,
    })
    .send({
      "DataRepresentation": "URL",
      "Value": input
    })
    .end(function (res) {
      return cb(res.error, res.body );
    });
};

Sie können sehen, dass das in Abbildung 5 gezeigte Ergebnis die Bewertungen für jugendgefährdende und gewagte Inhalte enthält und angibt, ob der Schwellenwert für die klassifizierte Kennzeichnung eingehalten wurde. Überglücklich fügen Sie diese Codezeilen in Ihren Bot ein und blockieren alle Inhalte, die jugendgefährdend oder gewagt sind. Sie stellen die neue Version des Bots unter Azure bereit, und schon strömen die Benutzer erneut herbei, um Ihr Orakel zu befragen. Puh! Sie freuen sich über das Ergebnis und laden Ihr Team zu einem kühlen Getränk aus Ihrer Bierzapfanlage ein, um den Erfolg zu feiern.

Abbildung 5: Klassifizierungsbewertungen für jugendgefährdende und gewagte Inhalte für ein Bild

"AdultClassificationScore":0.0324602909386158,
"IsImageAdultClassified":false,
"RacyClassificationScore":0.06506475061178207,
"IsImageRacyClassified":false,
"AdvancedInfo":[],
"Result":false,
"Status":{
  "Code":3000,
  "Description":"OK",
  "Exception":null},
"TrackingId":"WU_ibiza_4470e022-4110-48bb-b4e8-7656b1f6703f_
  ContentModerator.F0_3e598d6c-5678-4e24-b7c6-62c40ef42028"

Sie haben noch keine zwei Schlucke Ihres Craft Beers getrunken, als das Vibrieren Ihres Smartphones aufgrund unzähliger Tweets gar nicht mehr aufhört. Eine ganze Flut verärgerter Kunden meldet sich zu Wort: „Warum blockiert Ihr meine harmlosen Bilder?“ „Mein Bruder kann Bilder veröffentlichen, die erheblich mehr Haut zeigen. Ihr müsst das ändern!“

Bildklassifizierung ist eine gute Sache, aber keine Universallösung für alle. Die reinen Content Moderator-APIs, die wir im Beispiel verwendet haben, können Menschen definitiv beim Treffen guter Entscheidungen unterstützen. Sie sind aber nicht perfekt. Eine Verbesserung, die vorgenommen werden kann, besteht im Optimieren der Moderation durch Verwenden der Rohbewertungen anstelle der Klassifizierungen für jugendgefährdende und gewagte Inhalte als wahr/falsch. Außerdem scheinen Benutzer die gleichen Bilder wiederholt zu verwenden. Glücklicherweise stellt Content Moderator eine Listen-API zum Verwalten einer benutzerdefinierten Sammlung von Bildern oder Text bereit, die bereits Ihr Screening durchlaufen hat. Die Moderator-API führt eine unscharfe Suche anhand der Bilder aus, damit verhindert wird, dass Benutzer die Klassifizierung durch geringfügige Änderungen bzw. Größenanpassungen manipulieren können. Im Vergleich zum ersten Ansatz ist dies eine nette Optimierung. Sie eliminiert aber nicht die falsch positiven Ergebnisse, mit denen sich der Helpdesk herumschlagen musste. Wie immer ergibt sich die optimale Lösung, wenn Menschen und Maschinen im Team an den schwierigeren Fällen zusammenarbeiten. Computer Vision kann bei der Erkennung von Extremfällen helfen, wenn Bilder eindeutig jugendgefährdend oder gewagt bzw. eindeutig nicht jugendgefährdend oder gewagt sind. Für die Grenzfälle zwischen diesen beiden Extremen können Menschen die Entscheidung treffen, welcher Kategorie Inhalt in unserem speziellen Szenario zuzuordnen ist. Hier zeigen das Content Moderator-Reviewtool und die -API ihre wahre Stärke. Sehen wir uns an, wie beides eingesetzt wird, um unsere Lösung zu optimieren.

Aufrufen der Moderator Review-API

Der gewählte Ansatz war bis jetzt unkompliziert: Ein Bild wird gesendet und dann basierend auf den Content Moderator-Klassifizierungen zugelassen oder blockiert. Nun erweitern wir diese Lösung. Die Idee besteht darin, einen wie in Abbildung 6 gezeigten Workflow einzurichten.

Der Butterfly-Bot arbeitet mit einem Content Moderator-Workflow
Abbildung 6: Der Butterfly-Bot arbeitet mit einem Content Moderator-Workflow

In diesem Szenario sendet der Benutzer zuerst ein Bild an den Butterfly-Bot. In Schritt 2 sendet der Webdienst des Bots das Bild mithilfe des Aufgabenvorgangs der Review-API an Content Moderator. Dieser Aufgabenvorgang nimmt eine Workflow-ID als Parameter an. Wir richten diesen Workflow im Reviewtool ein. Unser spezifischer Workflow (Schritt 3) lässt sofort alle Bilder zu, die unterhalb einer bestimmten Bewertung als jugendgefährdend/gewagt liegen (z. B. 0,7) und kennzeichnet die anderen Bilder, die einen bestimmten Grenzwert überschreiten (z. B. 0,9). Unser Bot lässt die Inhalte mit den niedrigen Bewertungen zu und blockiert Inhalte, wenn diese eindeutig zu gewagt oder jugendgefährdend sind. In der dazwischen liegenden Grauzone sollen die Inhalte an das Reviewtool weitergeleitet werden, damit sie von menschlichen Moderatoren untersucht werden können (Schritt 4). Unser Team aus Reviewern kann dann entscheiden, wie mit den Inhalten umgegangen werden soll. Nachdem die Überprüfung erfolgt ist, ruft Content Moderator den App-Dienst des Bots zurück, um das Ergebnis mitzuteilen. An diesem Punkt kann der Bot den Inhalt ablehnen, wenn er als anstößig gekennzeichnet wurde. Beachten Sie die Flexibilität, die hier möglich ist. Sie können die Bewertungen in Ihrem Workflow anpassen, und die Reviewer können entscheiden, was für Ihre spezifische App angemessen ist.

Als ersten Schritt müssen Sie sich für das Content Moderator-Reviewtool unter bit.ly/2n8XUB6 registrieren. Sie können sich mit Ihrem Microsoft-Konto registrieren oder ein lokales Konto erstellen. Nun werden Sie von der Website aufgefordert, ein Reviewteam zu erstellen, dessen Aufgabe die Überprüfung von Inhalten ist, die in die Grauzone fallen. Sie können mehrere Unterteams und Workflows erstellen, die den verschiedenen Unterteams Reviews zuweisen. Auf der Registerkarte „Anmeldeinformationen“ auf der Seite „Einstellungen“ des Portals können Sie Ihre Content Moderator-Einstellungen mit der Azure Cognitive Services-Ressource verknüpfen, die Sie zuvor erstellt haben. Kopieren Sie einfach den Schlüssel und die Ressourcen-ID aus dem Azure-Portal in die Einstellungen „Abonnementschlüssel“ und „Ressourcen-ID“ in der Moderator-Benutzeroberfläche. Bei der erstmaligen Erstellung Ihres Kontos erhalten Sie einen automatisch konfigurierten „Standardworkflow“. Wie Sie in der Reviewbenutzeroberfläche erkennen können, veranlasst dieser Workflow eine Überprüfung durch einen Menschen, wenn ein Bild als jugendgefährdend eingestuft wird. Beginnen wir, indem wir diesen Workflow im Aufgabenvorgang der Review-API verwenden.

Sie verwenden den in Abbildung 7 gezeigten Code, um den Aufgabenvorgang der Review-API aufzurufen.

Abbildung 7: Aufrufen des Aufgabenvorgangs der Review-API

var url = 'https://westus.api.cognitive.microsoft.com/contentmoderator/
  review/v1.0/teams/butterfly/jobs';
var req = unirest.post(url)
  .type("application/json")
  .query({
    ContentType: 'Image',
    ContentId: '67c21785-fb0a-4676-acf6-ccba82776f9a',
    WorkflowName: 'default',
    CallBackEndpoint: 'http://butterfly.azure.com/review'
  })
  .headers({
    "Ocp-Apim-Subscription-Key": <ocp_key>
  })
  .send({
    "ContentValue": pictureUrl
  })
  .end(function (res) {
    return callback(res.error, res.body );
});

Beachten Sie, dass die URL den Teamnamen „Butterfly“ und die Postfixaufgaben enthält. In „CallBackEndpoint“ geben wir den REST-Endpunkt an, den Content Moderator zum Benachrichtigen über die Reviewergebnisse aufruft. Wir geben außerdem eine eindeutige „ContentId“ an, damit wir das Bild korrelieren können, wenn Content Moderator uns zurückruft und wir die tatsächliche Bild-URL in „ContentValue“ senden. Wenn der Aufruf erfolgreich ist, enthält der Text des Ergebnisses kein Content Moderator-Ergebnis. Stattdessen wird die „JobId“ zurückgegeben:

{"JobId":"2017035c6c5f19bfa543f09ddfca927366dfb7"}

Sie erhalten das Ergebnis über den Rückruf, den Sie in „CallBackEndpoint“ angeben. Dieses Ergebnis enthält erneut die „JobId“, möglicherweise eine „ReviewId“ und eine „ContentId“, damit Querverweise erfolgen können. Für den Standardworkflow ruft Content Moderator sofort mit dem Ergebnis in den Metadaten zurück, wenn das Bild nicht als jugendgefährdend eingestuft wird. Der tatsächliche JSON-Code ähnelt dem Beispiel in Abbildung 8.

Abbildung 8: Ergebnisse des Standardworkflows

{
  "JobId": "2017035c6c5f19bfa543f09ddfca927366dfb7",
  "ReviewId": "",
  "WorkFlowId": "default",
  "Status": "Complete",
  "ContentType": "Image",
  "CallBackType": "Job",
  "ContentId": "67c21785-fb0a-4676-acf6-ccba82776f9a",
  "Metadata": {
    "adultscore": "0.465",
    "isadult": "False",
    "racyscore": "0.854",
    "isracy": "True"
  }
}

Der Status für diese Aufgabe wird auf „Complete“ festgelegt. Der „CallbackType“ ist „Job“. Wenn das Bild hingegen als jugendgefährdend eingestuft wird, erstellt Content Moderator einen Review und füllt das Feld „ReviewId“ mit einem Bezeichner auf. Das Bild findet sich dann in der Reviewbenutzeroberfläche und kann von Ihrem Reviewteam überprüft werden (siehe Abbildung 9).

Das Content Moderator-Reviewtool mit Bildern und nicht ausgewählten Tags
Abbildung 9: Das Content Moderator-Reviewtool mit Bildern und nicht ausgewählten Tags

Das Reviewtool und seine Verwendung bedürfen sicher einer weiteren Erläuterung. Das Tool ist für die Verarbeitung großer Mengen von Bildern konzipiert. Ein Reviewer überprüft alle Bilder auf einem Bildschirm, versieht die Bilder mit Tags, die die Musterung nicht bestehen, und fährt dann mit dem nächsten Bildschirm fort. Das Tool sieht vor, dass der Reviewer seine Meinung einige Sekunden lang ändern kann, wenn er glaubt, einen Fehler gemacht zu haben. Danach speichert Content Moderator die Bilder mit den endgültigen Tags und ruft die angegebene Rückruffunktion mit der endgültigen Bewertung erneut auf. Nun kann die geeignete Aktion eingeleitet werden: Der Inhalt wird basierend auf unseren Geschäftsanforderungen blockiert oder veröffentlicht. Der zweite Rückruf sieht ähnlich wie das Beispiel in Abbildung 10 aus.

Abbildung 10: Ergebnisse des Reviewrückrufs

{
  "ReviewId": "201703367f430472074c1fb18651a04750448c",
  "ModifiedOn": "2017-03-07T18:34:17.9436621Z",
  "ModifiedBy": "Bob",
  "CallBackType": "Review",
  "ContentId": "67c21785-fb0a-4676-acf6-ccba82776f9a",
  "ContentType": "Image",
  "Metadata": {
    "adultscore": "0.465",
    "isadult": "False",
    "racyscore": "0.854",
    "isracy": "True"
  },
  "ReviewerResultTags": {
    "a": "True",
    "r": "True",
    "pt": "False"
  }
}

Der „CallBackType“ ist nun „Review“ und nicht mehr „Job“. Außerdem sehen Sie die hinzugefügten „ReviewerResultTags“, während „ContentId“ und „ReviewId“ mit den Ergebnissen aus dem ersten Rückruf übereinstimmen.

Benutzerdefinierte Workflows

Da Sie nun Einblicke in den Standardworkflow gewonnen haben, können wir damit beginnen, an den Feinheiten zu schrauben. Für Butterfly sollen alle Inhalte mit einer Bewertung von weniger als 0,7 für Gewagtheit zulässig sein und alle Inhalte mit einer Bewertung höher als 0,9 blockiert werden. Auf alle Inhalte, die zwischen diesen Werten liegen, soll das Reviewteam einen Blick werfen. Aus diesem Grund erstellen wir im Workflow-Editor einen neuen Workflow.

In den Dropdownmenüs für „Verbinden mit“ sind zahlreiche Optionen verfügbar. Mithilfe dieser Optionen können Sie erweiterte Workflows z. B. mit dem OCR-Text (Optical Character Recognition) aus den Bilder- und Gesichtserkennungs-APIs erstellen. Das Tool ermöglicht auch das Deklarieren eines Rückrufendpunkts für einen Review. Wenn Sie im „CallBackEndpoint“ und hier einen Rückruf der Aufgaben-API abgeben, überschreibt der Rückruf im Workflow den „CallBackEndpoint“.

Wenn Sie nun den Aufgabenvorgang der Review-API aufrufen und diesen Workflow angeben, erhalten Sie wie beim Aufrufen des Standardworkflows eine „JobId“ zurück. Abhängig von der Gewagtheitsbewertung Ihres Bilds (zwischen 0,7 und 0,9 in unserem Fall) erstellt Content Moderator erneut einen Review, und diese Bilder werden in der Reviewbenutzeroberfläche von Content Moderator angezeigt.

Zu Workflows gibt es noch zwei abschließende Anmerkungen. Erstens: Wenn sich das Bild nicht im anfänglichen Job-Rückruf für einen Review qualifiziert, müssen wir noch herausfinden, ob sich das Bild im oberen Bewertungsbereich befindet und blockiert werden muss oder der untere Bewertungsbereich zutrifft und das Bild damit zulässig ist. Zu diesem Zweck müssen Sie die Programmlogik duplizieren. Dies bedeutet, dass es mit der Synchronisierung hapern kann. Glücklicherweise stellt das Review-Tool den Workflow als JSON-Code bereit. Besser noch: Es ist eine Workflow-REST-API verfügbar, die Sie zum Übermitteln der Workflows an die Content Moderator-API verwenden können. Mit ein wenig Programmierung können Sie den gleichen JSON-Code verwenden, um die Programmlogik Ihres Bots und das Review-Benutzeroberflächentool synchron zu halten.

Die zweite Anmerkung bezüglich der Workflows bezieht sich auf deren Erweiterbarkeit. Ein Schwerpunkt des Teams besteht darin, das Reviewtool als allgemeines Ziel für verschiedene APIs bereitzustellen. Wenn Sie zur Registerkarte „Connectors“ in der Reviewbenutzeroberfläche navigieren, werden die zurzeit verfügbaren Connectors angezeigt. Sie können diese Connectors aktivieren, indem Sie die entsprechenden Abonnementschlüssel eingeben. Im Fall von PhotoDNA ist es ganz einfach. Wenn Ihr Produkt beliebige Benutzerinhalte empfängt, möchten Sie sicherstellen, dass keine Bilder geteilt werden, die einen Bezug zu Kindesmissbrauch aufweisen. Das Integrieren dieser Aufgabe in einen vorhandenen Workflow ist ganz einfach, sobald Sie sich für den Dienst registriert haben. Diese Vorgehensweise besitzt mit Sicherheit Vorteile im Vergleich zum separaten Aufrufen der REST-APIs. Zurzeit sind die Textanalyse-API und Gesichtserkennungs-API als Connectors verfügbar. Sie finden diese APIs im Azure-Portal. Erstellen Sie einen Cognitive Service wie weiter oben in diesem Artikel beschrieben, und geben Sie den Abonnementschlüssel in die Content Moderator-Benutzeroberfläche ein.

Zusammenfassung

Es sind noch andere erweiterte Features verfügbar, die den Rahmen dieses Artikels sprengen. Sie können z. B. eigene Tags unter „Einstellungen“ erstellen, die in Ihren Workflows verwendet werden. Wir haben ein Tag „pt“ für anstößige Ausdrücke in Text erstellt. Wir verwenden dieses Tag in einem Workflow, der für die Moderation von Textinhalten eingerichtet wurde. Außerdem besitzen Workflows alternative Eingabemöglichkeiten, um Szenarien abdecken zu können, in denen das Eingabeformat nicht mit einem Qualifizierer übereinstimmt. Dies ist z. B. der Fall, wenn Sie anstößige Ausdrücke in Text in einem Bild mithilfe von OCR erkennen müssen. Sie können sich für Video Moderation registrieren (zurzeit als private Preview verfügbar). Schließlich können Sie davon ausgehen, dass weitere Connectors im Portal verfügbar werden, die Sie zum Erstellen und Erweitern Ihrer Workflows verwenden können.

Die Verwendung von Content Moderator ermöglicht Ihnen das horizontale Hochskalieren Ihrer Inhaltsmoderationsfunktionen auf alle Medienformate und große Volumen. Content Moderator ist eine Plattform: APIs und Lösungen, die wir speziell für den Inhaltsmoderationskontext erstellen. Mit der Anwendung können Sie Skalierung ausführen und auch andere Medienformate und neue Inhaltsmoderationsfunktionen nutzen, wenn diese verfügbar werden. Content Moderator verwendet die besten auf Machine Learning basierenden Klassifizierer und andere Technologien, die kontinuierlich optimiert werden. Optimierungen in den Klassifizierern verbessern automatisch Ihre Ergebnisse. 


Maarten van de Bospoort ist Principal Software Development Engineer für Developer Experience bei Microsoft in Redmond. Er arbeitet mit Entwicklern und Architekten großer Consumer-ISVs zusammen, um die Verwendung von Microsoft-Technologien (z. B. Bots, Cognitive Services und gelegentlich einer UWP-App) zu ermöglichen.

Sanjeev Jagtap ist Senior Product Manager im Content Moderator-Team bei Microsoft in Redmond. Seine Leidenschaft gilt Kunden, Microsoft-Technologien und Hackathons.

Unser Dank gilt dem folgenden technischen Experten bei Microsoft für die Durchsicht dieses Artikels: Christopher Harrison und Sudipto Rakshit