Что такое модерация сообщений: Модерация — это… Что такое Модерация?

Содержание

Построение автоматической системы модерации сообщений / Хабр

Автоматические системы модерации внедряются в веб-сервисы и приложения, где необходимо обрабатывать большое количество сообщений пользователей. Такие системы позволяют сократить издержки на ручную модерацию, ускорить её и обрабатывать все сообщения пользователей в real-time. В статье поговорим про построение автоматической системы модерации для обработки английского языка с использованием алгоритмов машинного обучения. Обсудим весь пайплайн работы от исследовательских задач и выбора ML алгоритмов до выкатки в продакшен. Посмотрим, где искать готовые датасеты и как собрать данные для задачи самостоятельно.


Подготовлено совместно с Ирой Степанюк (id_step), Data Scientist в Poteha Labs

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

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

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

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

Изучив разные сообщения, для нашей системы модерации мы назвали

токсичными

такие сообщения, которые содержат высказывания с нецензурными, оскорбительными выражениями или проявлением ненависти к кому-либо.

Данные


Открытые данные

Одним из самых известных датасетов по задаче модерации является датасет с соревнования на Kaggle

Toxic Comment Classification Challenge

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

Помимо соревнований есть несколько научных публикаций с ссылками на подходящие датасеты (пример), однако не все можно использовать в коммерческих проектах. В основном в таких датасетах собраны сообщения из социальной сети Twitter, где можно встретить много токсичных твитов. Кроме того, данные собирают из Twitter, так как можно использовать определенные хэштеги для поиска и разметки токсичных сообщений пользователей.

Данные, собранные вручную

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

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

Аугментация данных

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

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

  • генерируют опечатки: you are stupid asswhole, fack you,
  • заменяют буквенные символы на цифры, похожие по описанию:
    n1gga, b0ll0cks
    ,
  • вставляют дополнительные пробелы: i d i o t,
  • удаляют пробелы между словами: dieyoustupid.

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

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

Перед нами стояли подзадачи по анализу сообщения в двух разных режимах:

  • онлайн режим — real-time анализ сообщений, с максимальной скоростью ответа;
  • офлайн режим — анализ логов сообщений и выделение токсичных диалогов.

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

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

Онлайн режим. Поиск слов по словарю

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

алгоритм Ахо-Корасик

. За счет такого подхода удается быстро определять некоторые токсичные примеры и блокировать сообщения еще до их передачи в основной алгоритм. Использование ML алгоритма позволит «понимать смысл» сообщений и улучшить качество классификации.

Онлайн режим. Базовая модель машинного обучения

Для базовой модели решили использовать стандартный подход для классификации текстов: TF-IDF + классический алгоритм классификации. Опять же из соображений скорости и производительности.

TF-IDF — это статистическая мера, которая позволяет определить наиболее важные слова для текста в корпусе с помощью двух параметров: частот слов в каждом документе и количества документов, содержащих определенное слово (более подробно здесь). Рассчитав для каждого слова в сообщении TF-IDF, получаем векторное представление этого сообщения.
TF-IDF можно рассчитывать для слов в тексте, а также для n-грам слов и символов. Такое расширение будет работать лучше, так как сможет обрабатывать часто встречающиеся словосочетания и слова, которых не было в обучающей выборке (out-of-vocabulary).

from sklearn.feature_extraction.text import TfidfVectorizer
from scipy import sparse
vect_word = TfidfVectorizer(max_features=10000, lowercase=True, 
  analyzer='word', min_df=8, stop_words=stop_words, ngram_range=(1,3))
vect_char = TfidfVectorizer(max_features=30000, lowercase=True,
   analyzer='char', min_df=8, ngram_range=(3,6))

x_vec_word = vect_word.fit_transform(x_train)
x_vec_char = vect_char.fit_transform(x_train)
x_vec = sparse.hstack([x_vec_word, x_vec_char])
Пример использования TF-IDF на n-грамах слов и символов

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

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

Полученный с использованием TF-IDF и логистической регрессии алгоритм быстро работает и хорошо определяет сообщения с нецензурными словами и выражениями, но не всегда понимает смысл. Например, часто сообщения со словами ‘black’ и ‘feminizm’ попадали в токсичный класс. Хотелось исправить эту проблему и научиться лучше понимать смысл сообщений с помощью следующей версии классификатора.

Офлайн режим

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

  • Эмбеддинги (Word2Vec, FastText)
  • Нейросети (CNN, RNN, LSTM)
  • Новые предобученные модели (ELMo, ULMFiT, BERT)

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

Word2Vec и FastText

Модели эмбеддингов позволяют получать векторные представления слов из текстов. Существует

два типа Word2Vec

: Skip-gram и CBOW (Continuous Bag of Words). В Skip-gram по слову предсказывается контекст, а в CBOW наоборот: по контексту предсказывается слово.


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

Для решения проблемы со словами, которых нет в словаре, (OOV, out-of-vocabulary) есть улучшенная модель эмбеддингов — FastText. Вместо использования отдельных слов для обучения нейросети, FastText разбивает слова на n-грамы (подслова) и обучается на них. Для получения векторного представления слова нужно получить векторные представления n-грам этого слова и сложить их.

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


Пример вывода “ближайших” по смыслу слов с использованием предобученного FastText

Классификатор на CNN

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

можно использовать

в задаче классификации текстов. Рассмотрим, как это можно сделать.

Каждое сообщение представляет собой матрицу, в которой на каждой строке для токена (слова) записано его векторное представление. Свертка применяется к такой матрице определенным образом: фильтр свертки “скользит” по целым строкам матрицы (векторам слов), но при этом захватывает несколько слов за раз (обычно 2-5 слов), таким образом обрабатывая слова в контексте соседних слов. Подробно, как это происходит, можно посмотреть на

картинке

.


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

ELMo

ELMo (Embeddings from Language Models) — модель эмбеддингов на основе языковой модели, которая была

недавно представлена

. Новая модель эмбеддингов отличается от Word2Vec и FastText моделей. Вектора слов ELMo обладают определенными преимуществами:

  • Представление каждого слова зависит от всего контекста, в котором оно используется.
  • Представление основано на символах, что позволяет формировать надежные представления для OOV (out-of-vocabulary) слов.

ELMo можно использовать для разных задач в NLP. Например, для нашей задачи полученные с помощью ELMo вектора сообщений можно отправлять в классический ML классификатор или использовать сверточную или полносвязную сеть.
Предобученные эмбеддинги ELMo достаточно просто использовать для своей задачи, пример использования можно найти здесь.

Особенности реализации


API на Flask

Прототип API был написан на Flask, так как он прост в использовании.

Два Docker образа

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

Тестирование

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

Хорошей альтернативой является запуск решения на публичных площадках вроде Яндекс Толоки и AWS Mechanical Turk.

Заключение

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

Основные наблюдения, полученные в ходе работы:

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

Конечно, мы выложили открытое демо Poteha Toxic Comment Detection в фейсбук боте. Помогите нам сделать бота лучше!

Буду рад ответить на вопросы в комментариях.

Единые правила модерации сообщения

1.  Общее положение

1.1. Настоящие Единые правила модерации сообщений подготовлены в целях обеспечения публикации сообщений пользователей на сайте МУП «ЕДС».

1.2. Текст сообщений должен быть написан на русском языке.

1.3. В одном сообщении пользователь может направить не более 5 фотографии и указать не более 1 проблемы.

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

2.  Причины отклонения сообщений пользователей.

2.1.  Если в заявке не указаны полные данные обращения и суть заявки не ясны, то заявка отклоняется и ответ на обращение не дается.

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

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

2.4.  При получении обращения, с несколькими входящими фото, модератор вправе выбрать любое фото или отклонить обращение.

2.5.  Сообщение содержит информацию о проблеме, по которой был дан ответ о невозможности ее решения.

