BadWords
- это библиотека для фильтрации нецензурной лексики из текста. Она поддерживает различные языки и позволяет добавлять пользовательские слова.
- Python 3.6 и выше
pip3 install git+https://github.com/FlacSy/badwords.git
ProfanityFilter(languages: List[str] = None, all_languages: bool = False)
languages
(список строк, необязательно): Список языков, для которых будут загружены слова нецензурной лексики. Если не указано, будут использованы все доступные языки при установке флагаall_languages
вTrue
.all_languages
(логическое значение, необязательно): Флаг для загрузки слов нецензурной лексики для всех доступных языков. По умолчаниюFalse
.
from badwords import ProfanityFilter
# Инициализация с использованием английского и испанского языков
my_filter = ProfanityFilter(languages=['en', 'sp'])
# Инициализация с использованием всех доступных языков
my_filter_all = ProfanityFilter(all_languages=True)
Инициализация файлов языков.
- Словарь, который сопоставляет имена языков с путями к файлам.
language_files = my_filter.initialize_language_files()
print(language_files)
Инициализация слов нецензурной лексики для каждого языка.
- Словарь, который сопоставляет имена языков с наборами слов нецензурной лексики.
bad_words = my_filter.initialize_bad_words()
print(bad_words)
Компиляция регулярных выражений для слов нецензурной лексики.
- Словарь, который сопоставляет имена языков с компилированными регулярными выражениями.
patterns = my_filter.compile_patterns()
print(patterns)
Добавление пользовательских слов нецензурной лексики в фильтр.
words
(список строк): Список пользовательских слов нецензурной лексики.
my_filter.add_words(['customword1', 'customword2'])
Вычисление коэффициента сходства между двумя строками.
a
(строка): Первая строка.b
(строка): Вторая строка.
- Коэффициент сходства (дробное число).
Проверка, содержит ли заданный текст нецензурную лексику.
text
(строка): Входной текст для проверки.match_threshold
(дробное число, необязательно): Порог для совпадения по схожести. По умолчанию0.8
.replace_character
(символ или None, необязательно): Символ для замены непристойных слов. Если None, возвращает True/False. По умолчаниюNone
.
True
если найдена нецензурная лексика,False
в противном случае. Еслиreplace_character
указан, возвращает отфильтрованный текст.
# Проверка на наличие нецензурной лексики
contains_profanity = my_filter.filter_text('This is some bad text', match_threshold=0.9)
print(contains_profanity) # True или False
# Проверка на наличие нецензурной лексики с заменой
filtered_text = my_filter.filter_text('This is some bad text', replace_character='*')
print(filtered_text) # Текст с заменёнными непристойными словами
Получение списка всех доступных языков.
- Список строк, содержащий коды всех поддерживаемых языков.
all_languages = my_filter.get_all_languages()
print(all_languages) # ['en', 'sp', 'fr', 'de', ...]
В настоящее время BadWords
поддерживает 26 языков:
br
- Португальский (Бразилия)cz
- Чешскийda
- Датскийde
- Немецкийdu
- Голландскийen
- Английскийfi
- Финскийfr
- Французскийgr
- Греческийhu
- Венгерскийin
- Индонезийскийit
- Итальянскийja
- Японскийko
- Корейскийlt
- Литовскийno
- Норвежскийpl
- Польскийpo
- Португальский (Европейский)ro
- Румынскийru
- Русскийsp
- Испанскийsw
- Шведскийth
- Тайскийtu
- Турецкийua
- Украинский
from badwords import ProfanityFilter
# Создаем экземпляр фильтра, указывая нужные языки
my_filter = ProfanityFilter(languages=['en', 'sp'])
# Функция для проверки текста на наличие нецензурной лексики
def check_profanity(text: str):
result = my_filter.filter_text(
text=text,
match_threshold=0.9
)
if result:
print("Этот текст содержит нецензурную лексику.")
else:
print("Этот текст не содержит нецензурной лексики.")
# Функция для проверки текста на наличие нецензурной лексики с заменой
def check_profanity_with_replace(text: str):
result = my_filter.filter_text(
text=text,
match_threshold=0.8,
replace_character="*"
)
print(result)
if __name__ == "__main__":
check_profanity("Text with inappropriate words")
check_profanity_with_replace("Text with inappropriate words")