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

Одно из решений этой проблемы было предложено компанией Jigsaw и командой Google Counter Abuse Technology, которые разработали Perspective API: бесплатный API, использующий машинное обучение для выявления ненормативной лексики на английском, испанском, французском и немецком языках. , португальский, итальянский и русский. Ядовитый язык определяется здесь как грубый, неуважительный или необоснованный комментарий, который может заставить кого-то покинуть обсуждение.

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

Perspective API был реализован несколькими крупными издателями и платформами, такими как Reddit, The New York Times и DISQUS, что помогает им модерировать онлайн-комментарии. В n8n мы общаемся с более чем 16 000 участников нашего сообщества на Discourse forum, в Discord, Twitter и даже через Telegram для испаноговорящих. Мы ценим открытое, инклюзивное и уважительное общение и хотим, чтобы каждый получил положительный опыт в сообществе n8n — и за его пределами.

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

Рабочий процесс для обнаружения ненормативной лексики в сообщениях Telegram

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

  • Узел триггера Telegram запускает рабочий процесс при отправке нового сообщения в чат Telegram.
  • Узел Google Perspective анализирует текст сообщения и возвращает значение вероятности от 0 до 1, указывающее, насколько вероятно, что содержимое является опасным.
  • Узел IF фильтрует сообщения со значением вероятности токсичности выше 0,7.
  • Узел Telegram отправляет сообщение в чат с текстом «Я не терплю ненормативную лексику», если значение вероятности выше 0,7.
  • Узел NoOp не предпринимает никаких действий, если значение вероятности ниже 0,7. Этот узел является необязательным и служит только для того, чтобы показать, что рабочий процесс может быть расширен в этом направлении.

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

1. Получайте новые сообщения от Telegram

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

Затем откройте узел Триггер Telegram и добавьте свое Имя учетных данных и токен доступа в Telegram API.

В поле Обновления выберите: message, edited_message, channel_post, и edited_channel_post. Эти параметры обновления запускают рабочий процесс при публикации текстового сообщения.

Чтобы проверить, хорошо ли работает бот, запустите узел Trigger и отправьте сообщение в канал Telegram. Мы протестировали этот рабочий процесс с сообщением «Ты глупый бот! Я ненавижу тебя!" (мы клянемся, что это только для целей тестирования, мы на самом деле думаем, что боты довольно крутые и умные). Узел Триггер Telegram должен вывести следующий результат:

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

На втором этапе входящее сообщение от Telegram должно быть проанализировано с помощью Perspective. В узле Google Perspective настройте следующие параметры:

  • Операция: анализ содержимогоЭта операция анализирует входящее текстовое сообщение.
  • Текст: {{$json["message"]["text"]}}Это выражение выбирает входящее сообщение Telegram для анализа.

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

  • Имя атрибута: Ненормативная лексика
  • Порог оценки: 0,00. Это значение задает оценку, выше которой возвращаются результаты. Оценка представляет собой значение от 0 до 1, представляющее вероятность того, что текст является токсичным; он не отражает интенсивности (насколько ядовит текст). Например, если вы установите для Порог оценки значение 0,5, будут возвращены только сообщения, которые с вероятностью 50 % являются токсичными. Если значение не установлено, при нулевом значении возвращаются все оценки. Подробнее о том, что означают баллы, вы можете прочитать в этой статье.

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

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

3. Фильтруйте токсичные сообщения

На третьем этапе необходимо отфильтровать токсичные сообщения с вероятностью выше 0,7. Для этого вам необходимо настроить IF-узел со следующими параметрами:

  • Значение 1:{{$json["attributeScores"]["PROFANITY"]["summaryScore"]["value"]}}Это выражение выбирает значение оценки соответствующего атрибута.
  • Операция: Увеличить
  • Значение 2: 0,7. Это значение, с которым мы хотим сравнить оценку.

Если вы сейчас выполните узел IF, он выведет следующие результаты:

Сообщение «Ты тупой бот! Я ненавижу тебя!" набрал 0,92 балла за ненормативную лексику и 0,62 балла за нападение на личность, что означает, что он имеет совершенно ядовитые формулировки по этим атрибутам.

4. Отправить предупреждающее сообщение в Telegram

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

  • Ресурс: сообщение
  • Операция: отправить сообщение
  • Идентификатор чата: {{$node["Telegram Trigger"].json["message"]["chat"]["id"]}}
  • Текст: я не терплю ненормативной лексики!
  • Добавить поле › Ответить на идентификатор сообщения: {{$node["Триггер Telegram"].json["message"]["message_id"]}}

Теперь хулигана будут публично выговаривать в Telegram (еще раз извини, бот, ты реально крут):

Что дальше?

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

Например, вы можете настроить этот рабочий процесс и подключить узел Google Perspective к Discord, Discourse или DISQUS для обнаружения ненормативной лексики в онлайн-сообществах и форумах или даже к Gmail для фильтрации токсичных электронных писем. Вы можете предпринимать различные действия с токсичными сообщениями, например пересылать их модератору, сохранять их в базе данных, помечать или блокировать пользователя в зависимости от его оценки сообщения.

Вот что вы можете сделать дальше: