it-swarm.com.de

Wie implementiert man einen guten Obszönitätsfilter?

Viele von uns müssen sich mit Benutzereingaben, Suchanfragen und Situationen befassen, in denen der Eingabetext möglicherweise Schimpfwörter oder unerwünschte Sprachen enthalten kann. Oft muss dies herausgefiltert werden.

Wo findet man eine gute Liste von Schimpfwörtern in verschiedenen Sprachen und Dialekten?

Gibt es APIs für Quellen, die gute Listen enthalten? Oder vielleicht eine API, die einfach sagt "Ja, das ist sauber" oder "Nein, das ist schmutzig" mit einigen Parametern?

Was sind einige gute Methoden, um Leute zu fangen, die versuchen, das System auszutricksen, wie ein $$, ein azz oder ein a55?

Bonuspunkte, wenn Sie Lösungen für PHP anbieten. :)

Bearbeiten: Antwort auf Antworten, die sagen, vermeiden Sie einfach das programmatische Problem:

Ich denke, es gibt einen Platz für diese Art von Filter, wenn ein Benutzer beispielsweise die öffentliche Bildsuche verwenden kann, um Bilder zu finden, die einem sensiblen Community-Pool hinzugefügt werden. Wenn sie nach "Penis" suchen können, werden sie wahrscheinlich viele Bilder von bekommen, yep. Wenn wir keine Bilder davon wollen, dann ist das Verhindern des Wortes als Suchbegriff ein guter Pförtner, obwohl dies zugegebenermaßen keine narrensichere Methode ist. Die Liste der Wörter an erster Stelle zu bekommen, ist die eigentliche Frage.

Ich beziehe mich also wirklich auf einen Weg, um herauszufinden, ob ein einzelnes Token schmutzig ist oder nicht, und lasse es dann einfach nicht zu. Ich würde nicht die Mühe machen, ein Gefühl wie das der total komischen "Langhalsgiraffe" zu verhindern. Da kann man nichts machen. :)

195
Ben Throop

Obszönitätsfilter: schlechte Idee oder unglaublich aufregende schlechte Idee?

Man kann auch nicht vergessen The Untold History of Toontowns SpeedChat , wo sogar die Verwendung einer "Safe-Word-Whitelist" dazu führte, dass ein 14-Jähriger sie schnell umging mit: "I want to Stecke meine langhalsige Giraffe auf deinen flauschigen weißen Hasen. "

Fazit: Letztendlich gibt es für jedes System, das Sie implementieren, keinen Ersatz für eine Überprüfung durch den Menschen (egal ob Peer oder auf andere Weise). Fühlen Sie sich frei, ein rudimentäres Tool zu implementieren, um die Drive-bys loszuwerden, aber für den entschlossenen Troll müssen Sie unbedingt einen nicht algorithmischen Ansatz haben.

Ein System, das Anonymität beseitigt und Rechenschaftspflicht einführt (was Stack Overflow gut kann), ist auch hilfreich, insbesondere, um zu bekämpfen John Gabriels G.I.F.T.

Sie haben auch gefragt, wo Sie Profanitätslisten erhalten können, um loszulegen - ein Open-Source-Projekt, das Sie auschecken sollten, ist Dansguardian - Überprüfen Sie den Quellcode nach den Standard-Profanitätslisten. Es gibt auch einen zusätzlichen Drittanbieter Phrasenliste , den Sie für den Proxy herunterladen können. Dies kann ein hilfreicher Anhaltspunkt für Sie sein.

Bearbeite als Antwort die Frage edit: Danke für die Klarstellung, was du versuchst zu tun. In diesem Fall gibt es zwei Möglichkeiten, wenn Sie nur versuchen, einen einfachen Word-Filter zu erstellen. Eine besteht darin, einen einzelnen langen regulären Ausdruck mit allen verbotenen Phrasen zu erstellen, die Sie zensieren möchten, und lediglich einen regulären Ausdruck zu finden/zu ersetzen. Ein regulärer Ausdruck wie:

$filterRegex = "(boogers|snot|poop|shucks|argh)"

und führe es mit preg_match () in deinem Eingabe-String aus, um einen Groß-Test für einen Treffer durchzuführen,

oder preg_replace () , um sie auszublenden.

Sie können diese Funktionen auch mit Arrays anstelle eines einzelnen langen regulären Ausdrucks laden. Bei langen Wortlisten ist dies möglicherweise einfacher zu handhaben. In preg_replace () finden Sie einige gute Beispiele für die flexible Verwendung von Arrays.

Weitere PHP Programmierbeispiele finden Sie auf dieser Seite für eine etwas fortgeschrittene generische Klasse für die Wortfilterung, bei der * die Mittelbuchstaben von zensierten Wörtern herausgefiltert werden, und dies - vorherige Stapelüberlauf-Frage das hat auch ein PHP) Beispiel (der wichtigste wertvolle Teil ist der SQL-basierte gefilterte Word-Ansatz - auf den Leet-Speak-Kompensator kann verzichtet werden wenn Sie es unnötig finden).

Sie haben außerdem hinzugefügt: " Die Liste der Wörter an erster Stelle zu bekommen, ist die eigentliche Frage." - Zusätzlich zu einigen der vorherigen Dansgaurdian-Links finden Sie möglicherweise dies ist praktisch) .Zip von 458 Wörtern hilfreich sein.

174
HanClinto

Ich weiß zwar, dass diese Frage ziemlich alt ist, aber es ist eine häufig auftretende Frage ...

Es gibt sowohl einen Grund als auch einen besonderen Bedarf an Obszönitätsfiltern (siehe Wikipedia-Eintrag hier ), aber sie sind oft aus ganz bestimmten Gründen nicht 100% genau. Kontext und Genauigkeit .

Es kommt (ganz) darauf an, was Sie erreichen wollen - im einfachsten Fall versuchen Sie wahrscheinlich, das " sieben Schimpfwörter " und dann einige ... Einige Unternehmen müssen filtern die grundlegendste der Weltlichkeit: grundlegende Schimpfwörter, URLs oder sogar persönliche Informationen und so weiter, aber andere müssen illegale Kontonamen verhindern (Xbox Live ist ein Beispiel) oder vieles mehr ...

Benutzergenerierte Inhalte enthalten nicht nur potenzielle Schimpfwörter, sondern können auch anstößige Verweise auf Folgendes enthalten:

  • Sexuelle Handlungen
  • Sexuelle Orientierung
  • Religion
  • Ethnizität
  • Etc...

Und möglicherweise in mehreren Sprachen. Shutterstock hat grundlegende Dirty-Words-Listen in 10 Sprachen entwickelt, ist aber immer noch grundlegend und sehr stark auf ihre 'Tagging'-Bedürfnisse ausgerichtet. Es gibt eine Reihe weiterer Listen im Internet.

Ich stimme der akzeptierten Antwort zu, dass es keine definierte Wissenschaft ist und wie Sprache eine sich ständig weiterentwickelnde Herausforderung ist, bei der eine Fangquote von 90% besser als 0 ist %. Es hängt nur von Ihren Zielen ab - was Sie erreichen möchten, wie viel Unterstützung Sie haben und wie wichtig es ist, Schimpfwörter unterschiedlicher Art zu entfernen.

Wenn Sie einen Filter erstellen, müssen Sie die folgenden Elemente und ihre Beziehung zu Ihrem Projekt berücksichtigen:

  • Wörter/Phrasen
  • Akronyme (FOAD/LMFAO usw.)
  • False Positives (Wörter, Orte und Namen wie 'mishit', 'scunthorpe' und 'titsworth')
  • URLs (Pornoseiten sind ein naheliegendes Ziel)
  • Persönliche Informationen (E-Mail, Adresse, Telefon usw. - falls zutreffend)
  • Sprachauswahl (normalerweise Englisch standardmäßig)
  • Moderation (wie, wenn überhaupt, können Sie mit benutzergenerierten Inhalten interagieren und was Sie damit tun können)

Sie können leicht einen Obszönitätsfilter erstellen, der über 90% der Obszönitäten erfasst, aber Sie werden niemals 100% erreichen. Es ist einfach nicht möglich. Je näher Sie sich 100% nähern möchten, desto schwieriger wird es. Nachdem Sie in der Vergangenheit eine komplexe Profanitäts-Engine erstellt haben, die mehr als 500.000 Echtzeitnachrichten pro Tag verarbeitet, würde ich Ihnen den folgenden Rat geben:

Ein grundlegender Filter würde beinhalten:

  • Erstellen einer Liste der zutreffenden Obszönitäten
  • Entwicklung einer Methode zum Umgang mit Ableitungen von Obszönitäten

Ein mäßig komplexer Filer würde (zusätzlich zu einem Basisfilter) beinhalten:

  • Komplexe Mustererkennung für erweiterte Ableitungen verwenden (mit erweitertem Regex)
  • Umgang mit Leetspeak (l33t)
  • Umgang mit falsch positiv

Ein komplexer Filter würde eine Reihe von Folgendem beinhalten (zusätzlich zu einem moderaten Filter):

  • Whitelists und Blacklists
  • Naive Bayesian Inference Filterung von Phrasen/Begriffen
  • Soundex Funktionen (wo ein Wort wie ein anderes klingt)
  • Levenshtein Abstand
  • Stemming
  • Menschliche Moderatoren, die eine Filter-Engine anleiten, um anhand von Beispielen zu lernen oder wo Übereinstimmungen ohne Anleitung nicht genau genug sind (ein sich selbst/ständig verbesserndes System)
  • Vielleicht eine Art KI-Motor
40
nickhar

Ich kenne keine guten Bibliotheken dafür, aber was auch immer Sie tun, stellen Sie sicher, dass Sie sich in die Richtung irren, Dinge durchzulassen. Ich habe mich mit Systemen befasst, die es mir nicht erlauben würden, "mpassell" als Benutzernamen zu verwenden, da es "ass" als Teilzeichenfolge enthält. Das ist eine großartige Möglichkeit, Benutzer zu entfremden!

26
Matt Passell

Während eines Vorstellungsgesprächs hat der CTO der Firma, der mich interviewt hat, ein Wort-/Webspiel ausprobiert, das ich in Java geschrieben habe. Was war aus einer Wortliste des gesamten Oxford English Dictionary das erste Wort, das erraten wurde?

Natürlich das schlechteste Wort in der englischen Sprache.

Irgendwie habe ich immer noch das Stellenangebot bekommen, aber dann habe ich eine profane Wortliste aufgespürt (nicht im Gegensatz zu dieser ) und ein schnelles Skript geschrieben, um ein neues Wörterbuch ohne alle schlechten Wörter (ohne gerade) zu generieren auf die Liste schauen müssen).

In Ihrem speziellen Fall klingt der Vergleich der Suche mit echten Wörtern so, als würde man mit einer solchen Wortliste umgehen. Die alternativen Stile/Zeichensetzung erfordern etwas mehr Arbeit, aber ich bezweifle, dass Benutzer dies oft genug verwenden, um ein Problem zu sein.

23
Matthew

ein Profanity-Filtersystem wird niemals perfekt sein, selbst wenn der Programmierer über alles Nackte auf dem Laufenden ist

das heißt, jede Liste von "ungezogenen Wörtern" wird wahrscheinlich genauso gut funktionieren wie jede andere Liste, da das zugrunde liegende Problem Sprachverständnis ist, was mit der gegenwärtigen Technologie ziemlich schwer zu lösen ist

daher gibt es nur zwei praktische Lösungen:

  1. seien Sie darauf vorbereitet, Ihr Wörterbuch regelmäßig zu aktualisieren
  2. beauftragen Sie einen menschlichen Redakteur mit der Korrektur von falschen Positiven (z. B. "clbuttic" anstelle von "classic") und falschen Negativen (oops! missed one!)
21
Steven A. Lowe
13
Tim Cavanaugh

Die einzige Möglichkeit, anstößige Benutzereingaben zu verhindern, besteht darin, alle Benutzereingaben zu verhindern.

Wenn Sie darauf bestehen, Benutzereingaben zuzulassen, und Moderation benötigen, binden Sie menschliche Moderatoren ein.

13
Axel

In Bezug auf Ihre Unterfrage "Trick the System" können Sie dies tun, indem Sie sowohl die Liste "Bad Word" als auch den vom Benutzer eingegebenen Text normalisieren, bevor Sie Ihre Suche durchführen. Verwenden Sie zB eine Reihe von Regexen (oder tr if PHP hat es) um [z $ 5] in "s" umzuwandeln, - [4 @] mit "a" usw. vergleichen Sie dann die normalisierte "Bad Word" -Liste mit dem normalisierten Text. Beachten Sie, dass die Normalisierung möglicherweise zu zusätzlichen Fehlalarmen führen kann, obwohl ich nicht denken kann aller aktuellen Fälle im Moment.

Die größere Herausforderung besteht darin, etwas zu finden, mit dem die Leute "The pen is mächtiger als das Schwert" zitieren und "p e n i s" blockieren können.

7
Dave Sherohman

Hüten Sie sich vor Lokalisierungsproblemen: Was in einer Sprache ein Schimpfwort ist, kann in einer anderen Sprache ein ganz normales Wort sein.

Ein aktuelles Beispiel hierfür: ebay verwendet einen Wörterbuchansatz, um "schlechte Wörter" aus dem Feedback herauszufiltern. Wenn Sie versuchen, die deutsche Übersetzung von "das war eine perfekte Transaktion" einzugeben, lehnt ebay das Feedback aufgrund von schlechten Worten ab.

Warum? Denn das deutsche Wort für "was" ist "war" und "war" steht im ebay Wörterbuch für "böse Worte".

Also Vorsicht vor Lokalisierungsproblemen.

7
Sam

Wenn Sie so etwas wie Digg/Stackoverflow tun können, bei dem die Benutzer obszönen Inhalt ablehnen/markieren können, tun Sie dies.

Dann müssen Sie nur noch die "ungezogenen" Benutzer überprüfen und sie blockieren, wenn sie gegen die Regeln verstoßen.

6
scunliffe

Ich bin ein bisschen zu spät zur Party, aber ich habe eine Lösung, die für einige, die dies lesen, funktionieren könnte. Es ist in Javascript anstelle von PHP, aber es gibt einen gültigen Grund dafür.

Vollständige Offenlegung, ich habe dieses Plugin geschrieben ...

Sowieso.

Der Ansatz, den ich gewählt habe, besteht darin, einem Benutzer die Möglichkeit zu geben, sich für seine Obszönitätsfilterung zu entscheiden. Grundsätzlich wird Profanität standardmäßig zugelassen, aber wenn meine Benutzer es nicht lesen möchten, müssen sie es nicht. Dies hilft auch beim Problem "l33t sp3 @ k".

Das Konzept ist ein einfaches jquery Plug-in, das vom Server injiziert wird, wenn das Konto des Clients die Filterung von Obszönitäten aktiviert. Von dort aus sind es nur ein paar einfache Zeilen, die die Schwüre auslöschen.

Hier ist die Demo-Seite
https://chaseflorell.github.io/jQuery.ProfanityFilter/demo/

<div id="foo">
    ass will fail but password will not
</div>

<script>
    // code:
    $('#foo').profanityFilter({
        customSwears: ['ass']
    });
</script>

Ergebnis

*** schlägt fehl, das Passwort jedoch nicht

4
Chase Florell

