Это довольно сложная проблема, и вам нужно определить, будут ли работать регулярные выражения для вас и как вы обрабатываете встраивание (когда вы добавляете слово из словаря к ненормативной лексике, например, frackface, за исключением реального F-слова).
Регулярные выражения, как правило, имеют ограничение на продолжительность, и это обычно не позволяет использовать одно регулярное выражение для всех ваших слов.Выполнение нескольких регулярных выражений для строки очень медленно, в зависимости от того, какая производительность вам нужна и насколько велик ваш черный список.Сначала мы внедрили CleanSpeak как систему регулярных выражений, но она не масштабировалась, и мы переписали ее, используя другой механизм.
Вам также необходимо учитывать фразы, знаки пунктуации, пробелы, символыговорят и на других языках.Все это делает регулярные выражения менее привлекательными в качестве решения.Вот несколько примеров использования слова hello (предположим, что это ненормативная лексика для этого упражнения):
- Элемент списка
- hello
- hello
- h_e_l_l_o
- | - | ello
- h3llo
- "привет там" (эта фраза может не содержать никаких оскорбительных слов, но в совокупности они профанны)
Вам также нужно обрабатывать крайние случаи, когда два или более словарных (белых) слова содержат ненормативную лексику, когда они находятся рядом друг с другом.Некоторые примеры, которые содержат s-слово:
Это, очевидно, не ненормативная лексика, но большинство доморощенных и многихкоммерческие решения имеют проблемы с этими случаями.
Последние 3 года мы совершенствовали фильтр, используемый CleanSpeak , чтобы гарантировать, что он обрабатывает все эти случаи, и мы продолжаем настраивать его и улучшать его.Мы также потратили 8 месяцев на совершенствование нашей системы для повышения производительности, и она может обрабатывать около 5000 сообщений в секунду.Нельзя сказать, что вы не можете создать что-то пригодное для использования, но будьте готовы решить множество проблем, которые могут возникнуть, а также создать систему, которая не использует регулярные выражения.