Как Вы реализуете хороший фильтр профанации?

200
задан bren brightwell 26 April 2019 в 03:46
поделиться

13 ответов

Фильтры Непристойности: Плохая Идея или Невероятно Межбегущая Плохая Идея?

кроме того, нельзя забыть Невыразимая История SpeedChat Toontown, даже использование "белого списка безопасного слова" привело к 14-летнему, быстро обходящему его с: "Я хочу засунуть своего Жирафа с длинной шеей Ваш пушистый белый кролик. "

Нижняя строка: В конечном счете, для любой системы, которую Вы реализуете, нет абсолютно никакой замены для человеческого обзора (или одноранговый узел или иначе). Не стесняйтесь реализовывать элементарный инструмент для избавлений от нападения из автомобиля, но для решительного сообщения-розыгрыша, у Вас абсолютно должен быть подход non-algorithm-based.

система А, которая удаляет анонимность и представляет отслеживаемость (что-то, что Переполнение стека преуспевает) полезно также, особенно чтобы помочь сражаться G.I.F.T John Gabriel.

Вы также спросили, где можно заставить списки профанации запускать Вас - один проект с открытым исходным кодом проверить , Dansguardian - проверяет исходный код для их списков профанации по умолчанию. Существует также дополнительное третье лицо Список Фразы , что можно загрузить для прокси, который может быть полезной подбирающей точкой для Вас.

Редактирование в ответ редактирование вопроса: спасибо за разъяснение по поводу того, что Вы пытаетесь сделать. В этом случае, если Вы просто пытаетесь сделать простой фильтр слова, существует два способа, которыми можно сделать это. Нужно создать единственный длинный regexp со всеми запрещенными фразами, которые Вы хотите подвергнуть цензуре, и просто сделать, regex находит/заменяет с ним. regex как:

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

и выполненный это на Вашей входной строке с помощью preg_match () к оптовому тесту для хита,

или preg_replace () для очищения их.

можно также загрузить те функции массивами, а не единственным длинным regex, и для длинных списков слов, это может быть более управляемо. Посмотрите preg_replace () для некоторых хороших примеров относительно того, как массивы могут использоваться гибко.

Для дополнительного PHP программирование примеров, посмотрите, что эта страница для несколько усовершенствовала универсальный класс для слова, фильтрующего, который * центр обозначает буквами от подвергнутых цензуре слов и этого предыдущий вопрос о Переполнении стека , который также имеет пример PHP (основная ценная часть там является основанным на SQL фильтрованным подходом слова - leet-говорить компенсатор может обойтись без при нахождении его ненужным).

Вы также добавили": Получение списка слов во-первых является реальным вопросом. " - в дополнение к некоторым предыдущим ссылкам Dansgaurdian, можно найти этот удобный .zip 458 слов быть услужливыми.

174
ответ дан 11 revs, 4 users 93% 23 November 2019 в 05:07
поделиться

Откровенно говоря, я позволил им получить "прием система" слова и запрещаю их вместо этого, который является просто я. Но это также делает программирование более простым.

То, что я сделал бы, реализовать фильтр regex как так: /[\s]dooby (doo?)[\s]/i или это слово снабжается префиксом на других, /[\s]doob(er|ed|est)[\s]/. Они предотвратили бы слова фильтрации, любят успокаиваемый, который совершенно допустим, но также потребовал бы знания других вариантов и обновления фактического фильтра, если Вы изучаете новый. Очевидно, это все примеры, но необходимо было бы решить, как сделать это сами.

Я не собираюсь вывести все слова, которые я знаю, не, когда я на самом деле не хочу знать их.

1
ответ дан Robert K 23 November 2019 в 05:07
поделиться

Не делать.

, поскольку:

  • профанация Clbuttic
  • не является ЗЛОМ OMG
  • , Профанация не может быть эффективно определена
  • , Большинство людей вполне, вероятно, не ценит быть "защищенным" от профанации

Редактирование: В то время как я соглашаюсь с комментатором, который сказал, что "цензура является неправильной", который не является природой этого ответа.

-2
ответ дан BryanH 23 November 2019 в 05:07
поделиться

Не делать. Это просто приводит к проблемам. Один clbuttic личный опыт, который я имею с фильтрами профанации, является временем, где я был, ударяют/запрещают от канала IRC для упоминания, что я "направлялся по мосту в Hancock в течение пары часов" или чего-то к тому эффекту.

2
ответ дан Adam Jaskiewicz 23 November 2019 в 05:07
поделиться

Я соглашаюсь с сообщением HanClinto выше в этом обсуждении. Я обычно использую регулярные выражения для входного текста строкового соответствия. И это - тщетное усилие, поскольку, как Вы первоначально упомянул, что необходимо явно объяснить каждую форму приема записи популярного в сети в "заблокированном" списке.