2.6.  Текст сообщения полностью совпадает с текстом сообщения ранее зарегистрированного обращения в отношении одного и того же объекта, при этом ответа от исполнителя, по данному сообщению, не поступало.

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

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

2.9.  Сообщение содержит послания, просьбы, прошения личного характера.

2.10. Адрес, указанный в сообщении, не соответствует адресу выбранного объекта либо требует уточнения.

2.11.  Пользователь осуществляет действия, которые могут быть классифицированы как действия спам-роботов. Пользователь блокируется, если он отправил три одинаковых обращения за 10 минут в течении 12 часов.

Что такое модерация в Тик Токе и почему видео на модерации Tik Tok

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

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

 

Кем осуществляется модерация в ТикТоке

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

Алгоритм реагирует на нарушения правил ТикТок. Если вы допускаете их, клип отправят на дополнительную модерацию, а вам отправят уведомление. На этом этапе уже происходит проверка администрацией Tik Tok.

В обязанности модераторов ТикТока входят следующие пункты:

  1. Избавляют платформу от авторов, которые нарушают правила сообщества, с помощью временной или вечной блокировки.
  2. Следят за качеством клипов и блокируют их в случае нарушений.
  3. Рассматривают заявки пользователей на блокировку.
  4. Защищают Tik Tok от нарушений в виде спама в комментариях или роликах. Пользователи, которые допускают такие ошибки, попадают в теневой или блок.

Почему клип на модерации в ТикТоке

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

Дальше сотрудник платформы будет изучать ролик, чтобы найти следующие нарушения:

  1. Присутствует ли в ролике ненормативная лексика.
  2. Агитируют ли на совершение жестоких действий или насилия.
  3. Продвигают ли употребление наркотических веществ и использование оружия.
  4. Соответствует ли возраст автора указанному в правилах.
  5. Поднимаются ли темы для взрослых.
  6. Присутствует ли спам.

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

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

Писать сообщения об этом нет смысла, так как ответ вы не получите. Руководством рассматриваются важные вопросы, а подобные сообщения только замедляют работу.

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

Что делать, если модерация в Тик Токе не пройдена

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

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

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

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

Следующим этапом санкций от администрации становится деактивация аккаунта на указанный срок или навсегда.

Пользователь может быть заблокирован, если продолжает активно действовать в Tik Tok после временного бана. Так происходит, потому что это подозрительно выглядит.

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

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

Однако и с ними сообщество может отказать в восстановлении. Нарушения правил Tik Tok караются со всей строгостью.

Как не попасть в блок в Тик Токе

Действия пользователя, чтобы не попасть в блок после неудачной модерации видео в ТикТоке, включают:

  1. Сохраните свои данные на смартфон или ноутбук. Можно запросить копию на платформе. Для этого зайдите в настройки в аккаунте, затем откройте пункт «Конфиденциальность», пройдите в персонализацию и сделайте копию.
    Так информация и контент будут вам доступны при блокировке аккаунта, и вы сможете загрузить файлы на новый аккаунт.
  2. Оставляйте меньше лайков, комментариев, а также старайтесь не подписываться на тиктокеров ближайшие три дня после блокировки профиля.
  3. Не расставляйте популярные хештеги, чтобы не заострять внимание на профиле.

Вместе с этими шагами соблюдайте правила Tik Tok. Даже маленькое нарушение после неудачной модерации может стать причиной полной деактивации.

Восстановить аккаунт после полной блокировки в Тик Токе

Если видеоролик не прошел проверку, и ваш аккаунт заблокировали за серьезную ошибку, восстановить его можно.

Для этого зайдите в приложение. На экране откроется форма входа, в которую введите свои данные. Учётная запись найдется, но появится надпись, что она деактивирована.

Если вам предложат ее восстановить, значит администрация пересмотрела решение и возвращает аккаунт. Это происходит не сразу, а спустя пару дней как минимум.

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

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

8. Модерация списка рассылки

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

В этом документе обсуждаются преимущества модерации списка рассылки, механика модерации списков рассылки, поддерживаемых ezmlm, как политика списков и конфигурация влияет на процесс модерации и советы по устранение неполадок в модерируемых списках.Если вам нужны инструкции о том, как модерировать сообщение или добавить модераторов в список рассылки, см. Как модерировать рассылку Список.

Back to top

Человек медлительный, неряшливый и блестящий мыслитель; машина быстрая, точная и тупая.

—Уильям М. Келли

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

Программное обеспечение списка рассылки может быстро определить, является ли адрес отправителя адрес электронной почты находится в списке подписчиков или нет, и применять простые правила публикации на основе этих данных. К программному обеспечению, публикации привилегий принадлежит адресу электронной почты отправителя, потому что он находится на Список подписчиков, в то время как модератор-человек знает, что электронная почта учетная запись принадлежит физическому лицу, которому было предоставлено привилегии публикации из-за их участия в организации и сообществе, обслуживаемом список рассылки.Если человек отправляет сообщение со своего основного адреса электронной почты (который находится в списке обычных подписчиков) и отправляет второе сообщение со своего альтернативного адреса электронной почты. адрес (которого нет ни в одном списке подписчиков), программа видит эти сообщения исходят от разных отправителям и может применять различные привилегии публикации. За например, если список рассылки настроен на публикацию подписчика сообщений, но отправлять публичные сообщения на модерацию, он отправляет первый пост сразу в список рассылки и отправляет второй сообщение в очередь на модерацию.Сюда приходит модератор in. Модератор-человек распознает, что эти сообщения были отправлены один и тот же человек, использующий разные адреса электронной почты. модератор может одобрить второе сообщение, потому что знает лицо, отправившее его.

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

Преимущества модерируемой публикации:

  • Модераторы предотвращают спам.

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

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

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

  • Модераторы предотвращают спам!!!

Back to top

Правила списка рассылки и модерация

Контроль доступа и модерация

Модерация — это, по сути, форма контроля доступа.Доступ к спискам рассылки контролируется в трех ключевых точках (т. е. публикации, подписки и архивы), как описано в Концептуальный документ Доступ Контроль.

Правила основаны на списках подписчиков

Многие правила списка рассылки основаны на том, кто отправил сообщение, другими словами, является ли отправитель конверта в определенном списке подписчиков. Правила списка рассылки часто проводить различие между подписчиками и широкой публикой, предоставление более высокого уровня привилегий публикации подписчики.Когда список рассылки получает сообщение, он проверяет адрес отправителя на одном из своих подписчиков Списки, которые могут включать «Обычный», «Дайджест», «Разрешить» и, если это модерируемый список рассылки «Модератор». Первые три из них имеют права обычного подписчика, но модераторы имеют более высокие привилегии, и им всегда разрешено публиковать сообщения, даже если они сообщения подписчиков отклоняются. Список подписчиков «Запретить» работает наоборот: сообщения от отправителей на этом Список подписчиков автоматически отклоняется.См. Типы подписки и Списки подписчиков для получения дополнительной информации об этом тема.

Правила установлены в списке Тип

Чтобы понять, как ведет себя ваш список рассылки, вам нужно знать, какие правила установлены в Типе списка, по которому осуществляется рассылка список основан. Тип списка — это предварительно настроенный список рассылки. шаблон. При создании списка рассылки администратор выбирает тип списка, который лучше всего подходит для использование, для которого предназначен список рассылки. Список Конфигурация типа определяет, какие типы правил будут автоматически соблюдается списком рассылки, например, правила публикации.Это особенно относится к тому, как список ведет себя, когда пользователи взаимодействуют с ним по электронной почте и ezmlm команды электронной почты.

Список политик и правил модерации

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

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

Модераторы, администраторы и пользователи списка могут посещать рассылку Перечислите Home, чтобы прочитать раздел «Политика и использование» и просмотреть сведения о базовом типе списка, щелкнув ссылку «Подробности».

