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

Как можно удалить нецензурные выражения из субтитров, которые дети "переводят" на тостере? Может быть, кто-то уже сталкивался с подобной ситуацией и нашел решение?
  • 8 февраля 2024 г. 14:09
Ответы на вопрос 2
Фильтрация непристойных слов с помощью регулярных выражений (regex) может быть сложной, так как нецензурные слова могут иметь различные вариации, быть скрытыми внутри других слов или же быть искаженными для избежания такой фильтрации. Однако основной принцип фильтрации может быть реализован с помощью списков нежелательных слов и соответствующих регулярных выражений.

Ниже приведен пример того, как можно подойти к этой задаче:

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

Пример регулярного выражения для фильтрации некоторых нецензурных слов (предположим, слово для фильтрации "badword"):

```regex
\b(b+a+d+w+o+r+d+)\b
```

Это регулярное выражение ищет слово "badword" с одной или несколькими буквами 'a', 'd', 'w', 'o' и 'r' (например, "baddword", "baaadwoooord", и т.д.), обрамлённое границами слов (\b).

Для удаления таких слов вы можете использовать метод замены найденных слов на звёздочки или другие символы:

```python
import re

# Пример списка слов для цензуры
bad_words = ['badword1', 'badword2', 'badword3']

# Создание регулярного выражения с учётом всех слов для цензуры
bad_words_regex = r'\b(' + '|'.join(bad_words) + r')\b'

# Функция для замены нецензурных слов в тексте
def censor_bad_words(text):
    return re.sub(bad_words_regex, lambda match: '*' * len(match.group()), text, flags=re.IGNORECASE)

# Пример субтитров
subtitles = "This is an example text with badword1 and another BADWORD2."

# Фильтрация нецензурных слов
filtered_subtitles = censor_bad_words(subtitles)

print(filtered_subtitles)
```

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

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

Да и от проблемы "дети шуточно переводят субтитры" - это никак не избавит.

Емнип, автор видео может проверять субтитры, прежде чем их одобрить - вот и проверяй.
Похожие вопросы