Sobald Sie eine gute MYSQL-Tabelle mit einigen schlechten Wörtern haben, die Sie filtern möchten (ich habe mit einem der Links in diesem Thread begonnen), können Sie Folgendes tun:

$errors = array();  //Initialize error array (I use this with all my PHP form validations)

$SCREENNAME = mysql_real_escape_string($_POST['SCREENNAME']); //Escape the input data to prevent SQL injection when you query the profanity table.

$ProfanityCheckString = strtoupper($SCREENNAME); //Make the input string uppercase (so that 'BaDwOrD' is the same as 'BADWORD').  All your values in the profanity table will need to be UPPERCASE for this to work.

$ProfanityCheckString = preg_replace('/[_-]/','',$ProfanityCheckString); //I allow alphanumeric, underscores, and dashes...nothing else (I control this with PHP form validation).  Pull out non-alphanumeric characters so 'B-A-D-W-O-R-D' shows up as 'BADWORD'.

$ProfanityCheckString = preg_replace('/1/','I',$ProfanityCheckString); //Replace common numeric representations of letters so '84DW0RD' shows up as 'BADWORD'.

$ProfanityCheckString = preg_replace('/3/','E',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/4/','A',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/5/','S',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/6/','G',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/7/','T',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/8/','B',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/0/','O',$ProfanityCheckString); //Replace ZERO's with O's (Capital letter o's).

$ProfanityCheckString = preg_replace('/Z/','S',$ProfanityCheckString); //Replace Z's with S's, another common substitution.  Make sure you replace Z's with S's in your profanity database for this to work properly.  Same with all the numbers too--having S3X7 in your database won't work, since this code would render that string as 'SEXY'.  The profanity table should have the "rendered" version of the bad words.

$CheckProfanity = mysql_query("SELECT * FROM DATABASE.TABLE p WHERE p.Word = '".$ProfanityCheckString."'");
if(mysql_num_rows($CheckProfanity) > 0) {$errors[] = 'Please select another Screen Name.';} //Check your profanity table for the scrubbed input.  You could get real crazy using LIKE and wildcards, but I only want a simple profanity filter.

if (count($errors) > 0) {foreach($errors as $error) {$errorString .= "<span class='PHPError'>$error</span><br /><br />";} echo $errorString;} //Echo any PHP errors that come out of the validation, including any profanity flagging.


//You can also use these lines to troubleshoot.
//echo $ProfanityCheckString;
//echo "<br />";
//echo mysql_error();
//echo "<br />";

Ich bin sicher, dass es einen effizienteren Weg gibt, all diese Ersetzungen vorzunehmen, aber ich bin nicht schlau genug, um es herauszufinden (und das scheint in Ordnung zu sein, wenn auch ineffizient).

Ich bin der Meinung, dass Sie sich irren sollten, wenn Sie Benutzern erlauben, sich zu registrieren, und Menschen verwenden sollten, um Ihre Obszönitätstabelle nach Bedarf zu filtern und zu ergänzen. Obwohl alles von den Kosten eines falsch positiven (als schlecht gekennzeichnetes Wort) im Vergleich zu einem falsch negativen (schlechtes Wort kommt durch) abhängt. Das sollte letztendlich bestimmen, wie aggressiv oder konservativ Sie in Ihrer Filterstrategie sind.

Ich wäre auch sehr vorsichtig, wenn Sie Wildcards verwenden möchten, da diese sich manchmal lästiger verhalten können, als Sie beabsichtigen.

2
andrew

Ich stimme HanClintos Beitrag weiter oben in dieser Diskussion zu. Ich verwende im Allgemeinen reguläre Ausdrücke, um den eingegebenen Text mit einem String abzugleichen. Und dies ist eine vergebliche Anstrengung, da Sie, wie Sie ursprünglich erwähnt haben, explizit jede im Netz beliebte Trickform des Schreibens in Ihrer "gesperrten" Liste berücksichtigen müssen.

