Единственный способ выиграть - не играть.
Рассмотрим следующее предложение:
«Эдвард II был одним из немногих монархов, которые родили зарегистрированного ублюдка».
Ублюдок - ругательство на границе, но в этом контексте это вполне разумный термин.
Рассмотрим также:
- "Расплавленный шлак выпал из
cruciable. "
- "Сука понюхала заднюю сторону другой собаки."
Вы никогда не сможете создать синтаксический анализатор, способный определить правильность использования. Даже если вы все равно решили пойти дальше и просто отметить эти слова, они все равно легко подрываются.
Спросите себя, действительно ли "Tw * t" намного менее оскорбительно, чем "twat"? Все знают, на какое слово вы указываете, и все понимают, что оно означает.
В конечном счете, решение этой проблемы не является технологическим. На самом деле, вы хотите использовать какого-то человека-модератора, чтобы избавиться от людей, которые ругаются. У человека, умеренного, есть средство, которого алгоритмы никогда не будут: он может проявить суждение. Используя это суждение, гораздо полезнее, чем бросать компьютерную науку на проблему.
Это подробно обсуждается в другом ответе на этот вопрос.