Back to top

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

Типы списков с модерируемой публикацией

Существует несколько различных настроек параметра «Кто может публиковать список?’ у которых включена модерация. Если вы знакомы с аргументами ezmlm-make вы знаете, что модерация включена если -m установлен в строке аргумента ezmlm-make.Вот быстрый посмотрите на различные виды модерируемых правил публикации.

Модерируемые параметры конфигурации:

Публиковать сообщения может любой, но все сообщения проходят модерацию (mOUY)

Этот параметр конфигурации используется для общедоступных дискуссионные списки. Почтовое отправление списки, которые позволяют публичным отправителям отправлять сообщения напрямую, редко, потому что они представляют собой такую ​​заманчивую цель для спамеров, поэтому большинство общедоступных дискуссионных списков принимают сообщения от кого угодно, но отправить их для одобрение модератора.За исключением отправителей на Deny Список подписчиков (чей сообщения автоматически отклонен), этот тип списка рассылки применяется так же правила публикации всем отправителям и просто отправляет каждому сообщение в очередь модерации (даже сообщения прислали модераторы). Конечно, сообщения, отправленные в этот тип списка могут быть отклонены или удалены спам-фильтром или антивирусная программа до того, как они попадут в список рассылки.

Тип списка по умолчанию Модерируемый общедоступный Обсуждение использует это настройка конфигурации.

Подписчики могут публиковать сообщения, а все остальные модерируются (mOuY)

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

Подписчики могут публиковать сообщения, все остальные отклоняются, и все сообщения проходят модерацию (mOuy)

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

Публиковать сообщения могут только модераторы (moUY)

Самый строгий вид модерации, используется в ситуациях, когда содержимое списка должно быть строго контролируется. Как упоминалось ранее, этот тип конфигурации не позволяет злоумышленникам выдавать себя за модератора, подделывая личность отправитель по электронной почте, размещенной в списке.Это также дает модераторам возможность перепроверить действительно хочу опубликовать каждое электронное письмо, которое они отправляют, в список. Этот пригодится в тех случаях, когда модератор случайно нажимает «Отправить» вместо «Сохранить» на своем MUA. По умолчанию только объявлять Тип списка использует этот тип модерации, поскольку объявления обычно имеют более высокий стандарт контроль качества, чем неофициальные информационные бюллетени, и может быть используется для распространения информации для выполнения законных обязательства.Такой тип конфигурации часто используется списками, которые обслуживают группы верхнего уровня, такие как правление организации или технический комитет. По умолчанию только объявлять Тип списка использует этот параметр конфигурации.

Типы списков с модерируемой подпиской

Модерация подписки включена в настраиваемых типах списков, где Параметр «Модель подписки» установлен на «Модерировать всю общедоступную электронную почту». на основе подписок» и «Команды общедоступной электронной почты» установлены на ‘Ответить на общедоступное электронное письмо ezmlm (не)подписаться и помочь команды.Другими словами, любой тип списка, где -ps установить в аргументе ezmlm-make нить. Для этого нет типов списков по умолчанию. комбинация.

Back to top

Публикация модерируемых сообщений может быть обработана модераторами списка рассылки с помощью команд электронной почты ezmlm или администраторами с помощью Инструменты модерации Kavi Mailing List Manager, как описано в более подробно в разделе Как модерировать список рассылки. Список рассылки модераторы получают запросы на модерацию ezmlm по электронной почте и используют Команды электронной почты ezmlm, чтобы отклонить сообщение или принять его для размещение в списке рассылки.Администраторы наблюдают за модерацией ставить в очередь и модерировать сообщения через Moderate Ожидающие сообщения и просмотр/модерация в ожидании Инструменты сообщений.

Модераторы списка рассылки не обязательно администраторы сайта. Модераторы могут быть членами или представители компании-члена, занимающие должности ответственности в организации и осведомлены о сообщество или группа подписчиков, обслуживаемых рассылкой список. Во многих организациях должности модераторов списков рассылки выполняются администраторами веб-сайта, что является одним из причины, по которым псевдоним ‘admin’ по умолчанию подписан на получение сообщений от псевдонима listmoderator.

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

Когда сообщение отправляется в очередь модерации списка рассылки, оно завернутый в запрос на модерацию и отправленный всем на Список подписчиков модератора. Модераторы могут действовать выборочно в каждом сообщении в очередь на модерацию, ответив на модерацию запросить или игнорировать сообщение до тех пор, пока оно не истечет. и автоматически возвращается отправителю. Администраторы может просматривать и взаимодействовать с этой же модерацией очередь через модерацию Kavi Mailing List Manager инструменты.

Действия модератора и администратора

Хотя электронная почта и веб-инструменты — это разные пути к одному и тому же очередь модерации и большая часть модерации процессы обрабатываются одним и тем же базовым программным обеспечением ezmlm, существуют определенные различия в действиях, которые могут предпринимать модераторы при модерировании сообщений по электронной почте и действия, которые администраторы могут предпринять при использовании веб-инструменты, о которых вы должны знать, если вы модерируете или управляете список рассылки.

Ключевые отличия:

  • Оба могут принимать сообщения для публикации на список рассылки.Для этого модератор использует команды электронной почты. а администратор использует webtools.

  • Модератор получает каждый запрос на модерацию по электронной почте и могут только просматривать сообщения в своих личных почтовый ящик. Предполагая, что администратор не подписан как модератор списка рассылки, администратор не получит запрос модерации, но может просматривать всю очередь модерации через умеренное ожидание Инструмент сообщений. На самом деле администратор может просмотреть очереди модерации для всех Kavi организации Mailing List Manager списки рассылки сразу, если желанный.Администратор может модерировать несколько сообщений как партия.

  • Администратор может получать и управлять всеми сообщения от отдельного отправителя, находящиеся в любой из Kavi Очереди модерации списков рассылки Менеджера списков рассылки.

  • Если модерация подписки включена, электронная почта ezmlm команды подписки должны модерироваться по электронной почте. Эти запросы не отправляются в очередь на модерацию и не видно через веб-инструменты.

  • Модераторы не могут подписаться или отписаться себя от модератора Подписчик Список.Администраторы должны делать это через веб-инструменты.

  • Только администраторы могут добавлять пользователей в Разрешить или Запретить списки подписчиков.

  • Когда модератор отклоняет сообщение, ezmlm программное обеспечение упаковывает его в уведомление об отказе и возвращает его отправителю. Модератор может добавить сообщение к этому заметьте, если хотите. Администратор может удалить сообщение из очереди, а не отклонять его, и нет отправляется автоматическое уведомление, но администратор возможность создания вручную.

Модерация сообщений по электронной почте

Когда сообщение отправляется в очередь модерации списка рассылки ezmlm запрос на модерацию пересылается каждому адрес в списке подписчиков модератора. Модератор может использовать модерацию электронной почты ezmlm. команды принять или отклонить сообщение, или может игнорировать запрос, оставляя сообщение в очереди до следующего модератор или администратор воздействует на сообщение или время истекло очереди (обычно через пять дней или около того).

Электронное письмо с запросом на модерацию содержит копию сообщение, которое необходимо модерировать, плюс инструкции, которые включить команды электронной почты, которые модератор использует для модерации сообщение. Модератор принимает сообщение, отвечая на одно адрес электронной почты или отклоняет его, отвечая на другой Адрес электронной почты. Более подробно это объясняется в Как модерировать рассылку Список.