Nebenbei bemerkt, während andere über die Ethik der Zensur diskutieren, muss ich zustimmen, dass im Web ein Formular erforderlich ist. Manche Leute mögen es einfach, vulgär zu posten, weil es für eine große Anzahl von Leuten sofort anstößig sein kann und absolut keine Gedanken seitens des Autors erfordert.

Danke für die Ideen.

HanClinto Regeln!

2
msm516

Ich habe 2200 schlechte Wörter in 12 Sprachen gesammelt: en, ar, cs, da, de, eo, es, fa, fi, fr, hallo, hu, es, ja, ko, nl, nein, pl, pt, ru, sv th, tlh, tr, zh.

Es stehen MySQL-Dump-, JSON-, XML- oder CSV-Optionen zur Verfügung.

https://github.com/turalus/openDB

Ich empfehle Ihnen, diese SQL in Ihrer Datenbank auszuführen und jedes Mal zu überprüfen, wenn der Benutzer etwas eingibt.

2
Tural Ali

Nicht. Es führt nur zu Problemen. Eine wichtige persönliche Erfahrung, die ich mit Obszönitätsfiltern gemacht habe, ist die Zeit, in der ich von einem IRC=) -Kanal ausgeschlossen wurde, weil ich "für ein paar Stunden über die Brücke nach Hancock fuhr" oder so zu diesem Zweck.

2
Adam Jaskiewicz

Ich kam zu dem Schluss, dass wir drei Hauptkomponenten benötigen, um einen guten Obszönitätsfilter zu erstellen, oder zumindest das, was ich tun werde. Das sind sie:

  1. Der Filter: ein Hintergrunddienst, der anhand einer Blacklist, eines Wörterbuchs oder dergleichen überprüft.
  2. Kein anonymes Konto zulassen
  3. Missbrauch melden

Ein Bonus wird es sein, auf irgendeine Weise diejenigen zu belohnen, die mit genauen Missbrauchsmeldern beitragen und den Täter bestrafen, z. ihre Konten sperren.

1
Jaider

Ehrlich gesagt, würde ich zulassen, dass sie die "Trick the System" -Wörter herausholen und sie stattdessen verbieten, was nur ich bin. Es vereinfacht aber auch die Programmierung.

Ich würde einen Regex-Filter wie folgt implementieren: /[\s]dooby (doo?)[\s]/i oder das Wort wird anderen vorangestellt, /[\s]doob(er|ed|est)[\s]/. Dies würde verhindern, dass Wörter wie "Assuaged" gefiltert werden, was durchaus gültig ist, würde aber auch Kenntnisse über die anderen Varianten und die Aktualisierung des eigentlichen Filters erfordern, wenn Sie einen neuen lernen. Dies sind natürlich alles Beispiele, aber Sie müssen selbst entscheiden, wie Sie es tun möchten.

Ich werde nicht alle Wörter, die ich kenne, ausschreiben, nicht, wenn ich sie eigentlich nicht wissen möchte.

1
Robert K

Ich bin mit der Sinnlosigkeit des Themas einverstanden, aber wenn Sie einen Filter benötigen, lesen Sie Nings Boxwood :

Boxwood ist eine PHP Erweiterung zum schnellen Ersetzen mehrerer Wörter in einem Textabschnitt. Es unterstützt Übereinstimmungen zwischen Groß- und Kleinschreibung. Es erfordert, dass der Text, mit dem es arbeitet, als UTF-Code codiert wird. 8.

Weitere Details finden Sie auch in diesem Blog-Beitrag:

Mit Boxwood können Sie Ihre Liste der Suchbegriffe beliebig lang halten - der Such- und Ersetzungsalgorithmus wird nicht langsamer, wenn mehr Wörter in der Liste der zu suchenden Wörter enthalten sind. Es funktioniert, indem ein Trie aller Suchbegriffe erstellt wird und der Betreff-Text nur einmal gescannt wird. Dabei werden die Elemente des Trie durchsucht und mit den Zeichen in Ihrem Text verglichen. Es unterstützt US-ASCII- und UTF-8-Übereinstimmungen, bei denen zwischen Groß- und Kleinschreibung unterschieden wird, und verfügt über eine englischsprachige Logik zur Prüfung der Wortgrenzen.

