Анализ методов классификации текста на данных Youtube

Процесс

Классификация текста — это классическая проблема, на решение которой направлена ​​обработка естественного языка (NLP), которая относится к анализу содержимого необработанного текста и определению того, к какой категории он принадлежит. Это похоже на то, как кто-то читает книгу Робина Шармы и классифицирует ее как «мусор». Он имеет широкие области применения, такие как анализ настроений, маркировка тем, обнаружение спама и обнаружение намерений.
Сегодня мы возьмемся за довольно простую задачу по классификации видео по разным классам на основе его названия и описания с использованием различных методов (наивного Байеса, методов опорных векторов, Adaboost и LSTM) и анализа их производительности. Эти классы выбраны (но не ограничиваются):

  • Блоги о путешествиях
  • Наука и технология
  • Еда
  • Производство
  • История
  • Искусство и музыка

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

Сбор данных

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

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

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

Примечание. Вы можете свободно изучить технику, известную как Web Scraping, которая используется для извлечения данных с веб-сайтов. Для той же цели в Python есть красивая библиотека BeautifulSoup. Однако я обнаружил, что в случае сбора данных из результатов поиска Youtube он возвращает только 25 результатов для одного поискового запроса. Это было для меня препятствием, так как мне нужно много образцов, чтобы создать точную модель, и это просто не помогло.

Очистка данных и предварительная обработка

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

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

  1. Преобразование в нижний регистр: Этот шаг выполняется потому, что использование заглавных букв не влияет на семантическую важность слова. Например. «Путешествие» и «путешествие» следует рассматривать как одно и то же.
  2. Удаление числовых значений и знаков препинания: Числовые значения и специальные символы, используемые в знаках препинания ($,! и т. д.), не способствуют определению правильного класса.
  3. Удаление лишних пробелов: Чтобы каждое слово было разделено одним пробелом, иначе могут возникнуть проблемы во время токенизации.
  4. Токенизация в слова: Это относится к разбиению текстовой строки на список «токенов», где каждый токен представляет собой слово. Например, предложение «У меня огромные бицепсы» будет преобразовано в [‘I’, ‘have’, ‘huge’, ‘biceps’].
  5. Удаление неалфавитных слов и «Стоп-слов»: «Стоп-слова» относятся к таким словам, как and, the, is и т. д., которые важны при обучении построению предложений, но бесполезны для нас в прогнозной аналитике.
  6. Лемматизация: Лемматизация — довольно крутая техника, которая преобразует похожие слова в их базовое значение. Например, слова «летать» и «летать» будут преобразованы в их самое простое значение «летать».

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

Поскольку выходная переменная («Категория») также является категориальной по своей природе, нам нужно кодировать каждый класс как число. Это называется кодированием меток.
Наконец, давайте обратим внимание на основную часть информации для каждого образца — необработанные текстовые данные. Чтобы извлечь данные из текста в виде функций и представить их в числовом формате, очень распространенным подходом является векторизовать их. Библиотека Scikit-learn содержит «TF-IDFVectorizer» именно для этой цели. TF-IDF(Частота термина — обратная частота документа) вычисляет частоту каждого слова внутри и между несколькими документами, чтобы определить важность каждого слова.

Анализ данных и исследование функций

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

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