Когда модератор утверждает сообщение, оно отправил в список, потом удалил с модерации очередь.Когда модератор отклоняет сообщение, сообщение завернут в уведомление об отказе и возвращен отправителю и удален из очереди на модерацию. Сообщения, которые игнорируются в конечном итоге тайм-аут, завернуты в уведомление о тайм-ауте и возвращается отправителю, затем удаляется из очередь. После удаления сообщения из очереди из-за модератор отреагировал на это или истекло время ожидания, дальнейшие действия не могут быть быть принятым. Например, когда модератор отклоняет сообщение и сообщение удаляется из очереди, другой модератор, который попытается принять сообщение, получить уведомление об ошибке по электронной почте.

Example8.1.Ezmlm Timeout Notification


Привет! Это программа ezmlm. Я веду список рассылки
[email protected]

Я работаю на владельца, который может связаться с
по адресу [email protected]

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

— Прилагается, пожалуйста, найдите сообщение, которое вы отправили.

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

Модерация сообщений через Webtools

Если администратор не подписан как модератор, они не будет получать запросы на модерацию по электронной почте.Вместо любого подсказки по электронной почте, администратор следует взять за правило посещать умеренное ожидание Инструмент сообщений на регулярной основе для проверки модерации очередь. Администратор может модерировать сообщения массово или просматривать отдельное сообщение и добавить отправителя в Разрешить Список подписчиков для предоставления текущих привилегий публикации или Запретить список подписчиков, чтобы отозвать привилегии публикации до тех пор, пока желанный. Как уже упоминалось, администраторы могут удалять сообщения только через веб-инструменты.Если вы предпочитаете более вежливый процесс отклонения ezmlm, это должно быть обработано модератором сообщение с помощью команд электронной почты ezmlm. С другой стороны, если вы предпочитаете удалять нежелательные сообщения без явно уведомляя отправителя о нежелательных сообщениях, тихо удаление может быть идеальным.

Back to top

Если список рассылки основан на типе списка с модерация подписки включена (т. е. -s установлен в строке аргумента ezmlm-make), модераторы должны утвердить команды подписки и отмены подписки по электронной почте.Это обрабатывается по электронной почте модераторами списка рассылки, как описано в разделе «Как модерировать рассылку». Список. В отличие от запросов на модерацию сообщений, которые могут управляться по электронной почте или через веб-инструменты, запросы на модерацию подписки могут быть обрабатывается по электронной почте.

Некоторые типы списков настроены на отклонение всей электронной почты команды подписки и отписки. Когда это произойдет, подписки должны быть добавлены или удалены через Kavi Mailing List Manager инструменты. Доступ к веб-инструментам установлен отдельно для каждый список рассылки в опции веб-доступности, так что потенциальные подписчики могут иметь или не иметь возможность добавлять новые подписки для сами себя.Когда команды подписки на электронную почту ezmlm заблокирован для списка рассылки, и пользователи не могут подписаться напрямую с помощью инструментов Kavi Mailing List Manager, других видов модерируемых или частных результаты процесса подписки. В этом случае процесс подписки контролируется администраторами, а не чем модераторы списка рассылки. В отличие от команд электронной почты ezmlm, в процесс отписки имеет тот же уровень ограничения в процессе подписки, подписчики могут иметь возможность чтобы отказаться от подписки напрямую через веб-инструменты, даже если им не разрешено подписываться.

Back to top

Устранение неполадок с модерируемыми списками

Вот несколько наиболее распространенных проблем поддержки, влияющих на модерируемые списки рассылки. Если ваша проблема здесь не рассматривается, см. Обширная справка Kavi Mailing List Manager по устранению неполадок электронной почты.

Вы Ваш адрес электронной почты

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

Если у вас проблемы с контролем доступа механизмов и не знаете, как настроен список, нажмите ссылку Просмотр.

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

Администраторы могут проверить почтовые журналы, чтобы узнать, было ли сообщение отправлено на очередь на модерацию.

Back to top

Модерация -risup.net

Добавление модераторов/редакторов

  1. Перейдите на страницу администратора (подсказка: перейдите на lists.riseup.net/www/admin/YOURLISTNAME)
  2. Нажмите Администратор
  3. Нажмите «Изменить конфигурацию списка»
  4. Нажмите определение списка
  5. Прокрутите вниз до раздела Модераторы
  6. Заполните пустую запись:
    gecos : Это отображаемое имя редактора (необязательно).
    получение : Если установлено значение mail , все модерируемые сообщения отправляются этому редактору для модерации. Если установлено значение nomail , редактор по-прежнему может модерировать сообщения с помощью веб-интерфейса.
    info : Описание информации об этом редакторе (необязательно).
    электронная почта : адрес электронной почты редактора. Это поле обязательно к заполнению.
  7. Нажмите кнопку Обновить внизу страницы.
  8. Повторите для стольких редакторов, которых хотите добавить.

Модерация онлайн

  1. Войдите в систему.
  2. Перейти на информационную страницу списка.
  3. Перейдите по ссылке «Модерировать» слева.
  4. Выберите соответствующие электронные письма.
  5. Щелкните один из:
    Распространить: это утвердит сообщение и распространит его по списку.
    Отклонить: это автоматически отклонит сообщение.
    Уведомить об отклонении: это приведет к отклонению сообщения и информированию отправителя сообщения о том, что сообщение было отклонено.

Модерация по электронной почте

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

Примечание: Сообщение для модерации включено в виде вложения. Если ваш почтовый клиент не отображает встроенное вложение, вам придется открыть вложение, чтобы просмотреть сообщение.

Электронное письмо будет выглядеть так:

Чтобы распространить следующее сообщение в список *listname*, либо нажмите на эту ссылку:

почта: [email protected]?subject=DISTRIBUTE%20*listname*%20892176d8da696d9af5acd7a2ba4ed1c5

Или отправьте письмо на [email protected] с этой темой:

РАСПРОСТРАНЕНИЕ *имя_списка* 892176d8da696d9af5acd7a2ba4ed1c5

Чтобы отказаться от него (удалить), либо нажмите на эту ссылку:

mailto:[email protected]?subject=REJECT%20*listname*%20892176d8da696d9af5acd7a2ba4ed1c5

Или отправьте письмо на [email protected] с этой темой:

ОТКЛОНИТЬ *имя списка* 892176d8da696d9af5acd7a2ba4ed1c5
 

Где *listname* — название вашего списка.Если ваш почтовый клиент поддерживает интерактивные URL-адреса, вы можете щелкнуть ссылку «mailto:». Большое длинное число после имени списка — это секретный код, который меняется для каждого сообщения.

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

Построение системы автоматической модерации сообщений / Хабр Системы автоматической модерации внедряются в веб-сервисы и приложения, где необходимо обрабатывать большое количество пользовательских сообщений.Такие системы позволяют снизить затраты на ручную модерацию, ускорить ее и обрабатывать все сообщения пользователей в режиме реального времени. В статье мы поговорим о построении системы автоматической модерации обработки английского языка с использованием алгоритмов машинного обучения. Мы обсудим весь пайплайн от исследовательских задач и выбора алгоритмов машинного обучения до внедрения в производство. Давайте разберемся, где искать готовые наборы данных и как собрать данные для задачи самостоятельно.

Подготовлено совместно Ирой Степанюк ( id_step ), Data Scientist в Poteha Labs

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


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

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


Видно, что токсичные сообщения часто содержат нецензурные слова, но все же это не обязательное условие. Сообщение может не содержать неуместных слов, но быть для кого-то оскорбительным (пример (1)). Кроме того, иногда токсичные и нормальные сообщения содержат одни и те же слова, которые используются в разных контекстах — оскорбительных или нет (пример (2)). Такие сообщения тоже нужно уметь различать.
Изучив различные сообщения, для нашей системы модерации мы назвали токсичными те сообщения, которые содержат высказывания с нецензурными, оскорбительными выражениями или ненавистью к кому-либо.

Данные


Открытые данные

