Это довольно сложная проблема для решения, и вам нужно определить, будут ли работать для вас регулярные выражения и как вы справляетесь с встраиванием (когда вы добавляете словарное слово к ненормативной лексике, такой как frackface, за исключением настоящего F-слова).
Регулярные выражения обычно имеют ограничение на длину, и это обычно не позволяет вам использовать одно регулярное выражение для всех ваших слов. Выполнение нескольких регулярных выражений для строки очень медленное, в зависимости от того, какая производительность вам нужна и насколько велик ваш черный список. Сначала мы реализовали CleanSpeak как систему регулярных выражений, но она не масштабировалась, и мы переписали ее, используя другой механизм.
Вам также необходимо учитывать фразы, знаки препинания, пробелы, лит-спик и другие языки. Все это делает регулярные выражения менее привлекательными в качестве решения. Вот несколько примеров использования слова привет (предположим, что это ненормативная лексика для этого упражнения):
- Пункт списка
- h e l l o
- h.e.l.l.o
- h_e_l_l_o
- |-|привет
- привет
- «привет» (эта фраза может не содержать ненормативной лексики, но вместе они являются ненормативной лексикой)
Вам также необходимо обработать пограничные случаи, когда два или более слов из словаря (из белого списка) содержат ненормативную лексику рядом друг с другом. Некоторые примеры, которые содержат s-слово:
- разбей это
- ssh это тихое время
Это явно не ненормативная лексика, но у большинства доморощенных и многих коммерческих решений есть проблемы с этими случаями.
Мы потратили последние 3 года на совершенствование фильтра, используемого CleanSpeak, чтобы гарантировать, что он обрабатывает все эти случаи, и мы продолжаем настраивать это и сделать его лучше. Мы также потратили 8 месяцев на совершенствование нашей системы для повышения производительности, и она может обрабатывать около 5000 сообщений в секунду. Нельзя сказать, что вы не можете создать что-то полезное, но будьте готовы справиться с множеством проблем, которые могут возникнуть, а также создать систему, не использующую регулярные выражения.
person
voidmain
schedule
01.12.2011