Текстовая Модерация: Уроки Этикета От Data Scientist

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

В прошлом году Россельхозбанк объявлено по созданию и развитию экосистемы сельскохозяйственных предприятий.

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



Текстовая модерация: уроки этикета от Data Scientist

Платформа «Свое Фарминг» — это маркетплейс товаров для сельхозпроизводителей от крупнейших поставщиков со всей России.

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

И, конечно же, необходимо внедрить процесс проверки качества загружаемого контента.

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



Что они делали?

В этой статье мы поговорим о том, как в рамках сотрудничества с Лабораторией МФТИ, в частности созданный Для реализации задач Банка мы разработали инструмент, позволяющий осуществлять высокоточную предварительную модерацию текстового контента.

Наша цель звучала довольно просто — созданный нами инструмент должен автоматически классифицировать текст как приемлемый для размещения на сайте (класс 0) или неприемлемый (класс 1).

Если алгоритм не может четко понять, к какому классу относится текст, то он (текст) отправляется на ручную модерацию.

У нас есть задача по обработке текста: мы хотим отфильтровать «токсичные» во всех смыслах тексты, а именно: ругательства, оскорбления, различный контент, запрещенный законом, и просто текст, недопустимый для размещения на сайте.

Мы ожидаем, что разработанный нами алгоритм примет на вход набор текстов и выведет число от 0 до 1 — степень или вероятность «токсичности» текста.

Чем ближе это число к единице, тем более токсичным является комментарий.

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

Несколько лет назад аналогичная задача решалась в рамках конкурса Проблема классификации токсичных комментариев на Кагле.

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

В свободном доступе только один помеченный русский язык.

набор данных искать токсичность в тексте.

Также нам удалось найти датасет для поиска оскорблений (частный случай токсичности).

Плюс мы собрали примеры рекламы с агропорталов и отметили их как приемлемые (класс – 0).

Поставленная нами задача оказалась весьма уникальной с точки зрения данной сельскохозяйственной темы.

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

Среди тривиальных примеров можно назвать следующие: «Не суй рыло» — текст явно неприемлем, а текст со «свиной рылом» легко разместить на сайте (хотя это зависит от контекста).

То же самое относится и к некоторым подвидам сельскохозяйственных животных и растений.

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

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

Самая популярная архитектура (на момент написания статьи) для решения подобных задач — BERT. На момент упомянутого выше конкурса Kaggle этой архитектуры не существовало, поэтому использовались другие.

Однако позднее эта задача была успешно решена.

решено используя БЕРТ.



Как ты сделал это?

Перейдем к самому интересному – решению задачи.

Немного подумав над «архитектурой» инструмента, мы решили использовать три модели: поиск по словарю (как фильтр нецензурной лексики), логистическую регрессию (как базовое решение) и BERT (как более продвинутое).



Общая схема



Текстовая модерация: уроки этикета от Data Scientist

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

отсекаются (их токсичность всегда равна единице ( 1).

Тексты, прошедшие первый этап, попадают в более сложную нейросетевую модель, что указывает на степень их токсичности.

Если нейросетевая модель дает сбой, она заменяется на более простой — логистическая регрессия.

То есть какой-то ненаивный результат мы получим в любом случае.

Теперь давайте рассмотрим каждый компонент более подробно.



Наивный классификатор

Здесь все довольно просто: используя словарь нецензурной лексики, довольно легко понять, есть ли в тексте то или иное «плохое» слово или нет. То есть на этом этапе можно даже обойтись без модели ML как таковой и сразу отсеивать тексты, содержащие «плохие» слова.

А что, если в тексте не используются такие словарные слова, но текст, тем не менее, неприемлем для размещения на портале? Давайте попробуем решить эту проблему, используя логистическую регрессию и BERT.

Логистическая регрессия

Простейшая модель позволяет спрогнозировать значение на основе имеющихся данных.

Текстовые векторы для этой модели получены с помощью TF-IDF и TweetTokenizer от nltk. Такая модель, как известно, позволяет оценить вероятность токсичности текста с помощью логистической функции.

В нашей архитектуре логистическая регрессия «страхует» нейронную сеть.



Великий и ужасный БЕРТ

Мы использовали предварительно обученную модель РуБерт от DeepPavlov, дополнительно обученного на размеченных текстах.

Процесс прогнозирования, не вдаваясь в подробности, выглядит следующим образом:

Текстовая модерация: уроки этикета от Data Scientist



Мы строили, строили и наконец построили!

Мы оценивали качество, используя наши любимые показатели Точность, ROC-AUC и F1-меру.

Окончательные показатели качества для отложенной выборки были следующими:

Алгоритм/Метрика Наивный БЕРТ ЛР Наивный → БЕРТ Наивный → LR
Точность 0.854 0.901 0.865 0.909 0.879
РПЦ-АУК 0.782 0.960 0.921 0.963 0.939
F1-мера 0.722 0.840 0.800 0.855 0.824
Скорость работы: ~2800 текстов в минуту на графическом процессоре (GeForce 1080Ti) в случае BERT, который является самым медленным из представленных алгоритмов.

Как и ожидалось, с BERT метрики оказались немного лучше, хотя и ненамного.



Какие выводы мы сделали?

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

  1. Всегда нужно учитывать специфику задачи по разметке текста.

  2. Необходимо предусмотреть ручную модерацию текста на случай, если модель «сомневается» в своем решении.

    Вы не хотите, чтобы нежелательный контент попал в ваш продукт.

  3. Также необходимо отправить размеченные от руки тексты из предыдущего пункта для дополнительного обучения.

    Таким образом, вы сможете улучшать модель небольшими шагами и со временем сокращать объем работы, связанной с ручной модерацией.

  4. Лучше использовать комплексный подход к решению проблемы.

    Иногда даже самые простые «модели» по словарям уже дают хорошие результаты.

  5. Выбирайте лучшую модель исходя из поставленной задачи.

    В нашем случае мы выбрали BERT, потому что он лучше реагирует на контекст, чем логистическая регрессия.

Спасибо за внимание! В следующей статье мы поделимся опытом премодерации изображений на той же платформе нашей экосистемы — Собственное Фермерство.

Теги: #Машинное обучение #python #искусственный интеллект #экосистема #nlp (обработка естественного языка) #bert #модерация контента

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.