На ноте стороны, в то время как другие обсуждают этику цензуры, я должен согласиться, что некоторая форма необходима в сети. Некоторые люди просто любят отправлять вульгарность, потому что это может быть немедленно оскорбительным многочисленной группе людей и не требует абсолютно никакой мысли о части автора.

Спасибо за идеи.

правила HanClinto!

2
ответ дан 23 November 2019 в 05:07
поделиться

Если можно сделать что-то как Digg/Stackoverflow, где пользователи могут downvote/mark непристойное содержание... делать так.

Тогда все, что необходимо сделать, рассмотреть "непослушных" пользователей и заблокировать их, если они нарушают правила.

6
ответ дан scunliffe 23 November 2019 в 05:07
поделиться

Относительно Вашего "приема система" дополнительный вопрос, можно обработать это путем нормализации и списка "ругательства" и вводимого пользователем текста прежде, чем сделать поиск. например, Использование серия regexes (или tr, если PHP имеет его) для преобразования [5 z$] к "s", [4@] к "a", и т.д., то сравнивает нормализованный список "ругательства" с нормализованным текстом. Обратите внимание, что нормализация могла потенциально привести к дополнительным ложным положительным сторонам, хотя я не могу думать ни о каких фактических случаях в данный момент.

большая проблема состоит в том, чтобы придумать что-то, что позволит людям заключить в кавычки ", перо более могущественное, чем меч" при блокировании "p e n i s".

7
ответ дан Dave Sherohman 23 November 2019 в 05:07
поделиться

Единственный способ предотвратить наступательный ввод данных пользователем состоит в том, чтобы предотвратить весь ввод данных пользователем.

, Если Вы настаиваете на том, чтобы позволять ввод данных пользователем и нуждаетесь в модерировании, затем включаете человеческих модераторов.

13
ответ дан Axel 23 November 2019 в 05:07
поделиться

Взгляните на веб-сервис Фильтра Профанации CDYNE

URL

Тестирования
13
ответ дан Tim Cavanaugh 23 November 2019 в 05:07
поделиться

система фильтрации профанации никогда не будет прекрасна, даже если программист будет уверен и не отстанет от всех голых разработок

, который сказал, любой список 'непослушных слов', вероятно, будет работать, а также любой другой список, так как базовая проблема понимание языка , который в значительной степени тяжел с современной технологией

так, единственное практическое решение является двукратным:

  1. быть готовым часто обновлять Ваш словарь
  2. нанимают редактора - человека для исправления ложных положительных сторон (например, "clbuttic" вместо "классика") и ложные отрицательные стороны (ой! пропущенный!)
21
ответ дан Steven A. Lowe 23 November 2019 в 05:07
поделиться

Во время моего собеседования технический директор компании, который брал интервью у меня, испытал игру слова/сети, которую я записал в Java. Из списка слов всего Оксфордского словаря английского языка, каково было первое слово, которое подошло, чтобы быть предположенным?

, Конечно, самое грязное слово на английском языке.

Так или иначе, я все еще получил предложение задания, но я тогда разыскал список слов профанации (не в отличие от этого ) и записал быстрый сценарий для генерации нового словаря безо всех ругательств (даже не имея необходимость посмотреть на список).

Для Вашего особого случая, я думаю, сравнивая поиск с реальными словами, походит на способ пойти со списком слов как этот. Альтернативные стили/пунктуация требуют немного большего количества работы, но я сомневаюсь, что пользователи будут использовать это достаточно часто, чтобы быть проблемой.

23
ответ дан Matthew 23 November 2019 в 05:07
поделиться

Я не знаю ни о каких хороших библиотеках для этого, но независимо от того, что Вы делаете, удостоверьтесь, что Вы допускаете ошибку в направлении принимающего материала. Я имел дело с системами, которые не позволили бы мне использовать "mpassell" в качестве имени пользователя, потому что он содержит "задницу" как подстроку. Это - отличный способ отчуждать пользователей!

26
ответ дан Matt Passell 23 November 2019 в 05:07
поделиться

Остерегайтесь проблем с локализацией: ругательство на одном языке может быть совершенно нормальным словом на другом.

Один из текущих примеров этого: ebay использует словарный подход для фильтрации «плохих слов» из отзывов. Если вы попытаетесь ввести немецкий перевод «это была совершенная транзакция» («das war eine perfekte Transaktion»), ebay отклонит отзыв из-за плохих слов.

Почему? Потому что немецкое слово «был» - это «война», а «война» есть в словаре «плохих слов» ebay.

Остерегайтесь проблем с локализацией.

7
ответ дан 23 November 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: