223 Stimmen

Wie implementiert man einen guten Schimpfwortfilter?

Viele von uns müssen mit Benutzereingaben, Suchanfragen und Situationen umgehen, in denen der Eingabetext möglicherweise Schimpfwörter oder unerwünschte Sprache enthält. Oftmals muss dies herausgefiltert werden.

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

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?

Welche guten Methoden gibt es, um Leute zu erwischen, die versuchen, das System auszutricksen, wie z. B. a$$, azz oder a55?

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

Edit: Antwort auf die Antworten, die besagen, dass man das programmatische Problem einfach vermeiden sollte:

Ich denke, dass diese Art von Filter sinnvoll ist, wenn beispielsweise ein Nutzer die öffentliche Bildersuche nutzen kann, um Bilder zu finden, die in einen sensiblen Gemeinschaftspool aufgenommen werden. Wenn sie nach "Penis" suchen können, dann werden sie wahrscheinlich viele Bilder von "ja" erhalten. Wenn wir solche Bilder nicht wollen, dann ist das Verbot des Wortes als Suchbegriff eine gute, wenn auch zugegebenermaßen nicht narrensichere Methode. Die eigentliche Frage ist, wie man die Liste der Wörter überhaupt erhält.

Ich suche also nach einer Möglichkeit, herauszufinden, ob ein einzelnes Token schmutzig ist oder nicht, und es dann einfach zu verbieten. Ich würde mir nicht die Mühe machen, eine Bemerkung wie die total witzige "Langhalsgiraffe" zu verhindern. Da kann man nichts machen :)

15 Stimmen

Es ist eine Schande, dass alle Top-Antworten existenzielle und defätistische Ablenkungen von der Programmierherausforderung sind. Angesichts der zunehmenden Bedeutung von "Cyborg"-Computerdiensten wie Mechanical Turk und der Tatsache, dass fast jede Software zu einer sozialen Plattform wird, ist es wichtiger denn je, eine Heuristik zu haben, um Inhalte mit einer roten Markierung zu versehen und sie einem Moderator zur Kenntnis zu bringen!

12 Stimmen

Bitte achten Sie auf den Sprachkontext, besonders wenn Sie i18n machen. Ich habe einmal versucht, eine Google-Gruppe für einen Kurs namens "Sanal ortamda görsellestirme" einzurichten, was auf Türkisch "Visualisierung in virtuellen Medien" heißt. Google war dumm genug, es abzulehnen. weil der Titel das Wort "anal" enthielt . Sanal[tr]=Virtual[en] und Google beschuldigte mich schamlos der Gotteslästerung! :D Bitte lassen Sie nicht zu, dass solche seltsamen Dinge passieren.

0 Stimmen

Wie wäre es, wenn Sie nach dem Wort suchen in Spanisch ? Sie können den Google-Bilder-Filter auf diese Weise umgehen (wenn Sie in einer anderen Sprache lokalisiert sind).

1voto

Gordon Punkte 304254

Ich stimme zu, dass das Thema sinnlos ist, aber wenn Sie einen Filter brauchen, schauen Sie sich Nings Buchsbaum :

Boxwood ist eine PHP-Erweiterung zum schnellen Ersetzen von mehreren Wörtern in einem Text. Sie unterstützt den Abgleich zwischen Groß- und Kleinschreibung. Der zu bearbeitende Text muss im Format UTF-8 kodiert sein.

Weitere Einzelheiten finden Sie auch in diesem Blogbeitrag:

Mit Boxwood kann die Liste der Suchbegriffe beliebig lang sein - der Such- und Ersetzungsalgorithmus wird nicht langsamer, je mehr Wörter auf der Liste der zu suchenden Wörter stehen. Boxwood erstellt ein Trie mit allen Suchbegriffen und durchsucht den Text nur einmal, indem es die Elemente des Trie durchgeht und sie mit den Zeichen in Ihrem Text vergleicht. Es unterstützt US-ASCII und UTF-8, unterscheidet zwischen Groß- und Kleinschreibung und verfügt über eine englischsprachige Logik zur Überprüfung von Wortgrenzen.

