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).

14voto

Axel Punkte 213

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

Wenn Sie darauf bestehen, Benutzereingaben zuzulassen, und eine Moderation benötigen, sollten Sie menschliche Moderatoren einbeziehen.

13voto

Tim Cavanaugh Punkte 2648

Werfen Sie einen Blick auf CDYNEs Schimpfwortfilter-Webdienst

Test-URL

15 Stimmen

Cool aber er hat nicht abgehoben (.)(.)

2 Stimmen

Vorsichtig. CDYNE pflegt dieses Produkt nicht mehr. Sie können es auf eigene Gefahr verwenden.

3 Stimmen

Test-URL Link defekt.

8voto

Tural Ali Punkte 20702

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

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

https://github.com/turalus/openDB

Ich würde vorschlagen, dass Sie diese SQL in Ihrer DB ausführen und jedes Mal überprüfen, wenn der Benutzer etwas eingibt.

8voto

Sam Punkte 27419

Achten Sie auf Lokalisierungsprobleme: Was in einer Sprache ein Schimpfwort ist, kann in einer anderen ein ganz normales Wort sein.

Ein aktuelles Beispiel dafür: ebay verwendet ein Wörterbuch, um "böse Wörter" aus den Bewertungen herauszufiltern. Wenn Sie versuchen, die deutsche Übersetzung von "das war eine perfekte Transaktion" einzugeben, lehnt ebay das Feedback wegen schlechter Wörter ab.

Und warum? Weil das deutsche Wort für "war" "Krieg" heißt und "Krieg" im ebay-Wörterbuch der "bösen Wörter" steht.

Achten Sie also auf Lokalisierungsprobleme.

7voto

Dave Sherohman Punkte 44017

Was Ihre Teilfrage "das System austricksen" betrifft, so können Sie damit umgehen, indem Sie sowohl die Liste der "bösen Wörter" als auch den vom Benutzer eingegebenen Text normalisieren, bevor Sie die Suche durchführen. z.B. verwenden Sie eine Reihe von Regexen (oder tr wenn PHP es hat) zu konvertieren [z$5] zu "s", [4@] zu "a", usw., und vergleichen Sie dann die normalisierte Liste der "schlechten Wörter" mit dem normalisierten Text. Beachten Sie, dass die Normalisierung möglicherweise zu zusätzlichen Fehlalarmen führen kann, obwohl mir im Moment keine konkreten Fälle einfallen.

Die größere Herausforderung besteht darin, sich etwas einfallen zu lassen, das die Leute "The Stift ist mächtiger als das Schwert" und blockiert gleichzeitig "P e n i s".

14 Stimmen

Vergessen Sie nicht experts-exchange.com und pen-island.com; die URLs dieser Websites enthielten früher keine Bindestriche.

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