Введение
Большая часть онлайн-комментариев, присутствующих в общедоступных доменах, обычно носит конструктивный характер, однако значительная их часть носит токсичный характер. Это сопряжено с огромными опасностями, поскольку онлайн-тексты с высокой степенью токсичности могут вызывать личные нападки, онлайн-домогательства и запугивание. Это спровоцировало исследовательское сообщество в последние несколько лет, поэтому было предпринято несколько попыток определить эффективную модель для прогнозирования токсичных комментариев в Интернете.
Мы разработали модели машинного обучения, чтобы классифицировать комментарии на онлайн-форумах как токсичные, серьезно-токсичные, непристойные, угрозы, оскорбления и ненависть к личности. В этой статье мы использовали набор данных Классификация токсичных комментариев.
Исследование данных
Набор данных содержит 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 с одним важным отличием: обновления скрытых слоев заменяются ячейками памяти. Это помогает им лучше находить и обнаруживать долгосрочные зависимости данных, которые необходимы для структур предложений.
- Сначала мы импортировали библиотеку Talos, так как она помогает нам в настройке гиперпараметров и оценке модели. С помощью функции «Сканировать» мы запустили GridSearchCV и нашли лучшие параметры, которые дадут нам максимальную точность.
- После этого мы определили необходимое количество слоев для модели 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]
Рекомендации
- Классификация токсичных комментариев по Аджаю Бьянджанкару
- Сравнение и выбор моделей классификации токсичных комментариев
- CNN для классификации токсичных комментариев
- Проблема классификации комментариев Kaggle Toxic
- НЛП: токенизация, стемминг, лемматизация и тегирование частей речи
- Понимание сетей LSTM
- Борьба с токсичностью с помощью Keras