1
Gordon

Ebenfalls spät im Spiel, habe aber ein paar Nachforschungen angestellt und bin hier rüber gestolpert. Wie andere bereits erwähnt haben, ist es nahezu unmöglich, wenn es automatisiert wurde, aber wenn Ihr Design/Ihre Anforderung in einigen Fällen (aber nicht immer) menschliche Interaktionen beinhalten kann, um zu überprüfen, ob es profan ist oder nicht, können Sie ML in Betracht ziehen. https://docs.Microsoft.com/en-us/Azure/cognitive-services/content-moderator/text-moderation-api#profanity ist momentan aus mehreren Gründen meine Wahl:

  • Unterstützt viele Lokalisierungen
  • Die Datenbank wird ständig aktualisiert, sodass ich nicht mit den neuesten Slangs oder Sprachen Schritt halten muss (Wartungsproblem).
  • Wenn eine hohe Wahrscheinlichkeit besteht (d. H. 90% oder mehr), können Sie dies einfach pragmatisch ablehnen
  • Sie können nach Kategorien suchen, die eine Flagge hervorrufen, die Profanität sein kann oder nicht, und sie von jemandem überprüfen lassen, um zu lehren, dass sie profan ist oder nicht.

Für mein Bedürfnis war/ist es ein öffentlich-freundlicher kommerzieller Dienst (OK, Videospiele), bei dem andere Benutzer den Benutzernamen sehen können/werden, aber das Design erfordert, dass es einen Obszönitätsfilter durchläuft, um einen anstößigen Benutzernamen abzulehnen. Der traurige Teil dabei ist, dass das klassische "clbuttic" -Problem höchstwahrscheinlich auftritt, da Benutzernamen in der Regel aus einem einzigen Wort (bis zu N Zeichen) bestehen, das manchmal aus mehreren Wörtern besteht. Der kognitive Dienst von Microsoft kennzeichnet "Assist" nicht als Text. HasProfanity = true, markiert jedoch möglicherweise eine der Kategorien, deren Wahrscheinlichkeit hoch ist.

Als das OP nachfragt, was ist mit "a $$", ist hier ein Ergebnis, als ich es durch den Filter geschickt habe: enter image description here Wie Sie sehen, hat es festgestellt, dass es nicht profan ist, aber es ist mit hoher Wahrscheinlichkeit so, dass es als Empfehlungen für die Überprüfung (menschliche Interaktionen) gekennzeichnet ist.

Wenn die Wahrscheinlichkeit hoch ist, kann ich entweder zurückkehren "Es tut mir leid, dieser Name ist bereits vergeben" (auch wenn dies nicht der Fall ist), so dass es weniger anstößig für Anti-Zensur-Personen ist oder so, wenn wir es nicht wollen Um die Überprüfung durch den Benutzer zu integrieren oder "Ihr Benutzername wurde der Live-Betriebsabteilung mitgeteilt. Sie können warten, bis Ihr Benutzername überprüft und genehmigt wurde, oder einen anderen Benutzernamen auswählen". Oder Wasauchimmer...

Übrigens sind die Kosten/Preise für diesen Service für meinen Zweck recht niedrig (wie oft wird der Benutzername geändert?), Aber auch für OP erfordert das Design möglicherweise intensivere Abfragen und ist möglicherweise nicht ideal zum Bezahlen/Abonnieren ML-Services, oder es können keine Überprüfungen/Interaktionen durch den Menschen durchgeführt werden. Es hängt alles vom Design ab ... Aber wenn das Design den Anforderungen entspricht, kann dies möglicherweise die Lösung von OP sein.

Bei Interesse kann ich in Zukunft die Nachteile im Kommentar auflisten.

0
HidekiAI