XeemPad/Slur-Extraction-BERTs

0

stars

10

commits

Jupyter Notebook

primary language

Aug 4, 2025

updated

README

Предисловие

Основной код для EDA, тестирования и обучения разных моделей содержится в ноутбуке extract_models.ipynb.

Датасеты не принадлежат автору кода и были удалены из репозитория. Сохранённые состояния моделей слишком велики для github и лежат на kaggle (https://www.kaggle.com/models/xeempad/rosberta-slurs).

Удалось достичь среднего расстояния Левеншейна ~0.41. Учитывая низкое качество разметки тренировочного (и вероятно тестового) датасета (скорее всего с помощью LLM), результат получился довольно близким к нулю. Хотя учитывая, что большАя часть выборки не содержала нецензурных выражений, метрика точно могла быть лучше и ближе к ~0.2

С учётом дообучений, лучшая модель (RoSBERTa от ai-forever) заняла 6-8 часов на обучение на бесплатной T4 GPU с Google Colab и Kaggle.

Description

Цель соревнования — разработать модель, способную автоматически находить конкретные нецензурные выражения в пользовательских отзывах и комментариях. Задача состоит не только в определении наличия мата, но и в выделении всех вхождений мата из текста. Результат должен быть представлен в формате строки, содержащей найденные слова в нижнем регистре, отсортированные по алфавиту и разделенные запятыми. Если мат отсутствует, результат должен быть пустой строкой. Основная метрика для оценки решений — среднее расстояние Левенштейна.

Предпосылки

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

Описание задачи

Ваше решение должно извлекать из текста все нецензурные выражения. Для каждого отзыва модель должна возвращать строку, в которой:

Содержатся все обнаруженные слова мата. Слова указаны в нижнем регистре. Слова отсортированы по алфавиту. Слова разделены запятыми. Если мат отсутствует, строка должна быть пустой. Примеры:

Текст: "Говно а не товар" Ожидаемый результат: "говно"

Текст: "Спасибо за уёбищние шарики! такой хуйни я еще не видела!" Ожидаемый результат: "уёбищние,хуйни"

Текст: "За такую цену - норм" Ожидаемый результат: "" (пустая строка).

Основная метрика

Решения участников будут оцениваться по среднему расстоянию Левенштейна между предсказанными строками и строками из тестового набора. Эта метрика отражает, насколько точно и полно модель выделяет маты из текста, а также учитывает корректность их формата.

Задачи

Разработать модель для извлечения всех вхождений нецензурной лексики из текстов. Учитывать различные формы мата, включая завуалированные, искажения и изменения. Гарантировать соответствие формата результата требованиям (нижний регистр, сортировка, разделение запятыми). Оптимизировать модель для минимизации среднего расстояния Левенштейна. Ожидаемый результат

Модель должна точно и полно находить нецензурные слова, помогая онлайн-платформам эффективно определять и устранять нежелательный контент.

Evalutation

В этом соревновании ваши решения будут оцениваться с использованием метрики среднего расстояния Левенштейна. Эта метрика измеряет, насколько точно и полно модель определяет конкретные нецензурные выражения из текста, учитывая правильность их формы и порядок. Метрика отражает степень сходства между строкой, предсказанной моделью, и истинной строкой из тестового набора данных.

Submission File

Ваше решение должно быть представлено в виде CSV-файла с двумя колонками:

ID — уникальный идентификатор текста. label — строка, содержащая предсказанные моделью нецензурные слова. Все слова должны быть приведены к нижнему регистру, отсортированы по алфавиту и разделены запятыми. Если мата нет, поле должно быть пустым. Пример:

ID, label
2,"говно"
5,"хуй,уёбищние"
6,""
etc.

Формат результата должен строго соответствовать этим требованиям, чтобы избежать ошибок при оценке.

Dataset description

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

Файлы данных:

train.csv — тренировочный набор данных. Этот файл содержит тексты и метки, представляющие собой нецензурные слова, если они присутствуют в тексте.

test.csv — тестовый набор данных. Этот файл содержит тексты, для которых вам необходимо выделить и указать найденные маты. Метки для тестовых данных отсутствуют.

sample_submission.csv — пример файла для сабмита. Показывает правильный формат предсказания для тестового набора.

Структура колонок:

  • id — уникальный идентификатор текста.
  • text — текст сообщения, который может содержать или не содержать нецензурную лексику.
  • label (только в train.csv) — строка, содержащая все нецензурные слова, присутствующие в тексте:

Слова приведены к нижнему регистру.

Отсортированы по алфавиту.

Разделены запятыми.

Если мата нет, значение будет пустым.

Что вы должны предсказать?

Вам нужно предсказать все нецензурные слова в текстах из тестового набора данных. Формат предсказания для каждого текста:

Строка с нецензурными словами, приведенными к нижнему регистру, отсортированными по алфавиту и разделенными запятыми.

Если мата нет, строка должна быть пустой.

Пример:

sample_submission.csv:

id label

10

11 г…

12

Contributors

XeemPad

10 commits

XeemPad/Slur-Extraction-BERTs

0

stars

10

commits

Jupyter Notebook

primary language

Aug 4, 2025

updated

README

Предисловие

Основной код для EDA, тестирования и обучения разных моделей содержится в ноутбуке extract_models.ipynb.

Датасеты не принадлежат автору кода и были удалены из репозитория. Сохранённые состояния моделей слишком велики для github и лежат на kaggle (https://www.kaggle.com/models/xeempad/rosberta-slurs).

Удалось достичь среднего расстояния Левеншейна ~0.41. Учитывая низкое качество разметки тренировочного (и вероятно тестового) датасета (скорее всего с помощью LLM), результат получился довольно близким к нулю. Хотя учитывая, что большАя часть выборки не содержала нецензурных выражений, метрика точно могла быть лучше и ближе к ~0.2

С учётом дообучений, лучшая модель (RoSBERTa от ai-forever) заняла 6-8 часов на обучение на бесплатной T4 GPU с Google Colab и Kaggle.

Description

Цель соревнования — разработать модель, способную автоматически находить конкретные нецензурные выражения в пользовательских отзывах и комментариях. Задача состоит не только в определении наличия мата, но и в выделении всех вхождений мата из текста. Результат должен быть представлен в формате строки, содержащей найденные слова в нижнем регистре, отсортированные по алфавиту и разделенные запятыми. Если мат отсутствует, результат должен быть пустой строкой. Основная метрика для оценки решений — среднее расстояние Левенштейна.

Предпосылки

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

Описание задачи

Ваше решение должно извлекать из текста все нецензурные выражения. Для каждого отзыва модель должна возвращать строку, в которой:

Содержатся все обнаруженные слова мата. Слова указаны в нижнем регистре. Слова отсортированы по алфавиту. Слова разделены запятыми. Если мат отсутствует, строка должна быть пустой. Примеры:

Текст: "Говно а не товар" Ожидаемый результат: "говно"

Текст: "Спасибо за уёбищние шарики! такой хуйни я еще не видела!" Ожидаемый результат: "уёбищние,хуйни"

Текст: "За такую цену - норм" Ожидаемый результат: "" (пустая строка).

Основная метрика

Решения участников будут оцениваться по среднему расстоянию Левенштейна между предсказанными строками и строками из тестового набора. Эта метрика отражает, насколько точно и полно модель выделяет маты из текста, а также учитывает корректность их формата.

Задачи

Разработать модель для извлечения всех вхождений нецензурной лексики из текстов. Учитывать различные формы мата, включая завуалированные, искажения и изменения. Гарантировать соответствие формата результата требованиям (нижний регистр, сортировка, разделение запятыми). Оптимизировать модель для минимизации среднего расстояния Левенштейна. Ожидаемый результат

Модель должна точно и полно находить нецензурные слова, помогая онлайн-платформам эффективно определять и устранять нежелательный контент.

Evalutation

В этом соревновании ваши решения будут оцениваться с использованием метрики среднего расстояния Левенштейна. Эта метрика измеряет, насколько точно и полно модель определяет конкретные нецензурные выражения из текста, учитывая правильность их формы и порядок. Метрика отражает степень сходства между строкой, предсказанной моделью, и истинной строкой из тестового набора данных.

Submission File

Ваше решение должно быть представлено в виде CSV-файла с двумя колонками:

ID — уникальный идентификатор текста. label — строка, содержащая предсказанные моделью нецензурные слова. Все слова должны быть приведены к нижнему регистру, отсортированы по алфавиту и разделены запятыми. Если мата нет, поле должно быть пустым. Пример:

ID, label
2,"говно"
5,"хуй,уёбищние"
6,""
etc.

Формат результата должен строго соответствовать этим требованиям, чтобы избежать ошибок при оценке.

Dataset description

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

Файлы данных:

train.csv — тренировочный набор данных. Этот файл содержит тексты и метки, представляющие собой нецензурные слова, если они присутствуют в тексте.

test.csv — тестовый набор данных. Этот файл содержит тексты, для которых вам необходимо выделить и указать найденные маты. Метки для тестовых данных отсутствуют.

sample_submission.csv — пример файла для сабмита. Показывает правильный формат предсказания для тестового набора.

Структура колонок:

  • id — уникальный идентификатор текста.
  • text — текст сообщения, который может содержать или не содержать нецензурную лексику.
  • label (только в train.csv) — строка, содержащая все нецензурные слова, присутствующие в тексте:

Слова приведены к нижнему регистру.

Отсортированы по алфавиту.

Разделены запятыми.

Если мата нет, значение будет пустым.

Что вы должны предсказать?

Вам нужно предсказать все нецензурные слова в текстах из тестового набора данных. Формат предсказания для каждого текста:

Строка с нецензурными словами, приведенными к нижнему регистру, отсортированными по алфавиту и разделенными запятыми.

Если мата нет, строка должна быть пустой.

Пример:

sample_submission.csv:

id label

10

11 г…

12

Contributors

XeemPad

10 commits

Languages

Jupyter Notebook

76.7%

Python

23.3%