Введение

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

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

Исследование данных

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

Распределение комментариев по шести меткам показано ниже.

Тестовые данные содержат 153164 токсичных комментария и их идентификатор.

Предварительная обработка данных

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

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

  • Удаление символов между текстом.
  • Удаление повторяющихся символов.
  • Преобразование данных в нижний регистр.
  • Удаление пунктуации.
  • Удаление ненужных пробелов между словами.
  • Удаление «\n».
  • Удаление неанглийских символов.

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

Удаление стоп-слов.Стоп-слова — это самые распространенные слова в любом естественном языке. В целях анализа текстовых данных и построения моделей НЛП эти стоп-слова могут не придавать большого значения смыслу документа. Следовательно, мы удалили стоп-слова с помощью библиотеки «spacy». Он имеет список общих стоп-слов «STOP_WORDS», которые можно использовать для удаления стоп-слов из любых текстовых данных. В дополнение к этому списку мы также случайным образом читаем комментарии из нашего набора данных и удаляем стоп-слова, уникальные для наших данных.

Токенизация, индексирование и представление индекса. Мы использовали токенизацию и индексирование для преобразования наших данных в машиночитаемую форму. При токенизации мы разбили предложения на список уникальных слов. Например, предложение «Это было глупое видео» было преобразовано в [«Это», «было», «а», «глупое», «видео»]. При индексировании мы добавили все слова в словарную структуру и присвоили каждому из них уникальный индекс. Например, {1: «Это», 2: «было», 3: «а», 4: «глупо», 5: «видео»}.

Используя оба вышеупомянутых метода, любое предложение может быть представлено в виде списка целочисленных индексов, таких как [1, 2, 3, 4, 5]. Для реализации вышеизложенного мы использовали библиотеку «Keras» и различные функции, предусмотренные в ней.

Заполнение: поскольку мы не можем передавать в нашу модель векторы несовместимых размеров, мы использовали заполнение, чтобы сделать более короткие предложения такими же длинными, как и другие, заполнив пробел нулями. Мы снова использовали для этого библиотеку «keras» и зафиксировали длину предложения на уровне 200.

Создание модели

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

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

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

CNN с встраиванием слов.Используемая модель CNN состоит из одного одномерного сверточного слоя по объединенным вложениям слов для каждого входного комментария. Сверточный слой имеет 128 фильтров с размером ядра 5, так что каждая свертка будет рассматривать окно из 5 вложений слов. Следующий слой — это полносвязный слой с 50 единицами, за которым следует выходной слой.

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

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

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

Логистическая регрессия — это метод классификации, используемый в машинном обучении. Лучше всего это работает, когда нам нужно выполнить бинарную или многоуровневую классификацию. В этой задаче у нас есть данные 6 классов, которые необходимо классифицировать, и в этом случае отлично работает алгоритм обучения с учителем, такой как логистическая регрессия. Цель использования логистической регрессии состоит в том, чтобы найти наиболее подходящую модель для описания взаимосвязи между зависимой и независимой переменной. В приведенных выше наборах данных некоторые ярлыки, такие как «токсичный» и «тяжелый_токсичный», можно рассматривать как зависимые переменные, тогда как такие переменные, как «угроза» и «непристойный», являются независимыми переменными. Логистическая регрессия работает лучше всего, когда имеется более 1 независимой переменной и несколько зависимых переменных, как в этой постановке задачи.

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

После этого мы использовали TF-IDF для векторизации слова из набора данных и подачи полученной матрицы TF-IDF в алгоритм логистической регрессии, реализованный в модуле sklearn.

TF-IDF является сокращением от термина частота документа, обратная частоте. Это похоже на метод, который помогает нам узнать, насколько важно слово для документа в корпусе. Значение tf–idf увеличивается пропорционально количеству раз, которое слово появляется в документе, и компенсируется количеством документов в корпусе, содержащих это слово, что помогает скорректировать тот факт, что некоторые слова встречаются чаще в документе. общий.

Выступления моделей

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

Выводы

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

Авторы

Аджай Кумар Рахул: [email protected]

Абхишек Гарг: [email protected]

Пармджит Сингх: [email protected]

Шубхам Кумар Джа: [email protected]

Рекомендации