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

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



Постановка задачи

Кому здесь нравится смотреть фильмы ?! А кто здесь проверял рейтинги IMDB перед просмотром любого фильма? Так что добавление обзоров на фильмы - обычная тенденция. Давайте создадим с нуля нейронную сеть, которая сможет определять настроения при просмотре фильма. Довольно круто, да !?

Часть кода довольно проста. Что более важно, так это понимание теории, лежащей в основе этого. Итак, начнем с нескольких теоретических концепций.

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

Итак, как обычно выглядит обзор? Длинная цепочка слов. Разобраться в этом может быть самой сложной задачей для наших компьютеров. Текст с параграфами может иметь столько многословия и шума, как знаки препинания, слова с маленькой заглавной буквы и т. Д., Что может не добавить большой ценности при поиске его тональности. Таким образом, очистка текста становится важной его частью.

Если вы программист и работали в поисковике - это вам что-то напоминает ?! Думай думай!! Да, да, файл сопоставления, который мы использовали для создания в эластичном поиске. Это именно то, что вам нужно.

Мы можем применить точно такие же концепции здесь, в тексте -

  • Токенизация. Это просто разбиение текста на отдельные слова (называемые токенами).
  • Нижний регистр ng: Слова означают одно и то же независимо от регистра. Преобразование всего в нижний регистр помогает добиться единообразия.
  • Удаление стоп-слов: Можете ли вы оценить настроение таких слов, как - the, a и т. д. Они просто создают шум, поэтому их следует удалить.
  • Создание: «Чтение» и «Чтение» означают одно и то же, верно? Итак, преобразование слова в его корневую форму для уменьшения размера нашего словаря.
  • Лемматизация. На самом деле это похоже на стемминг. Просто через определение слова можно найти слово, которого может даже не существовать в английском словаре. Поскольку лемматизация гарантирует, что это правильное слово, она может быть немного медленнее из-за дополнительного процесса поиска.

Векторизация текста

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

Векторизация текста - это процесс преобразования строки в целые числа для упрощения вычислений.

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

Предложение 1: Он мальчик.
Предложение 2: Она девочка.

Мешок слов

Это довольно просто, позвольте мне показать вам, как это сделать.

  • В приведенном выше примере наш словарь слов:
    Словарь: [«он», «есть», «а», «она», «мальчик», « девушка »]
  • Вышеупомянутый словарь используется как набор функций. Если слово присутствует в предложении, этот признак представлен как 1 else 0. Следовательно, векторизация:
    Предложение 1: [1, 1, 1, 0, 1, 0]
    Предложение 2: [0, 1, 1, 1, 0, 1]

Минусы. Проблема с этим подходом в том, что он придает всем словам одинаковую важность. Таким образом, is и girl будут иметь одинаковое значение. Кроме того, у него нет никакого смыслового понимания. Даже если и boy, и girl люди, мы потеряем эту информацию.

TF-IDF

Это в основном придает большее значение словам, которые встречаются редко, в нашем случае boy и girl.

  • Частота термина (TF) - дает представление о частоте встречаемости слова в документе.
    TF(word)= Frequency in a sentence/Total words in a sentence
  • Обратная частота документа (ID F) - помогает определить редкость слова.
    IDF(word) = log(Total Sentences/Sentences having word in it)
  • Возьмем пример:
    TF (девушка) = 1/4
    IDF (девушка) = log (2/1) = 0,3
    TF-IDF (девушка) = 1 / 4 * 0,3 = 0,075
  • Итак, окончательная векторизация:
    Предложение 1: [0, 0, 0, 0,075]
    Предложение 2: [0, 0, 0, 0,075]

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

Вложение слов

Это одно из самых замечательных достижений, которые сделала Semantic Web. Рассмотрим график и нанесем на него все вышеперечисленные слова в зависимости от их семантического значения. Что-то вроде этого изображения (скопировано из поиска Google).

Близость слов на этом графике говорит о том, насколько близки эти слова по своему значению.

Как это сделать? Создается двухмерная матрица, одна сторона которой представляет собой различные характеристики, такие как объект, человек, цвет и т. Д., И каждой характеристике присваивается соответствующее значение. Как будто каждое слово определяется этими чертами.

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

Это важная тема сама по себе. Обязательно расскажу об этом индивидуально позже. Но, если вы хотите вникнуть глубже, очень рекомендую - article1, article2, article3.

На этом завершается теоретическое понимание работы с данными обзоров IMDB. Ура! Часть кода будет рассмотрена в следующей статье. Следите за обновлениями и продолжайте учиться :)

Получите доступ к экспертному обзору - Подпишитесь на DDI Intel