# USING TITLE FEATURES
# 'art and music':
Most correlated unigrams:
------------------------------
. paint
. official
. music
. art
. theatre
Most correlated bigrams:
------------------------------
. capitol theatre
. musical theatre
. work theatre
. official music
. music video
# 'food':
Most correlated unigrams:
------------------------------
. foods
. eat
. snack
. cook
. food
Most correlated bigrams:
------------------------------
. healthy snack
. snack amp
. taste test
. kid try
. street food
# 'history':
Most correlated unigrams:
------------------------------
. discoveries
. archaeological
. archaeology
. history
. anthropology
Most correlated bigrams:
------------------------------
. history channel
. rap battle
. epic rap
. battle history
. archaeological discoveries
# 'manufacturing':
Most correlated unigrams:
------------------------------
. business
. printer
. process
. print
. manufacture
Most correlated bigrams:
------------------------------
. manufacture plant
. lean manufacture
. additive manufacture
. manufacture business
. manufacture process
# 'science and technology':
Most correlated unigrams:
------------------------------
. compute
. computers
. science
. computer
. technology
Most correlated bigrams:
------------------------------
. science amp
. amp technology
. primitive technology
. computer science
. science technology
# 'travel':
Most correlated unigrams:
------------------------------
. blogger
. vlog
. travellers
. blog
. travel
Most correlated bigrams:
------------------------------
. viewfinder travel
. travel blogger
. tip travel
. travel vlog
. travel blog
# USING DESCRIPTION FEATURES
# 'art and music':
Most correlated unigrams:
------------------------------
. official
. paint
. music
. art
. theatre
Most correlated bigrams:
------------------------------
. capitol theatre
. click listen
. production connexion
. official music
. music video
# 'food':
Most correlated unigrams:
------------------------------
. foods
. eat
. snack
. cook
. food
Most correlated bigrams:
------------------------------
. special offer
. hiho special
. come play
. sponsor series
. street food
# 'history':
Most correlated unigrams:
------------------------------
. discoveries
. archaeological
. history
. archaeology
. anthropology
Most correlated bigrams:
------------------------------
. episode epic
. epic rap
. battle history
. rap battle
. archaeological discoveries
# 'manufacturing':
Most correlated unigrams:
------------------------------
. factory
. printer
. process
. print
. manufacture
Most correlated bigrams:
------------------------------
. process make
. lean manufacture
. additive manufacture
. manufacture business
. manufacture process
# 'science and technology':
Most correlated unigrams:
------------------------------
. quantum
. computers
. science
. computer
. technology
Most correlated bigrams:
------------------------------
. quantum computers
. primitive technology
. quantum compute
. computer science
. science technology
# 'travel':
Most correlated unigrams:
------------------------------
. vlog
. travellers
. trip
. blog
. travel
Most correlated bigrams:
------------------------------
. tip travel
. start travel
. expedia viewfinder
. travel blogger
. travel blog

Моделирование и обучение

Мы будем анализировать четыре модели:

  • Наивный байесовский классификатор
  • Машина опорных векторов
  • Адабуст классификатор
  • ЛСТМ

Набор данных разделен на наборы Train и Test с коэффициентом разделения 8:2. Характеристики для заголовка и описания вычисляются независимо, а затем объединяются для построения окончательной матрицы характеристик. Это используется для обучения классификаторов (кроме LSTM).

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

  1. Объедините заголовок и описание для каждого образца в одно предложение.
  2. Разбить комбинированное предложение на дополненные последовательности: Каждое предложение преобразуется в список токенов, каждому токену присваивается числовой идентификатор, а затем каждая последовательность делается одинаковой длины путем добавления более коротких последовательностей и усечения более длинных последовательностей.
  3. Горячее кодирование переменной «Категория»

Кривые обучения для LSTM приведены ниже:


Анализ производительности

Ниже приведены кривые Precision-Recall для всех различных классификаторов. Чтобы получить дополнительные показатели, ознакомьтесь с Полный код на Github.




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

LSTM> SVM> Наивный Байес> AdaBoost

LSTM продемонстрировали звездную производительность в нескольких задачах обработки естественного языка, включая эту. Наличие нескольких «ворот» в LSTM позволяет им изучать долгосрочные зависимости в последовательностях. 10 баллов Глубокому обучению!
SVM — это очень надежные классификаторы, которые изо всех сил пытаются найти взаимодействия между нашими извлеченными функциями, но изученные взаимодействия не соответствуют уровню LSTM. Наивный байесовский классификатор, с другой стороны, рассматривает функции как независимые, поэтому он работает немного хуже, чем SVM, поскольку не принимает во внимание взаимодействие между различными функциями.
Классификатор AdaBoost довольно чувствителен к выбору гиперпараметров, а поскольку я использовал модель по умолчанию, у него не самые оптимальные параметры, что может быть причиной низкой производительности.

Последние мысли

Я надеюсь, что это было так же информативно для вас, как и для меня. Полный код можно найти на моем Гитхаб.

Чао

Похожие записи

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *