Применение основных техник НЛП для классификации текста твитов: настоящие или фальшивые?

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

Это простой и быстрый в создании классификатор текста, основанный на традиционном подходе к проблемам НЛП. Следующие шаги:

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

Сообщение в блоге и код доступны в блоге моих страниц fastai.

описание проблемы

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

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

Это соревнование Kaggle для начала работы в НЛП.

Каждый образец в поезде и тестовом наборе содержит следующую информацию:

  • Текст твита
  • Ключевое слово из этого твита (хотя оно может быть пустым!)
  • Место, откуда был отправлен твит (также может быть пустым)

Вы предсказываете, будет ли данный твит настоящим бедствием. Если да, то прогнозируйте 1. Если нет, то прогнозируйте 0.

Код доступен в записной книжке в моей учетной записи github.

Подготовка данных

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

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

Токенизация

Токенизация - распространенная задача в обработке естественного языка. Это фундаментальный шаг как в традиционных методах, таких как Count Vectorizer, так и в архитектурах на основе глубокого обучения, таких как RNN или Transformers.

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

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

[1] Стэндфордская группа НЛП, https://nlp.stanford.edu/IR-book/html/htmledition/tokenization-1.html

Токенизация - важнейший шаг при моделировании текстовых данных. Токенизация выполняется в корпусе для получения токенов. Следующие токены затем используются для подготовки словарного запаса. Словарь - это набор уникальных токенов в корпусе. Помните, что словарь можно составить, рассматривая каждый уникальный токен в корпусе или рассматривая K наиболее часто встречающихся слов . [2] Что такое токенизация в НЛП? Вот все, что вам нужно знать, Аравинд Пай, https://www.analyticsvidhya.com/blog/2020/05/what-is-tokenization-nlp/

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

Создание признаков или оцифровка текста: Матрица терминологического документа

”Матрица« документ-термин »или матрица« термин-документ »- это математическая матрица, которая описывает частоту появления терминов в коллекции документов. В матрице «документ-термин» строки соответствуют документам в коллекции, а столбцы - терминам. Существуют различные схемы определения значения, которое должна принимать каждая запись в матрице. Одна из таких схем - tf-idf. Они полезны в области обработки естественного языка ».

Мы можем рассматривать матрицу терминов документа (DTM) как реализацию концепции пакета слов. Матрица Term Document Matrix отслеживает частоту использования каждого термина в каждом документе. Вы начинаете с представления документов «Пакет слов», а затем для каждого документа отслеживаете, сколько раз существует термин. Матрица терминов документа может стать очень большой разреженной матрицей (больше нулей, чем значений) в зависимости от количества документов в корпусе и количества терминов в каждом документе.

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

Граф Векторизатор

Пришло время преобразовать набор текстовых документов (наши твиты) в матрицу количества токенов / слов (DTM). Если вы не предоставляете априорный словарь и не используете анализатор, который выполняет какой-либо выбор функций, то количество функций будет равно размеру словаря, найденному в результате анализа данных.

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

TF-IDF

Другой способ создания DTM - это TF-IDF.

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

Код доступен в записной книжке в моей учетной записи github.

Наивный байесовский

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

«Полиномиальный наивный байесовский классификатор подходит для классификации с дискретными функциями (например, подсчетом слов для классификации текста). Полиномиальное распределение обычно требует целочисленного подсчета признаков. Однако на практике дробные подсчеты, такие как tf-idf, также могут работать »., извлечено из« Vectorization, Multinomial Naive Bayes Classifier and Evaluation », автор Ritchie Ng.

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

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

Машины опорных векторов

«Цель алгоритма машины опорных векторов - найти гиперплоскость в N-мерном пространстве (N - количество функций), которая четко классифицирует точки данных.»,

- « Введение в алгоритмы машинного обучения опорных векторов» Рохита Ганди.

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

Классификатор XGBoost

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

Код доступен в записной книжке в моей учетной записи github.

Оценка и метрики

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

Теперь наши классификаторы достигают точности на тестовом наборе 81% и показателя F1 0,75. На следующем рисунке мы построим ROC и матрицу путаницы.

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

Код доступен в записной книжке в моей учетной записи github.