Одним из самых известных наборов данных для модерации является набор данных Kaggle Toxic Comment Classification Challenge. Часть разметки в наборе данных неверна: например, сообщения с нецензурными словами могут быть помечены как обычные. Из-за этого вы не можете просто взять соревнования Kernel и получить хорошо работающий алгоритм классификации. Нужно больше работать с данными, смотреть, каких примеров не хватает, и с такими примерами добавлять дополнительные данные.

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

Ручные данные

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

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

Расширение данных

Часто в наборах данных можно увидеть измененные сообщения, на которых классификатор ошибается, а человек правильно понимает их смысл.
Это происходит потому, что пользователи подстраиваются и учатся обманывать системы модерации, чтобы алгоритмы ошибались в токсичных сообщениях, а смысл оставался понятным человеку.Что сейчас делают пользователи:
  • опечатки генерируют: ты тупой мудак, пиздец ты ,
  • заменяем буквы цифрами, похожими по описанию: n1gga, b0ll0cks ,
  • вставляем лишние пробелы: идиот , ,
  • убрать пробелы между словами: dieyoustupid .

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

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


Перед нами стояли подзадачи по анализу сообщений в двух разных режимах:
  • онлайн режим — анализ сообщений в реальном времени, с максимальной скоростью ответа;
  • автономный режим — анализ журналов сообщений и выделение токсичных диалогов.

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

Онлайн-режим. Поиск по словарю


Независимо от того, какая модель будет выбрана следующей, мы должны находить и фильтровать сообщения с нецензурными словами.Для решения этой подзадачи проще всего составить словарь недопустимых слов и выражений, которые нельзя пропускать, и искать такие слова в каждом сообщении. Поиск должен быть быстрым, поэтому наивный алгоритм поиска подстроки для того времени не подходит. Подходящим алгоритмом для поиска набора слов в строке является алгоритм Ахо-Корасика. Благодаря такому подходу можно быстро выявить некоторые токсичные примеры и заблокировать сообщения до того, как они будут переданы основному алгоритму. Использование алгоритма ML позволит вам «понять смысл» сообщений и улучшить качество классификации.

Онлайн-режим. Базовая модель машинного обучения


Для базовой модели мы решили использовать стандартный подход к классификации текста: TF-IDF + классический алгоритм классификации. Опять же из соображений скорости и производительности.

TF-IDF — статистическая мера, позволяющая определить наиболее важные слова для текста в теле по двум параметрам: частота слов в каждом документе и количество документов, содержащих конкретное слово (подробнее здесь). Рассчитав для каждого слова в сообщении TF-IDF, мы получаем векторное представление этого сообщения.
TF-IDF можно рассчитать для слов в тексте, а также для n-граммных слов и символов. Такое расширение будет работать лучше, так как сможет обрабатывать часто встречающиеся фразы и слова, которых не было в обучающем наборе (вне словарного запаса).

  из sklearn.feature_extraction.text импорт TfidfVectorizer
из scipy import sparse
vect_word = TfidfVectorizer (max_features = 10000, нижний регистр = True,
  Analyzer='слово', min_df=8, stop_words=stop_words, ngram_range=(1,3))
vect_char = TfidfVectorizer (max_features = 30000, нижний регистр = True,
   анализатор = 'символ', min_df = 8, ngram_range = (3,6))
x_vec_word = векторное_слово.fit_transform (x_train)
x_vec_char = vect_char.fit_transform(x_train)
x_vec = sparse.hstack([x_vec_word, x_vec_char])  
Пример использования TF-IDF на n-граммах слов и символов

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

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

Алгоритм, полученный с помощью TF-IDF и логистической регрессии, быстро работает и хорошо определяет сообщения с нецензурными словами и выражениями, но не всегда понимает смысл. Например, часто в токсичный класс попадали сообщения со словами « черный » и « феминизм ». Я хотел исправить эту проблему и научиться лучше понимать смысл сообщений с помощью следующей версии классификатора.

Автономный режим


Для лучшего понимания смысла сообщений можно использовать нейросетевые алгоритмы:
  • Вложения (Word2Vec, FastText)
  • Нейронные сети (CNN, RNN, LSTM)
  • Новые предварительно обученные модели (ELMo, ULMFiT, BERT)

Мы обсудим некоторые из этих алгоритмов и способы их использования более подробно.
Word2Vec и FastText

Встраивание моделей позволяет получать векторные представления слов из текстов. Существует два типа Word2Vec: Skip-gram и CBOW (Continuous Bag of Words). В Skip-gram контекст предсказывается по слову, а в CBOW наоборот: слово предсказывается по контексту.

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

Для решения проблемы со словами, которых нет в словаре (OOV, out-of-vocabulary) существует улучшенная модель встраивания — FastText. Вместо того, чтобы использовать отдельные слова для обучения нейронной сети, FastText разбивает слова на n-граммы (подслова) и учится на них.Чтобы получить векторное представление слова, нужно получить векторные представления n-граммы этого слова и сложить их.

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


Пример вывода слов «самый близкий» по смыслу с использованием предварительно обученного FastText

CNN Classifier

Для обработки и классификации текстов нейросетевых алгоритмов чаще используют рекуррентные сети (LSTM, GRU), так как они хорошо работают с последовательностями.Сверточные сети (CNN) чаще всего используются для обработки изображений, но их также можно использовать в задаче классификации текста. Подумайте, как это можно сделать.
Каждое сообщение представляет собой матрицу, в которой на каждой строке для токена (слова) записано его векторное представление. Свертка применяется к такой матрице определенным образом: фильтр свертки «скользит» по целым строкам матрицы (векторам слов), но захватывает сразу несколько слов (обычно 2-5 слов), обрабатывая таким образом слова в контекст соседних слов.Подробности того, как это происходит, можно увидеть на картинке.

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

ELMo (Embeddings from Language Models) — это модель встраивания, основанная на недавно представленной языковой модели. Новая модель внедрения отличается от моделей Word2Vec и FastText.Векторы слов ELMo имеют определенные преимущества:
  • Представление каждого слова зависит от всего контекста, в котором оно используется.
  • Представление основано на символах, что позволяет формировать надежные представления для OOV (внесловарных) слов.

ELMo можно использовать для различных задач НЛП. Например, для нашей задачи векторы сообщений, полученные с помощью ELMo, можно отправить в классический ML-классификатор или использовать сверточную или полносвязную сеть.Предобученные эмбеддинги
ELMo довольно просто использовать для своей задачи, пример использования можно найти здесь.

Особенности реализации


Flask API

API прототипа был написан на Flask, так как им легко пользоваться.
Два образа Docker

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

Особенность реализации достаточно большого количества алгоритмов машинного обучения заключается в том, что даже при высоких метриках на проверочном наборе данных реальное качество алгоритма в продакшене может быть низким. Поэтому для проверки работы алгоритма вся команда использовала бота в Slack. Это очень удобно, потому что любой член команды может проверить, какой ответ дают алгоритмы на то или иное сообщение.Этот метод тестирования позволяет сразу увидеть, как алгоритмы будут работать на живых данных.
Хорошая альтернатива — запуск решения на общедоступных площадках вроде Яндекс Толока и AWS Mechanical Turk.

Заключение


Мы рассмотрели несколько подходов к решению задачи автоматической модерации сообщений и описали особенности нашей реализации.
Основные наблюдения, полученные в ходе работы:
  • Алгоритм поиска по словарю и машинного обучения на основе TF-IDF и логистической регрессии позволил классифицировать сообщения быстро, но не всегда корректно.
  • Нейросетевые алгоритмы и предварительно обученные модели вложений лучше справляются с этой задачей и могут определять токсичность по смыслу сообщения.

Конечно же, мы разместили открытое демо Poteha Toxic Comment Detection на боте Facebook. Помогите нам сделать бота лучше!

Буду рад ответить на вопросы в комментариях.

