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

Цель этой статьи — понять, как использовать встраивание слов при создании классификатора текста. В этой статье используются две основные технологии: Python и Keras API. Начнем.

Что такое встраивание Word и его важность в мире НЛП

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

Различные типы вложений слов

  • Частотное встраивание слов

1. Горячее кодирование (OHE):

Это векторизованное представление в виде 1 и 0. В этой технике мы представляем слово в словаре как уникальный токен со значением 1 и остальным как 0. Давайте рассмотрим следующее предложение: «Я специалист по данным и пишу блоги. по НЛП».

Слово в этом предложении может быть «НЛП», «Данные», «Ученый», «писать», «блоги» и т. д. [после удаления имен собственных и стоп-слов]

Но словарь или словарь представляет: ['я', 'есть', 'а', 'данные', 'ученый', 'и', 'писать', 'блоги', 'на', 'НЛП']

Следовательно, векторное представление в соответствии с приведенным выше словарем имеет вид

[0,0,0,1,0,0,0,0,0,0]

[0,0,0,0,1,0,0,0,0,0]

[0,0,0,0,0,0,1,0,0,0]

[0,0,0,0,0,0,0,1,0,0]

[0,0,0,0,0,0,0,0,0,1]

Недостатки:

· Более высокая размерность и разреженная матрица. Данные в больших размерах требуют экспоненциально большого объема памяти. Если у нас есть размер словаря, скажем, 50 000, каждое слово представлено 49 999 нулями и одной единицей. Итак, нам нужно 50 000 в квадрате = 2,5 миллиарда единиц пространства памяти, что неэффективно с вычислительной точки зрения.

· Следующая проблема с One Hot Encoding заключается в том, что поскольку каждое слово содержит одну единицу и N нулей (где N = количество измерений), векторы не могут предсказать семантические отношения или сходство между этими словами. Так, например, если в нашем словарном запасе есть такие слова, как банан, яблоко, ананас и арбуз, мы можем легко составить ментальную карту, чтобы они относились к категории фруктов. Но с однократными векторами все слова находятся на одинаковом расстоянии друг от друга. Следовательно, не давая много семантической информации.

1. Векторизатор счета

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

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

Пример использования векторизации счета для получения векторов:

Недостатки:

· Невозможно зафиксировать семантическую информацию/отношения между словами.

· Очень редкие показатели

1. Векторизация N-грамм

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

N-грамма очень похожа на векторизатор счета и является частным случаем N-граммы, где n=1. Рассматривает последовательность n слов в тексте; где n равно (1, 2, 3…)

e.g:

«Я изучаю НЛП» состоит из четырех слов и n = 4.

если n=2, т.е. биграмма, то столбцы будут такими — ["Я занимаюсь", "изучаю", "изучаю НЛП"]

если n=3, т.е. триграмма, то столбцы будут — ["я изучаю", "изучаю НЛП"]

если n=4, т. е. четыре грамма, то столбец будет таким: [‘«Я изучаю НЛП»]

Как выбрать n значений:

Вероятности N-грамм играют важную роль при выборе значений N.

Рассмотрим следующие предложения в корпусе:

1. Мне нравится работать в Apple Inc.

2. Яблоко — мой любимый фрукт.

3. Доля Apple Inc сейчас высока.

4. Мне очень нравится статья, опубликованная Apple Inc.

Теперь, например, после обучения модели с использованием n грамм, если мы попытаемся написать новое предложение, например: «Штаб-квартира Apple inc находится в США, Калифорния». В этом случае, если мы будем следовать подходу биграммы, как только мы напишем до Apple, нам будет предложено написать «Inc» после Apple. Давайте посмотрим, как вероятность работает за этим подходом.

count(Apple Inc) / count(Apple)
= 3 / 4
= 0,7

Таким образом, будет более высокая вероятность выбора Inc после появления Apple.

Использование n gram вероятности появления определенного слова с определенной последовательностью может улучшить предсказания систем автодополнения.

Недостатки:

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

1. Векторизация TF-IDF

Как обсуждалось в предыдущем подходе, таком как CV/BOW, который обрабатывает все слова одинаково. В результате он не может различать очень распространенные слова или редкие слова. Итак, чтобы решить эту проблему, на сцену выходит TF-IDF.

· Периодичность (TF)

Частота термина обозначает частоту слова в документе.

Рассмотрим простой пример. Здесь мы рассматриваем корпус из нескольких документов:

D1 = «Я специалист по НЛП, областью моих интересов является НЛП»

D2 = «НЛП — это область, которая фокусируется на том, чтобы сделать естественный человеческий язык пригодным для использования компьютерными программами».

D3 = «Python — хороший инструмент для НЛП»

D4 = «Анализ текста — перспективная область»

tf («НЛП») = 2 / 9 = 0,22

Обратите внимание, что в документе D1 «Я специалист по НЛП и прочитал много статей по НЛП» всего 9 слов после игнорирования «а» и «из».

· Обратная частота документа (IDF)

Он измеряет, насколько часто определенное слово встречается во всех документах корпуса.

Рассматривая тот же пример:

tf («НЛП») = log (4/3) = 0,12

tf*idf = 0,22*0,12 = 0,0264

Теперь видно, что во всех вышеприведенных 4 документах «is» — это IDF для этого:

idf('есть') = log (4/4) = log 1 = 0

Таким образом, общие слова будут иметь меньшее значение.

давайте посмотрим на реализацию Python:

Недостатки:

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

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