1voto

Jaider Punkte 13198

Ich bin zu dem Schluss gekommen, dass wir 3 Hauptkomponenten brauchen, um einen guten Profanitätsfilter zu erstellen, oder zumindest ist es das, was ich tun werde. Diese sind:

  1. Der Filter: ein Hintergrunddienst, der anhand einer schwarzen Liste, eines Wörterbuchs oder Ähnlichem prüft.
  2. Anonymes Konto nicht zulassen
  3. Missbrauch melden

Ein Bonus wird es sein, diejenigen, die mit genauen Missbrauchsmeldungen beitragen, irgendwie zu belohnen und die Übeltäter zu bestrafen, z.B. ihre Konten zu sperren.

1voto

Adam Jaskiewicz Punkte 10844

Tun Sie es nicht. Das führt nur zu Problemen. Ein persönliches Erlebnis, das ich mit Schimpfwortfiltern habe, ist das eine Mal, als ich aus einem IRC-Kanal geworfen/verbannt wurde, weil ich erwähnt hatte, dass ich "für ein paar Stunden über die Brücke nach Hancock fahre" oder so etwas in der Art.

1voto

Robert K Punkte 29416

Ehrlich gesagt würde ich es ihnen überlassen, die Worte "das System auszutricksen" zu verwenden und sie stattdessen zu verbieten, aber das ist nur meine Meinung. Aber es macht auch die Programmierung einfacher.

Ich würde einen Regex-Filter wie folgt implementieren: /[\s]dooby (doo?)[\s]/i oder es wird das Wort auf anderen vorangestellt, /[\s]doob(er|ed|est)[\s]/ . Dies würde verhindern, dass Wörter wie "beschwichtigt" gefiltert werden, was durchaus zulässig ist, aber auch die Kenntnis der anderen Varianten und die Aktualisierung des eigentlichen Filters erfordern würde, wenn Sie eine neue Variante lernen. Das sind natürlich nur Beispiele, aber Sie müssen selbst entscheiden, wie Sie es machen wollen.

Ich habe keine Lust, alle Wörter abzutippen, die ich kenne, wenn ich sie gar nicht kennen will.

-10voto

eyelidlessness Punkte 60421

Tun Sie es nicht.

Weil:

  • Clbuttic
  • Profanität ist nicht OMG EVIL
  • Profanität kann nicht wirksam definiert werden
  • Die meisten Menschen schätzen es wahrscheinlich nicht, vor Gotteslästerung "geschützt" zu werden.

Edit: Ich stimme zwar mit dem Kommentator überein, der sagte "Zensur ist falsch", aber das ist nicht die Art dieser Antwort.

96 Stimmen

10 positive Bewertungen für diese Nicht-Antwort? Als ob jeder, der Schimpfwörter filtern will, ein moralisierender Schwachkopf sein muss? Ach du meine Güte. Dies ist eine berechtigte Frage und abfällige Antworten im Vorbeifahren sollten nicht belohnt werden. -1.

12 Stimmen

@Kludge: Sie sind der Einzige, der von "moralisierendem Halbwissen" gesprochen hat. Tatsächlich habe ich überhaupt nichts über die moralische Natur der Einführung eines Profanitätsfilters gesagt. Mitch bringt einen Teil des Grundes vor, warum ich "nicht" gesagt habe, und das ist keine abfällige Bemerkung im Vorbeifahren. Manchmal ist "nicht" die richtige Antwort auf die Frage "Wie soll ich...?" [Forts.]

1 Stimmen

Ich glaube, dass dies einer dieser Momente ist. Dass Sie anderer Meinung sind, ist in Ordnung, aber ich denke, Sie sollten nicht zu viel hineininterpretieren. Und wenn Sie fragen wollen warum Ich bin der Meinung, dass man das nicht tun sollte, aber ich bin gerne bereit, die Antwort zu erläutern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X