Автоматизируйте модерацию и анализ тональности с помощью обмена сообщениями Amazon Chime SDK

Организаторам прямых трансляций необходимо общаться в рамках крупных потоковых мероприятий, транслируемых в прямом эфире демонстраций продуктов и основных докладов на конференциях с использованием различных методов, включая видео и чат, но существующие решения для чата часто позволяют не масштабируется для поддержки десятков тысяч участников.Обмен сообщениями Amazon Chime SDK является безопасным, постоянным и может поддерживать до 100 000 участников в одном канале чата. В этом посте вы узнаете, как использовать Amazon Chime SDK для создания приложения для чата, которое можно использовать одновременно с прямой трансляцией. Это приложение включает в себя часто запрашиваемые функции для этого варианта использования, включая автоматическую модерацию, эффекты сообщений и анализ настроений.

Для этого пошагового руководства у вас должны быть следующие предварительные условия:

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

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

Архитектура приложений

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

Эта архитектура состоит из шести ключевых компонентов:

  1. Экземпляр приложения Amazon Chime — контейнер для обмена сообщениями Amazon Chime SDK. Такие параметры, как политики хранения и потоковый экспорт данных обмена сообщениями через Amazon Kinesis, задаются на уровне экземпляра приложения. В экземпляре приложения у вас есть:
    1. Администратор экземпляра приложения — это пользователь, используемый в функциях AWS Lambda для выполнения действий по модерации и администрированию, таких как отправка сообщений с предупреждением об использовании ненормативной лексики, редактирование конфиденциального контента и отправка управляющих сообщений с настроением.
    2. Один канал — с помощью этого упрощенного пользовательского интерфейса создается один канал, и только этот канал отображается в интерфейсе.
    3. Пользователи — пользователи создаются путем создания пользователя Lambda после того, как они введут свое имя
  2. Amazon API Gateway — подключает клиента к созданию пользователя Lambda
  3. .
  4. Create Chat User Lambda — создает пользователя и добавляет его в канал чата
  5. Amazon Kinesis Data Stream — экспортирует данные чата в функцию Lambda для обработки.
  6. Message Processing Lambda — обрабатывает сообщения, сканирует ненормативную лексику и интегрируется с Amazon Comprehend
  7. .
  8. Amazon Comprehend — Amazon Comprehend используется для анализа настроений и обнаружения личной информации (PII)

Развертывание демонстрационного приложения модерируемого чата

Шаг 1. Создайте ресурсы AWS

  1. Войдите в Консоль управления AWS, используя свою основную учетную запись. Переключитесь на us-east-1 (N.Вирджиния) обл. Примечание. Шаблон AWS CloudFormation в этом разделе необходимо запустить в регионе Восток США (Северная Вирджиния).
  2. Щелкните изображение Launch Stack под этим предложением, чтобы запустить шаблон AWS CloudFormation, который настроит необходимую инфраструктуру для демонстрационного приложения чата Amazon Chime SDK в вашей учетной записи AWS.
  3. На странице Создать стек нажмите Далее .
  4. На странице Specify Details введите имя стека:
    DemoName-ChimeModeratedChatDemo
  5. Выберите Далее , а затем Далее на странице Настройка параметров стека .
  6. На странице Обзор установите флажок Я подтверждаю, что AWS CloudFormation может создать ресурсы IAM . Затем нажмите Создать .
  7. Создание стека генерирует 4 вывода: adminUserArn , appInstanceArn , channelArn , createUserApiGatewayURL . Запишите эти значения для выходных данных, которые будут использоваться для настройки приложения на следующем шаге.

Шаг 2. Разверните демонстрационное приложение модерируемого чата локально

В этом разделе вы развернете простое веб-приложение, написанное на платформе React, в вашей локальной среде.Это приложение демонстрирует функции обмена сообщениями Amazon Chime SDK. После того, как вы настроите приложение локально, вы сможете приступить к работе.

  1. Клонируйте проект с GitHub.
    клон git https://github.com/aws-samples/amazon-chime-sdk.git
  2. Выполните следующие команды, чтобы перейти в корневую папку демонстрационного приложения модерируемого чата:
    cd ./amazon-chime-sdk/apps/moderated-chat-and-sentiment-analysis
  3. Выполните следующие команды, чтобы перейти к установке зависимостей из корневой папки:
    npm install
  4. Открыть src/Config.js с помощью редактора по вашему выбору. Добавьте в него следующую конфигурацию:
    const appConfig = {
    createUserApiGatewayURL: «»,
    appInstanceArn: '',
    adminUserArn: '' ,
    channelArn: ''
    };"
    export default appConfig;
  5. После ввода конфигурации для приложения выполните следующие команды в корневой папке:
    npm run start
    Примечание. Если при компиляции возникает ошибка, попробуйте запустить npm install react-is
  6. Откройте браузер и перейдите по адресу https://localhost:9000, чтобы начать тестирование.
    1. Введите свое имя, чтобы присоединиться к каналу
    2. Отправьте сообщение со словами «ненормативная лексика», «ругань», «непристойность» или «черт возьми», чтобы проверить фильтрацию ненормативной лексики. Этот список находится в переменной filteredWords в файле index.js для функции AWSSDKChimeModeratedChatDemo-MessageModerator AWS Lambda.
  7. Введите в сообщении PII, например номер телефона, и его следует отредактировать.
  8. Введите положительное слово, например «круто», в сообщении, и вы должны увидеть увеличение положительного настроения и эмодзи, летающие по экрану.

В следующих нескольких разделах я более подробно расскажу о том, как работает каждая из этих функций.

Базовая аутентификация

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

Несмотря на простоту этого примера, он начинает демонстрировать гибкость аутентификации в обмене сообщениями Amazon Chime SDK.В этом потоке вы, как разработчик, точно контролируете, как пользователи получают доступ к каналу, и можете ограничивать доступ по своему усмотрению, просто редактируя политику IAM для роли пользователя.

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

Поскольку обмен сообщениями Amazon Chime SDK работает практически с любым поставщиком удостоверений, вы можете заменить функцию AWS Lambda, показанную на диаграмме, своим собственным IdP и полностью исключить гостевой доступ, требуя от всех пользователей входа в систему.

Обработка сообщений для обнаружения PII или ненормативной лексики

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

Однако автоматическое обнаружение конфиденциального содержимого является сложным, требует уникальных навыков и требует больших затрат. Человеческая модерация требует значительных человеческих усилий и не масштабируется. Amazon Comprehend помогает решить многие проблемы, связанные с реализацией автоматического обнаружения ненормативной лексики и конфиденциальной информации, такой как PII, а обмен сообщениями Amazon Chime SDK предоставляет функции, которые обеспечивают интеграцию с Amazon Comprehend для обнаружения ненормативной лексики, PII и другого нежелательного контента.Обмен сообщениями Amazon Chime SDK также предоставляет такие функции, как редактирование сообщений, редактирование сообщений, удаление (удаление) пользователей из каналов и блокировка пользователей, чтобы они не могли вернуться.

Шаблон обработки сообщений для этой демонстрации использует потоковый экспорт данных чата с помощью Amazon Kinesis. Сообщения, передаваемые через Amazon Kinesis, затем обрабатываются функцией AWS Lambda.

Для простоты Amazon Comprehend используется для обнаружения персональных данных и определения тональности.Для ненормативной лексики функция Lambda просто использует список запрещенных слов. Этого достаточно для многих случаев использования и не требует обучения работе с Amazon Comprehend. При желании вы также можете использовать Amazon Comprehend для ненормативной лексики, но вам нужно будет обучить свою собственную модель.

При обнаружении ненормативной лексики вызывается функция Lambda с использованием бота с ролью администратора экземпляра приложения для удаления контента и сначала уведомления пользователя о том, что он будет удален и забанен, если продолжит. После начального предупреждения этот же процесс используется для повторного удаления контента с помощью Redact API, но на этот раз бот также удаляет пользователя и блокирует его доступ к каналу.

Чтобы реализовать обнаружение PII, содержимое этого потока отправляется через функцию AWS Lambda, которая обрабатывает сообщения и использует Amazon Comprehend для обнаружения PII. После обнаружения PII вызывается функция Lambda с использованием бота с ролью администратора экземпляра приложения для редактирования сообщения и удаления конфиденциального содержимого.

Анализ реакций и настроений

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

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

В этой демонстрации реакции и анализ настроений следуют процессу, который мы настроили для обнаружения PII.Каждое сообщение передается через поток данных Amazon Kinesis в функцию AWS Lambda, а затем в Amazon Comprehend. Amazon Comprehend определяет тональность сообщения, которое затем отправляется обратно в Lambda. Оттуда бот отправляет управляющее сообщение клиентам с настроением, которое затем запускает отображение реакции. В то же время оценка тональности в верхней части страницы обновляется с учетом нового сообщения. Если сообщение положительное, положительная оценка увеличивается.Если сообщение отрицательное, отрицательный балл увеличивается. Если сообщение нейтральное, обе оценки снизятся, поскольку мы не учитываем нейтральные настроения в пользовательском интерфейсе.

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

Очистка

Если вы не хотите, чтобы за использование демо-приложения модерируемого чата по-прежнему взималась плата, вы можете очистить его, удалив стек AWS CloudFormation и ресурсы, созданные в разделе для развертывания демо-приложения модерируемого чата Amazon Chime SDK.

Чтобы удалить стек и его ресурсы:

  1. В консоли AWS CloudFormation в us-east-1 выберите стек, созданный для этой демонстрации.
  2. Щелкните Удалить стопку .
  3. В появившемся сообщении подтверждения нажмите Да, Удалить . На данном этапе статус ваших изменений на DELETE_IN_PROGRESS. Точно так же, как вы отслеживали создание стека, отслеживайте его удаление с помощью вкладки «События».Когда AWS CloudFormation завершает удаление стека, он удаляется из списка.

Заключение

В этом посте вы узнали, как использовать функции обмена сообщениями Amazon Chime SDK вместе с другими сервисами AWS, включая AWS Lambda и Amazon Comprehend, чтобы добавить автоматическую модерацию в канал чата, который можно использовать вместе с трансляцией видео или в любом другом случае. где у вас есть большие чаты, требующие модерации или анализа настроений.

Функции обмена сообщениями Amazon Chime SDK сегодня доступны в регионе Восток США (Северная Вирджиния) по низкой цене за сообщение. Чтобы начать работу с обменом сообщениями Amazon Chime SDK, прочитайте наше руководство для разработчиков.

Как построить систему модерации сообщений | от команды Потеха | HackerNoon.com

By Ира Степанюк , Data Scientist в Poteha Labs

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

Постановка задачи

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

Для начала давайте определим токсичные сообщения. Мы изучили множество типичных сообщений пользователей в Интернете и вот несколько примеров, уже разделенных на две группы: токсичные и нормальные.

Примеры токсичных и обычных сообщений

Как и ожидалось, токсичные сообщения часто содержат нецензурные слова, но это не обязательно.Некоторые сообщения, даже если они не содержат нецензурных слов, могут кого-то оскорбить (пример 1). Более того, иногда токсичные и нормальные сообщения содержат одни и те же слова, которые используются в разных контекстах (оскорбительных или нет, пример 2). Такие сообщения также следует различать.

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

Открытые данные

Одним из самых популярных наборов данных для модерации сообщений является набор данных, предоставленный для «Конкурса классификации токсичных комментариев» на Kaggle.Однако этот набор данных содержит много некорректной маркировки: например, сообщения с нецензурными словами помечаются как обычные. Из-за этого мы не можем просто запустить одно из конкурирующих ядер и получить эффективный алгоритм классификации. Нам нужно глубоко погрузиться в данные, выяснить, каких токсичных фраз или сценариев нам не хватает, и добавить их в набор обучающих данных.

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

Самостоятельно собранные данные

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

Мы собрали около 10 тысяч сообщений и должны были пометить их следующими. К тому времени базовый классификатор уже был обучен и готов к использованию для полуавтоматической маркировки. Мы применили его, чтобы получить вероятности токсичности для каждого сообщения, а затем отсортировали эти вероятности в порядке убывания. Глядя на этот список сообщений, можно было увидеть, что вверху были те сообщения, которые содержали нецензурные и оскорбительные слова, а обычные сообщения были внизу. Таким образом, часть данных была сразу отнесена к классу токсичности без какой-либо ручной маркировки.Средняя часть списка была размечена вручную.

Расширение данных

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

Это происходит потому, что пользователи быстро адаптируются к ограничениям чата и учатся обманывать систему модерации, чтобы алгоритм ошибался на токсичном сообщении. Что делают пользователи:

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

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

Режимы модерации

Пришлось придумать решения для обработки сообщений в двух режимах:

  • онлайн-режим — анализ сообщений в реальном времени с высокой скоростью отклика;
  • автономный режим — не такой быстрый анализ сообщений лога и выделение токсичных диалогов.

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

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

Поиск по словарю

Какая бы модель не была выбрана, мы обязательно должны обнаруживать и отфильтровывать нецензурные слова. Самый простой способ решить эту подзадачу — составить словарь недопустимых слов и выражений и проверять каждое сообщение по этому словарю. Это часть предварительной обработки сообщения, которая должна работать очень быстро, и по этой причине мы выбрали алгоритм Ахо-Корасика, который подходит для быстрого поиска набора слов в строке. Благодаря такому подходу мы можем быстро выявлять токсичные фразы и блокировать сообщения, не передавая их в основной алгоритм.А последующее применение алгоритма ML к тем сообщениям, которые прошли проверку по словарю, позволяет «понять» их смысл и улучшить качество классификации.

Базовая модель

Для базовой модели мы решили использовать стандартный подход к классификации текстов: статистику TF-IDF в сочетании с классическим алгоритмом классификации.

TF-IDF — это статистическая мера, которая позволяет определить, насколько важно слово для текста в корпусе, используя два параметра: частоту слов в каждом документе и количество документов, содержащих это слово (подробности здесь).Когда мы вычисляем TF-IDF для каждого слова в сообщении, мы получаем векторное представление этого сообщения.

TF-IDF может быть рассчитан как для слов в тексте, так и для n-грамм слов и символов. Такое расширение будет работать лучше, поскольку оно будет обрабатывать часто встречающиеся фразы и слова, которых не было в данных поезда.

Пример применения TF-IDF к n-граммам слов и символов

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

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

Полученный алгоритм на основе TF-IDF и логистической регрессии работает быстро и хорошо идентифицирует сообщения с оскорбительными словами и выражениями, но не всегда понимает смысл остального текста. Например, не оскорбительные сообщения со словами «черный» и «феминизм» могут попасть в класс токсичных. В улучшенной версии классификатора мы хотели исправить эту проблему и научиться лучше понимать глубинный смысл текстов.

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

  • Встраивание (Word2Vec, FastText)
  • Нейронные сети (CNN, RNN)
  • Новые предварительно обученные модели (ELMo, ULMFiT, BERT)

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

Word2Vec и FastText

Модели встраивания разработаны для преобразования слов из текстов в векторные представления.Word2Vec имеет два типа: Skip-gram и CBOW (Continuous Bag of Words). В Skip-gram контекст предсказывается по слову, а в CBOW наоборот: слово предсказывается по контексту.

image source

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

