Comment mettre en place un bon filtre de langage?
Beaucoup d'entre nous besoin pour faire face à la saisie de l'utilisateur, les requêtes de recherche, et des situations où la saisie de texte peut contenir des grossièretés ou des indésirables de la langue. Souvent, ce doit être filtré.
Où peut-on trouver une bonne liste de gros mots dans les différentes langues et dialectes?
Sont là des Api à disposition des sources qui contiennent de bonnes listes? Ou peut-être une API qui dit simplement "oui, c'est propre" ou "non c'est sale" avec certains paramètres?
Quelles sont les bonnes méthodes pour attraper les gens qui tentent de tromper le système, comme un$$, azz, ou a55?
Des points de Bonus si vous proposez des solutions pour PHP. 🙂
Edit: Réponse à des réponses qui disent simplement éviter la programmatique question:
Je pense qu'il y a une place pour ce genre de filtre lorsque, par exemple, un utilisateur peut utiliser l'image publique de recherche pour trouver des photos qui sont ajoutés à une sensible à la piscine communautaire. Si il est possible de rechercher pour "pénis", alors ils seront probablement obtenir beaucoup de photos de l', yep. Si nous ne voulons pas de photos de l', puis prévenir le mot comme un terme de recherche est un bon gardien, certes pas une méthode infaillible. Obtenir la liste des mots en premier lieu est la vraie question.
Donc, je suis vraiment se référant à une façon de voir d'un seul jeton est sale ou pas et puis tout simplement la rejeter. Je n'avais pas la peine de prévenir un sentiment comme la totalement hilarant "au long cou de girafe" de référence. Rien que vous pouvez faire là-bas. 🙂
Veuillez être prudent au sujet de la langue en contexte, surtout si vous êtes en train de faire i18n. Une fois, j'ai essayé de mettre en place un Groupe Google pour le cours que je donnais appelé "Sanal ortamda görselleştirme" qui est le turc pour "la Visualisation du média virtuel". Google a été assez stupide pour refuser parce que le titre contient le mot "anal". Sanal[tr]=Virtuelle[fr] et Google sans vergogne m'a accusé de blasphème! 😀 s'il vous Plaît ne laissez pas bizarre ce genre de choses arrivent.
Si vous cherchez le mot dans espagnol? Vous pouvez réellement obtenir autour de Google Images filtre (si vous êtes localisé à une autre langue).
Une autre suggestion serait de ne PAS interdire ces mots, mais pour enregistrer les utilisateurs qui les utilisent. Si un utilisateur/IP est de plus de 2, 3 ou ce que vous voulez, puis bloquer cette personne. Pas infaillible non plus, mais je pense que c'est beaucoup plus pratique à être bloqués et doivent changer d'utilisateur/IP/tant que l'écriture "fluffy bunny blanc" au lieu de "chatte". D'une part, les utilisateurs ne sais pas QUELS mots ou expressions qu'ils ne peuvent pas utiliser, de sorte qu'ils ne peuvent pas deviner les différentes mauvais mots que les donc facilement que d'être banni.
Les filtres de blasphèmes sont une mauvaise idée. C'est très dur de faire la différence entre quelqu'un qui essaie de tromper le système ("Fudge vous!") et quelqu'un légitimement parler de quelque chose de totalement approprié ("j'aime le chocolat fudge.")
OriginalL'auteur Ben Throop | 2008-11-07
Vous devez vous connecter pour publier un commentaire.
L'obscénité Filtres: Mauvaise Idée, ou Incroyablement Intercoursing Mauvaise Idée?
Aussi, on ne peut pas oublier L'Histoire Inédite de Toontown est SpeedChat, où même à l'aide d'un "safe word liste blanche" a abouti à un jeune de 14 ans rapidement le contourner avec:
"Je veux coller mon long cou de Girafe de votre fluffy bunny blanc."
Bas de ligne: en fin de compte, pour n'importe quel système que vous mettre en œuvre, il n'y a absolument pas de substitut pour l'examen humaine (que ce soit par les pairs ou autre). N'hésitez pas à implémenter un outil rudimentaire pour se débarrasser de la voiture-par s, mais pour les plus déterminés, troll, vous devez absolument avoir un non-algorithme de base de l'approche.
Un système qui supprime l'anonymat et de la présente reddition de comptes (quelque chose que le Débordement de la Pile n') est aussi utile, en particulier pour aider à lutter contre Jean-Gabriel G. I. F. T.
Vous aussi vous demander d'où vous pouvez obtenir le blasphème des listes pour vous aider à démarrer -- un projet open-source à vérifier est Dansguardian -- vérifier le code source de leurs défaut blasphème listes. Il y a aussi une troisième partie Liste De Mots que vous pouvez télécharger pour le proxy qui peut être utile pour glaner le point pour vous.
Modifier en réponse à la question edit: Merci pour les précisions sur ce que vous essayez de faire. Dans ce cas, si vous êtes juste essayer de faire un simple filtre de mots, il y a deux façons dont vous pouvez faire. L'une est de créer une seule longue regexp avec tous les interdits des phrases que vous voulez censurer, et se contente de faire une regex rechercher/remplacer avec elle. Une regex comme:
et l'exécuter sur votre chaîne d'entrée à l'aide de preg_match() à gros test pour le succès, de
ou preg_replace() à vide.
Vous pouvez également charger de ces fonctions avec des tableaux plutôt qu'une seule longue regex, et pour de longues listes de mots, il peut être plus facile à gérer. Voir la preg_replace() pour certains de bons exemples de la façon dont les tableaux peuvent être utilisés de manière flexible.
Pour plus de programmation PHP les exemples, voir cette page pour une un peu avancée classe générique pour mot de filtrage *'s le centre des lettres de mots censurés, et ce précédent Débordement de Pile question qui a aussi un en PHP par exemple (le principal élément précieux dans il est la base SQL filtré word approche -- le leet-parler compensateur peut être levée si vous trouvez qu'il est inutile).
Vous également ajouté: "d'avoir la liste de mots en premier lieu est la vraie question." - en plus de certains de la précédente Dansgaurdian liens, vous pouvez trouver ce à portée de main .zip de 458 mots pour être utile.
"Club Penguin", ajoute des centaines d'entrées, leurs blasphèmes filtre tous les jours: raphkoster.com/2008/05/09/...
Une limite de mot wrapper autour de votre regex options permettrait d'éviter le clbuttic erreur
Seulement si vous n'êtes pas inquiet au sujet d'être en mesure de filtrer des mots mal orthographiés "F*ckkkk yo' asssss" 🙂 je ne suis pas sûr que j'ai confiance en mes trolls très précis d'orthographe.
Si vous souhaitez entendre le "Fluffy Bunny Blanc" histoire de la proverbiale du cheval, de la bouche, c'est un épisode de podcast maintenant: socialmediaclarity.tumblr.com/post/70499341079/...
OriginalL'auteur
Alors que je sais que cette question est assez vieux, mais il est couramment question...
Il y a une raison et une autre nécessité pour les filtres de blasphèmes (voir L'entrée de Wikipedia ici), mais ils tombent souvent à court d'être précis à 100% pour de très raisons distinctes; Contexte et précision.
Elle dépend (en totalité) sur ce que vous essayez d'atteindre à la plus de base, vous êtes probablement en train de couvrir le "sept des mots sales" et puis certains... Certaines entreprises ont besoin de filtrer les plus élémentaires de blasphème: de base des gros mots, des Url ou encore de renseignements personnels et ainsi de suite, mais d'autres ont besoin pour empêcher le compte de nommage (Xbox live est un exemple) ou beaucoup plus...
Contenu généré par l'utilisateur n'est pas seulement de contenir des gros mots, il peut également contenir l'offensive des références à:
Et, éventuellement, dans plusieurs langues. Shutterstock a développé de base de la sale-listes de mots en 10 langues à ce jour, mais il reste basique et très orienté leur marquage besoins. Il y a un certain nombre d'autres listes disponibles sur le web.
Je suis d'accord avec la accepté de répondre qu'il n'est pas défini de la science et de la comme la langue est en constante évolution défi mais où 90% le taux de capture est mieux que 0%. Elle dépend uniquement sur vos objectifs et ce que vous essayez d'atteindre, le niveau de soutien que vous avez et combien il est important de supprimer les jurons de différents types.
Dans la construction d'un filtre, vous devez tenir compte des éléments suivants et comment ils se rapportent à votre projet:
Vous pouvez facilement construire un filtre de langage qui représente 90%+ de jurons, mais vous ne serez jamais atteint 100%. C'est juste pas possible. Le plus vous voulez obtenir à 100%, plus il devient difficile... après Avoir construit un complexe de blasphème moteur dans le passé, qui a traité plus de 500K en temps réel de messages par jour, je n'avais offrent les conseils suivants:
Une base de filtre impliquerait:
Modérément complexes filer impliquerait, (En plus d'une base de filtre):
Un filtre complexe nécessiterait un nombre de la suite (En plus modeste de filtre):
Super réponse, je vous remercie.
OriginalL'auteur nickhar
Je ne sais pas du tout bonnes bibliothèques pour cela, mais quoi que vous fassiez, assurez-vous que vous vous trompez dans le sens de laisser les choses. J'ai fait affaire avec des systèmes qui ne me permet pas d'utiliser "mpassell" en tant que nom d'utilisateur, car il contient de "cul" comme une sous-chaîne. C'est une excellente façon d'aliéner les utilisateurs!
OriginalL'auteur Matt Passell
Au cours d'une entrevue d'emploi de la mine, la société CTO qui m'interviewait essayé un mot/web jeu que j'ai écrit en Java. D'une liste de mots de l'ensemble de l'Oxford English dictionary, ce fut le premier mot qui m'est venu à l'être deviné?
Bien sûr, le plus immonde mot dans la langue anglaise.
D'une certaine manière, j'ai toujours l'offre d'emploi, mais j'ai ensuite découvert la profanation de la liste de mots (pas contrairement à ce l'on) et a écrit un petit script pour générer un nouveau dictionnaire, sans tous les mauvais mots (sans même avoir à regarder la liste).
Pour votre cas particulier, je pense que la comparaison de la recherche à de vrais mots sonne comme le moyen d'y aller avec une liste de mots comme ça. Les autres styles/ponctuation besoin d'un peu plus de travail, mais je doute que les utilisateurs vont l'utiliser assez souvent pour être un problème.
"je doute que les utilisateurs vont l'utiliser assez souvent pour être un problème" Garder l'espoir vivant. Une fois que les utilisateurs de trébucher sur le filtre, ils vont travailler sur la recherche de moyens de contournement. Il pourrait être aussi simple que de remplacer les lettres avec les chiffres bizarre de placement d'espaces, etc).
OriginalL'auteur Matthew
un blasphème système de filtrage ne sera jamais parfait, même si le programmeur est cocksure et se tient au courant de toutes les nude des développements
cela dit, toute une liste de " mots coquins est probablement à effectuer ainsi que toute autre liste, puisque le problème sous-jacent est compréhension de langage qui est à peu près insoluble avec la technologie actuelle
alors, la seule solution est double:
H3ll pas de l'homme, qui ne fonctionne que pour les plus triviales de cas, nous avons affaire à des êtres humains ici, et ils sont assez intelligent 🙂
OriginalL'auteur Steven A. Lowe
Ont un coup d'oeil à CDYNE le Filtre de langage de Service Web
Les tests URL
Attention. CDYNE n'est plus le maintien de ce produit. Vous pouvez l'utiliser à vos propres risques.
OriginalL'auteur Tim Cavanaugh
Le seul moyen d'empêcher l'offensive de la saisie de l'utilisateur est de prévenir tous les utilisateurs d'entrée.
Si vous insistez sur l'utilisateur en lui permettant l'entrée et la nécessité de la modération, puis incorporer l'homme modérateurs.
OriginalL'auteur Axel
Concernant votre "truc" le système subquestion, vous pouvez gérer tout cela en normalisant à la fois la "mauvaise parole" de la liste et le texte entrée par l'utilisateur avant de faire votre recherche. par exemple, l'Utilisation d'une série de regexes (ou tr si PHP a) pour convertir [$z 5] de "s", [4@] à "un", etc., ensuite, comparez les normalisé "mauvais mot de la liste des" contre le texte normalisé. Notez que la normalisation pourrait potentiellement entraîner des faux positifs, bien que je ne peux pas penser à des cas réels pour le moment.
Le plus grand défi est à venir avec quelque chose qui va laisser les gens de la citation "La pen est plus puissante que l'épée", tout en bloquant la "p e n i s".
OriginalL'auteur Dave Sherohman
Méfiez-vous des problèmes de localisation: qu'est ce qu'un juron dans une langue peut être tout à fait normal, mot dans une autre.
Un exemple actuel: ebay utilise un dictionnaire approche pour filtrer les "gros mots" à partir de la rétroaction. Si vous essayez d'entrer dans la traduction allemande de "cela a été une parfaite transaction" ("das war eine perfekte Transaktion"), ebay va rejeter les commentaires en raison de mauvaises paroles.
Pourquoi? Parce que le mot allemand pour "a" est "la guerre", et la "guerre" est en ebay dictionnaire de "gros mots".
Méfiez-vous donc de la localisation des questions.
OriginalL'auteur Sam
Si vous pouvez faire quelque chose comme Digg/Stackoverflow, où les utilisateurs peuvent downvote/marque du contenu obscène... le faire.
Alors tout ce que vous devez faire est de revoir le "méchant" des utilisateurs, et de les bloquer s'ils enfreignent les règles.
OriginalL'auteur scunliffe
Je suis un peu en retard à la fête, mais j'ai une solution qui pourrait fonctionner pour certaines personnes qui lisent ceci. C'est en javascript au lieu de php, mais il y a une raison valable à cela.
De toute façon.
L'approche que j'ai passé avec est de permettre à un utilisateur de "Opt-In" à leurs blasphèmes de filtrage. Fondamentalement, le blasphème sera autorisé par défaut, mais si mes utilisateurs ne veulent pas lire, ils ne l'ont pas. Ceci aide également à la "3ll3 sp3@k".
Le concept est simple, jquery plugin qui obtient injecté par le serveur si le compte du client est l'activation de la grossièreté de filtrage. À partir de là, c'est juste un couple de lignes simples que d'effacer le jure.
Voici la page de démonstration
https://chaseflorell.github.io/jQuery.ProfanityFilter/demo/
résultat
Très naïf. N'a pas de filtre
a$$
il n'a jamais été destiné à filtrer 3ll3 parler. Je ne recommande pas d'essayer de filtre, car c'est une bataille perdue d'avance. Le filtre de langage que j'ai posté est "construit afin de permettre aux utilisateurs de "Opt-in" à la grossièreté de filtrage". ce qui signifie que c'est mieux utilisé sur un site qui permet de blasphème par défaut. Si vous souhaitez filtrer
a$$
, puis vous l'ajouter à la liste de filtres.OriginalL'auteur Chase Florell
Ne le font pas. Il a juste conduit à des problèmes. Un clbuttic expérience personnelle que j'ai avec les filtres de blasphèmes est le moment où j'ai été kick/ban à partir d'un canal IRC pour mentionner que j'ai été "cap sur le pont à Hancock pour un couple d'heures" ou quelque chose à cet effet.
OriginalL'auteur Adam Jaskiewicz
Je suis d'accord avec HanClinto post plus haut dans cette discussion. J'en général d'utiliser des expressions régulières pour string-match d'entrée de texte. Et c'est un effort vain, car, comme vous l'avez initialement mentionné que vous avez explicitement en compte pour chaque truc de la forme de l'écriture populaire sur le net dans votre "bloqué" à la liste.
Sur une note de côté, tandis que d'autres sont en train de débattre de l'éthique de la censure, je dois admettre que certains de formulaire est nécessaire sur le web. Certaines personnes tout simplement profiter de l'affichage de la vulgarité, car il peut être instantanément offensive d'une grande masse de gens, et ne nécessite absolument aucune idée sur l'auteur de la partie.
Merci pour les idées.
HanClinto règles!
OriginalL'auteur
Une fois que vous avez une bonne table MYSQL de quelques mauvais mots que vous souhaitez filtrer (j'ai commencé avec l'un des liens dans ce fil), vous pouvez faire quelque chose comme ceci:
Je suis sûr qu'il y est un moyen plus efficace de faire toutes ces remplacements, mais je ne suis pas assez intelligent pour le comprendre (et cela semble fonctionner bien, mais inefficace).
Je crois que vous devriez vous pencher du côté de la permettant aux utilisateurs d'enregistrer et d'utiliser des humains pour filtrer et ajouter à votre blasphème table en tant que de besoin. Mais tout dépend du coût d'un faux positif (bon mot signalé comme mauvais) par rapport à un faux négatif (mauvais mot de passe à travers). Qui devrait, à terme, régissent la façon dont agressif ou conservateur que vous êtes dans votre stratégie de filtrage.
Je serais également très attention si vous souhaitez utiliser des caractères génériques, car ils peuvent parfois se comporter de manière plus onerously que vous avez l'intention.
OriginalL'auteur andrew
J'ai recueilli 2200 mauvais mots en 12 langues: fr, ar, cs, da, de, eo, es, fa, fi, fr, salut, hu, it, ja, ko, nl, no, pl, pt, ru, sv, th, tlh, tr, zh.
Dump MySQL, JSON, XML ou CSV options sont disponibles.
https://github.com/turalus/openDB
Je vous suggère d'exécuter ce code SQL dans votre base de données et vérifier à chaque fois lorsque les entrées de l'utilisateur quelque chose.
OriginalL'auteur Tural Ali
Franchement, je préfère laisser le "truc" le système des mots et de les bannir au lieu de cela, ce qui est juste moi. Mais aussi il rend la programmation plus simple.
Ce que je fais est de mettre en œuvre une regex filtre comme suit:
/[\s]dooby (doo?)[\s]/i
ou le mot est précédé sur les autres,/[\s]doob(er|ed|est)[\s]/
. Ces permettrait d'éviter le filtrage des mots comme apaisé, ce qui est parfaitement valide, mais aussi d'exiger la connaissance de l'autre des variantes et de mettre à jour le filtre si vous apprenez un nouveau. Bien évidemment, ces sont tous des exemples, mais vous devez décider de la façon de le faire vous-même.Je ne suis pas sur de saisir tous les mots que je sais, pas quand je n'en ai pas vraiment envie de les connaître.
OriginalL'auteur Robert K
Je suis d'accord avec la futilité du sujet, mais si vous avez d'avoir un filtre, découvrez Ning est Buis:
Voir aussi ce billet de blog pour plus de détails:
OriginalL'auteur Gordon
J'en ai conclu, afin de créer un bon filtre de langage nous avons besoin de 3 éléments principaux, ou, au moins, c'est ce que je vais faire. C'est ce qu'ils sont:
Un bonus, il sera pour les récompenser en quelque sorte ceux qui contribuent avec précision l'abus de journalistes et de punir le délinquant, par exemple, de suspendre leurs comptes.
OriginalL'auteur Jaider
Blasphème filtres sont une mauvaise idée. La raison en est que vous ne pouvez pas attraper tous les gros mot. Si vous essayez, vous obtenez le nombre de faux positifs.
Attraper Les Mots
Disons simplement que vous voulez prendre le F-Word. Facile, droit? Eh bien, voyons.
Vous pouvez faire une boucle à travers une chaîne de trouver "la baise." Malheureusement, les gens déjouer les filtres de nos jours. Le filtre de langage n'ai pas ramasser "fuk."
On peut essayer de vérifier plusieurs orthographes et des variantes du mot, mais qui va ralentir votre code de la performance. Pour attraper le F-Mot, vous devez rechercher pour "fuc", "Fuc", "fuk", "Fuk", "F***", etc. Et la liste va sur et sur.
Éviter L'Innocence
Bon, alors, comment le rendre insensible à la casse et ignorer les espaces de sorte qu'il attrape "F u C k"? Cela peut sembler comme une bonne idée, mais quelqu'un peut juste contourner le filtre de langage avec "F. U. C. K."
Vous ignorer les signes de ponctuation.
Maintenant que c'est un réel problème, car une phrase comme "l'Enfero,!" va ramasser comme "l'enfer" et "Whcul?" ramasse "cul".
Et il y a un tas de mots que vous avez à exclure du filtre, tels que les "Contretitution," parce qu'il y a "mésange".
Les gens peuvent également utiliser remplacer des mots, tels que "la Fracturation." Vous bloquez trop? Que dire de "stylo" pour "pénis"? Votre programme n'a pas d'intelligence artificielle pour savoir si la chaîne est bon ou mauvais.
Ne pas utiliser les filtres de blasphèmes. Ils sont difficiles à développer, et ils sont aussi lent que d'une analyse.
OriginalL'auteur
Ne pas.
Parce que:
Edit: Alors je suis d'accord avec l'intervenant qui a dit "la censure c'est mal", ce n'est pas la nature de cette réponse.
ce qui constitue une "jure" est discutable. Toute forme de censure est mauvais.
Vous êtes le seul qui a dit "la moralisation de la moitié de l'esprit", en fait je n'ai rien dit à propos de la nature morale de l'application d'un filtre de langage. Mitch apporte une partie de la raison que j'ai dit "ne pas", et il n'est pas désagréable drive-by. Parfois, "ne pas" est la bonne réponse à "comment faire pour...?" [suite]
-1. "Ne pas faire" n'est pas une réponse valable indépendamment de la morale, ou de problèmes techniques. Il ya beaucoup de fois où il est parfaitement approprié pour filtrer le contenu en fonction de la nature du contenu. Imaginez un site de commerce électronique de vente de sous-vêtements de femmes et en leur offrant un "Avis". Voulez-vous vraiment prépubère garçons qui jonchent votre site avec les ordures? Bien sûr que non. Et c'est peut-être trop lourd pour avoir un humain, le processus d'approbation. Un simple filtre à refuser les examens avec des déchets est une bonne chose.
est la bonne réponse à une question demandant une solution pour résoudre un faux problème. Il y a certainement valide les cas où le contenu doit être modéré, mais un "filtre de langage" n'est-ce pas.
OriginalL'auteur eyelidlessness