Для решения проблемы со словами, которых нет в словаре (OOV, out-of-vocabulary) существует улучшенная модель встраивания FastText. Вместо использования отдельных слов для обучения нейронной сети FastText разбивает слова на n-граммы (подслова) и запоминает их. Чтобы получить векторное представление слова, нам нужно получить векторные представления n-грамм слова и сложить их.

Таким образом, для получения векторов признаков из сообщений мы можем использовать предварительно обученные модели Word2Vec и FastText. Затем эти векторные представления можно классифицировать с помощью классических классификаторов ML или полносвязной нейронной сети.

Пример вывода ближайших слов с использованием предварительно обученного FastText

Классификация текста с помощью CNN

Применительно к задачам обработки текста рекуррентные нейронные сети (LSTM, GRU) используются чаще, чем другие архитектуры нейронных сетей, поскольку они справляются с последовательности лучше.Сверточные нейронные сети (CNN) часто используются для обработки изображений, но их также можно использовать в задаче классификации текста. Рассмотрим, как это можно реализовать.

Каждое сообщение представлено матрицей, где в каждой строке записано векторное представление слова. Свертка применяется к матрице определенным образом: фильтр свертки «скользит» по целым строкам матрицы (словарным векторам), но при этом захватывает сразу несколько слов (обычно 2–5 слов), обрабатывая таким образом слова в контексте соседних слов.Более подробная информация о процессе представлена ​​на следующей картинке.

источник изображения

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

ELMo

ELMo (встраивание из языковых моделей) — недавно представленная модель встраивания, основанная на языковой модели. Он отличается от моделей Word2Vec и FastText и предоставляет векторы слов, которые имеют определенные преимущества:

  • Представление слова зависит от всего контекста, в котором оно используется.
  • Представление основано на символах, позволяющих формировать надежные представления для слов, не входящих в словарь.

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

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

Flask API

Прототип API был написан на Flask, так как им легко пользоваться.

Два образа Docker

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

Тестирование

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

Хорошей альтернативой Slack-боту является запуск пробных решений на краудсорсинговых сервисах вроде Яндекс Толока и AWS Mechanical Turk.

Мы рассмотрели несколько подходов к автоматической модерации сообщений и описали особенности нашей реализации.Основные наблюдения, полученные в процессе разработки:

  • Алгоритм поиска по словарю и машинного обучения на основе TF-IDF и логистической регрессии позволил классифицировать сообщения быстро, но не всегда корректно.
  • Алгоритмы на основе нейронных сетей и предобученных моделей встраивания лучше справляются с такой задачей и могут определять токсичность по смыслу сообщения.

Наконец, мы хотели бы сообщить, что мы выпустили открытую демонстрацию системы обнаружения токсичных комментариев Poteha через бота Facebook.Пожалуйста, попробуйте и помогите нам сделать систему лучше!

И спасибо за прочтение! Пожалуйста, задавайте нам вопросы, оставляйте свои комментарии и следите за обновлениями! Свяжитесь с нами по телефону https://potehalabs.com

Знаете ли вы, что группы Microsoft 365 теперь поддерживают модерацию

Группы Microsoft 365 (ранее известные как группы Office 365 или современные группы) существуют уже несколько лет и в настоящее время служат базовым строительным блоком для других служб, таких как Teams. Когда дело доходит до функциональности, они представляют собой странную смесь общего почтового ящика и группы рассылки, объединяющую некоторые из лучших функций двух типов получателей и в то же время исключающую поддержку столь же важных.Не помогает и то, что Microsoft уже несколько раз меняла свое «видение» в отношении групп только для того, чтобы снова и снова сталкиваться с ожиданиями клиентов. В целом, группы никуда не денутся и медленно, но верно занимают свое место в качестве основного инструмента для использования в определенных сценариях, связанных с почтой.

Одним из таких распространенных сценариев является необходимость модерировать отправку сообщений. Обычные группы рассылки, старые добрые общедоступные папки и почти все другие типы получателей Exchange уже давно поддерживают функцию модерации, но группы Microsoft 365 изначально запускались без поддержки модерации.Примерно год назад, то есть, когда незаметно добавили поддержку модерации. Или, по крайней мере, я пропустил какое-либо объявление вокруг этого, так что это стало недавним сюрпризом, когда я попробовал некоторые вещи PowerShell. В любом случае, группы Microsoft 365 теперь поддерживают модерацию, и она работает так, как вы ожидаете.

Чтобы настроить модерацию для группы Microsoft 365, необходимо использовать Exchange Online PowerShell, а точнее командлет Set-UnifiedGroup . В приведенном ниже примере включается модерация для группы «TeamOne» и назначается модератор одного из ее владельцев:

.
 Set-UnifiedGroup TeamOne -ModeratedBy pesho -ModerationEnabled $true 

При необходимости вы можете назначить нескольких модераторов, и они не обязательно должны быть владельцами группы или даже членами, однако, если функция включена, необходимо назначить по крайней мере одного модератора.Интересно, что некоторые другие параметры, управляющие функциями модерации для «традиционных» типов получателей, в настоящее время недоступны. К ним относятся параметр BypassModerationFromSendersOrMembers (используемый для обозначения списка отправителей, которые не будут подвергаться модерации) и параметр SendModerationNotifications , который определяет, уведомляются ли отправители в случае отклонения их сообщения. Один дополнительный параметр обычно связан с элементами управления модерацией, а именно BypassNestedModerationEnabled , однако, поскольку вложение по-прежнему не поддерживается для групп, в настоящее время нам не нужен этот параметр.

Что касается того, как на самом деле работает функция модерации, то здесь нет ничего удивительного. Когда модерация включена, каждое сообщение, адресованное рассматриваемой группе, будет оставаться в очереди на модерацию до тех пор, пока оно не будет одобрено. Утверждение происходит через Outlook или OWA, при этом модератор уведомляется по электронной почте о любых ожидающих сообщениях. Будет создан краткий предварительный просмотр сообщения с приложенным полным исходным элементом на случай, если потребуется дополнительная информация. В уведомлении по электронной почте вы можете отправить утвердить/выпустить сообщение или отклонить его, либо указав пользовательскую причину, либо придерживаясь значения по умолчанию.Единственное, что здесь стоит упомянуть, это причудливое имя отправителя, используемое для генерации уведомления 🙂

.

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

Модерация обсуждений канала Teams

В Teams добавлена ​​еще одна функция электронной почты

Модерация — это хорошо известная функция систем электронной почты для управления сообщениями, отправляемыми в конфиденциальные почтовые ящики или списки рассылки. Например, вы можете принудительно модерировать почтовый ящик генерального директора, чтобы все сообщения перед доставкой проверялись его помощником. Объявленный 19 июля в уведомлении MC186219 Центра сообщений Office 365 (элемент дорожной карты 51786), Teams теперь поддерживает такие же возможности для бесед по каналам.Microsoft начала внедрять модерацию для Teams, и развертывание должно быть завершено в Office 365 по всему миру в августе.

Вариант использования для модерации

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

Модерация доступна как для публичных, так и для частных команд.

Добавление модерации на канал

Чтобы включить модерацию, выберите канал, которым вы хотите управлять, а затем Управление каналом в меню […].Затем вы можете включить или отключить модерацию для канала. Даже если модерация отключена, у вас все равно есть возможность ограничить создание новых тем (сообщений) любым членом команды или всеми, кроме гостей (рис. 1).

Рис. 1. Параметры модерации канала в Teams

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

Рисунок 2: Определение модераторов и других параметров модерации для канала

Наконец, вы можете контролировать, могут ли участники отвечать на сообщения и могут ли автоматизированные процессы (боты и соединители) отправлять сообщения на канал. Примером того, где вы могли бы включить эти типы сообщений, является подключение канала к чему-то вроде Visual Studio, чтобы получать обновления о сборках продуктов.

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

Добавить комментарий

Ваш адрес email не будет опубликован.