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

Обновлено: 06.07.2024

Это подход к представлению слов и документов. Word Embedding или Word Vector — это ввод числового вектора, который представляет слово в пространстве более низкой размерности. Это позволяет словам с похожим значением иметь аналогичное представление. Они также могут приближать значение. Вектор слов с 50 значениями может представлять 50 уникальных признаков.

Особенности: все, что связывает слова друг с другом. Например: Возраст, Спорт, Фитнес, Работа и т. д. Каждый вектор слов имеет значения, соответствующие этим функциям.

  • Чтобы уменьшить размерность
  • Использование слова для предсказания окружающих его слов.
  • Должна быть зафиксирована межсловная семантика

Как используются вложения Word?

  • Они используются в качестве входных данных для моделей машинного обучения.
    Возьмите слова —-> Дайте их числовое представление —-> Используйте в обучении или выводе
  • Чтобы представить или визуализировать любые основные шаблоны использования в корпусе, который использовался для их обучения.

Реализации вложений Word:

Внедрение Word — это метод извлечения функций из текста, чтобы мы могли ввести эти функции в модель машинного обучения для работы с текстовыми данными. Они пытаются сохранить синтаксическую и семантическую информацию. Такие методы, как Bag of Words (BOW), CountVectorizer и TFIDF, основаны на количестве слов в предложении, но не сохраняют никакой синтаксической или семантической информации. В этих алгоритмах размер вектора равен количеству элементов в словаре. Мы можем получить разреженную матрицу, если большинство элементов равны нулю. Большие входные векторы будут означать огромное количество весов, что приведет к большим вычислениям, необходимым для обучения. Вложения Word решают эти проблемы.

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

В этой статье мы обсудим два разных подхода к внедрению Word:

1) Word2Vec:

В Word2Vec каждому слову назначается вектор. Мы начинаем либо со случайного вектора, либо со случайным вектором.

Вектор One-Hot: представление, в котором только один бит в векторе равен 1. Если в корпусе 500 слов, длина вектора будет равна 500. После присвоения векторов каждому слову мы берем размер окна и итерируем его. весь корпус. При этом используются два метода встраивания нейронов:

1.1) Непрерывная чаша слов (CBOW)

В этой модели мы пытаемся подогнать соседние слова в окне к центральному слову.


1.2) Пропустить грамм

В этой модели мы пытаемся приблизить центральное слово к соседним словам. Это полная противоположность модели CBOW. Показано, что этот метод дает более осмысленные вложения.


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

2) ПЕРЧАТКА:

Это еще один метод создания встраивания слов. В этом методе мы берем корпус и перебираем его и получаем совпадение каждого слова с другими словами в корпусе. Благодаря этому мы получаем матрицу совпадений. Слова, которые встречаются рядом друг с другом, получают значение 1, если они находятся на расстоянии одного слова, то 1/2, если на расстоянии двух слов, то 1/3 и так далее.

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

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

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

Внедрение слов — это тип представления слов, который позволяет словам со схожим значением иметь аналогичное представление.

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

В этом посте вы познакомитесь с подходом к встраиванию слов для представления текстовых данных.

После заполнения этого поста вы будете знать:

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

Начните свой проект с моей новой книги Deep Learning for Natural Language Processing, включающей пошаговые руководства и файлы исходного кода Python для всех примеров.

Приступим.

 Что такое встраивание слов для текста?» ширина=

Что такое встраивание текста в Word?
Фото: Хизер, некоторые права защищены.

Обзор

  1. Что такое встраивание слов?
  2. Алгоритмы встраивания слов
  3. Использование вложений Word

Нужна помощь с глубоким обучением для текстовых данных?

Пройдите мой бесплатный 7-дневный экспресс-курс по электронной почте прямо сейчас (с кодом).

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

Начните БЕСПЛАТНЫЙ экспресс-курс прямо сейчас

Что такое встраивание слов?

Внедрение слов — это изученное представление текста, в котором слова с одинаковым значением имеют похожее представление.

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

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

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

Ключом к подходу является идея использования плотного распределенного представления для каждого слова.

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

связать с каждым словом в словаре распределенный вектор признаков слова… Вектор признаков представляет различные аспекты слова: каждое слово связано с точкой в ​​векторном пространстве. Количество функций… намного меньше, чем размер словаря

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

За этим подходом стоит более глубокая лингвистическая теория, а именно "гипотеза распределения" Зеллига Харриса, которую можно резюмировать следующим образом: слова с похожим контекстом будут иметь схожие значения. Дополнительную информацию см. в статье Харриса 1956 года «Структура распределения».

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

Вы узнаете слово по компании, которую оно держит!

— стр. 11, «Краткий обзор лингвистической теории 1930–1955 гг.», в «Исследованиях в области лингвистического анализа 1930–1955 гг.», 1962 г.

Алгоритмы встраивания слов

Методы встраивания слов изучают векторное представление с действительным знаком для предопределенного словаря фиксированного размера из корпуса текста.

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

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

1. Встраивание слоя

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

Требуется, чтобы текст документа был очищен и подготовлен таким образом, чтобы каждое слово подвергалось горячему кодированию. Размер векторного пространства указывается как часть модели, например, 50, 100 или 300 измерений. Векторы инициализируются небольшими случайными числами. Слой встраивания используется во внешнем интерфейсе нейронной сети и подгоняется под наблюдением с помощью алгоритма обратного распространения ошибки.

… когда входные данные нейронной сети содержат символические категориальные признаки (например, признаки, которые принимают один из k различных символов, таких как слова из закрытого словаря), принято связывать каждое возможное значение признака (т. е. каждое слово в словаре) с d-мерным вектором для некоторого d. Затем эти векторы считаются параметрами модели и обучаются вместе с другими параметрами.

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

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

2. Word2Vec

Word2Vec – это статистический метод для эффективного обучения встраиванию отдельных слов из набора текстов.

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

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

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

  • Непрерывный мешок слов, или модель CBOW.
  • Непрерывная модель Skip-Gram.

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

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

Модели обучения Word2Vec

Обучающие модели Word2Vec
Взято из статьи «Эффективная оценка представлений слов в векторном пространстве», 2013 г.

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

Размер скользящего окна оказывает сильное влияние на итоговое сходство векторов. Большие окна, как правило, создают больше сходства по тематике […], в то время как окна меньшего размера, как правило, создают больше функционального и синтаксического сходства.

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

3. ПЕРЧАТКА

Алгоритм Global Vectors for Word Representation, или GloVe, представляет собой расширение метода word2vec для эффективного изучения векторов слов, разработанного Pennington et al. в Стэнфорде.

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

GloVe — это подход, объединяющий глобальную статистику методов матричной факторизации, таких как LSA, с локальным контекстным обучением в word2vec.

Вместо того, чтобы использовать окно для определения локального контекста, GloVe создает явную матрицу слова-контекста или совпадения слов, используя статистику по всему текстовому корпусу. Результатом является модель обучения, которая может привести к улучшению встраивания слов в целом.

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

Использование вложений Word

У вас есть несколько вариантов использования встраивания слов в вашем проекте обработки естественного языка.

В этом разделе описаны эти параметры.

1. Изучите встраивание

Вы можете изучить встраивание слов для решения своей задачи.

Это потребует большого объема текстовых данных, чтобы обеспечить изучение полезных вложений, таких как миллионы или миллиарды слов.

У вас есть два основных варианта обучения внедрению слов:

  1. Learn it Standalone, где модель обучается изучению внедрения, которое сохраняется и используется как часть другой модели для вашей задачи позже. Это хороший подход, если вы хотите использовать одно и то же встраивание в нескольких моделях.
  2. Обучение совместно, где встраивание изучается как часть большой модели для конкретной задачи. Это хороший подход, если вы собираетесь использовать встраивание только для одной задачи.

2. Повторное использование встраивания

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

Например, вложения слов word2vec и GloVe доступны для бесплатной загрузки.

Их можно использовать в своем проекте вместо обучения собственным встраиваниям с нуля.

У вас есть два основных варианта использования предварительно обученных вложений:

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

Какой вариант следует использовать?

Изучите различные варианты и, если возможно, проверьте, какой из них дает наилучшие результаты в решении вашей проблемы.

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

Учебники по встраиванию Word

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

Дополнительная литература

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

Статьи

Документы

Проекты

Книги

Обзор

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

В частности, вы узнали:

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

Есть вопросы?
Задавайте свои вопросы в комментариях ниже, и я постараюсь ответить.

Разрабатывайте модели глубокого обучения для текстовых данных уже сегодня!

Глубокое обучение для обработки естественного языка

Разработайте собственные текстовые модели за считанные минуты

<р>. всего несколькими строками кода Python

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

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

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

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

word embedding

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

Word2Vec — один из самых популярных методов обучения встраиванию слов с использованием неглубокой нейронной сети. Он был разработан Томасом Миколовым в 2013 году в Google.

Почему используются вложения Word?

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

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

word embedding

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

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

Что такое word2Vec?

Word2vec – это метод эффективного создания встраивания слов с помощью двухслойной нейронной сети. Он был разработан Томасом Миколовым и др. в Google в 2013 году в ответ на повышение эффективности обучения встраиванию на основе нейронных сетей, и с тех пор он стал стандартом де-факто для разработки предварительно обученного встраивания слов.

Входные данные word2vec — это корпус текстов, а его выходные данные — набор векторов, известных как векторы признаков, которые представляют слова в этом корпусе. Хотя Word2vec не является глубокой нейронной сетью, он преобразует текст в числовую форму, которую могут понять глубокие нейронные сети.

Целевая функция Word2Vec приводит к тому, что слова с похожим контекстом имеют похожие вложения. Таким образом, в этом векторном пространстве эти слова действительно близки. Математически косинус угла (Q) между такими векторами должен быть близок к 1, т.е. угол близок к 0.

word embedding

Word2vec — это не отдельный алгоритм, а комбинация двух методов — CBOW (непрерывный пакет слов) и модели Skip-gram. Оба они представляют собой неглубокие нейронные сети, которые сопоставляют слово (слова) с целевой переменной, которая также является словом (словами). Оба этих метода изучают веса, которые действуют как представления векторов слов.

Word2Vec

Модель непрерывного набора слов (CBOW)

CBOW предсказывает вероятность появления слова с учетом окружающих его слов. Мы можем рассматривать отдельное слово или группу слов. Но для простоты мы возьмем одно контекстное слово и попытаемся предсказать одно целевое слово.

Английский язык содержит почти 1,2 миллиона слов, что делает невозможным включение такого количества слов в наш пример.Поэтому я рассмотрю небольшой пример, в котором у нас есть только четыре слова, т. е. жить, дома, они и в. Для простоты будем считать, что корпус содержит только одно предложение: «Они живут дома».

Continuos Bag of words

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

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

word embedding

Модель пропуска грамм

Архитектура модели Skip-gram обычно пытается добиться противоположного тому, что делает модель CBOW. Он пытается предсказать слова исходного контекста (окружающие слова) по целевому слову (центральное слово)

Работа модели skip-gram очень похожа на CBOW, но есть только разница в архитектуре ее нейронной сети и способе генерации весовой матрицы, как показано на рисунке ниже:

skip-gram model

После получения матрицы весов шаги по встраиванию слов такие же, как и для CBOW.

Итак, какой из двух алгоритмов мы должны использовать для реализации word2vec? Оказывается, для больших корпусов с более высокими размерностями лучше использовать скип-грамм, но он медленно обучается. В то время как CBOW лучше подходит для небольших корпусов и быстрее обучается.

ПЕРЧАТКА

GloVe (глобальные векторы для представления слов) — это альтернативный метод создания вложений слов. Он основан на методах матричной факторизации на матрице контекста слова. Строится большая матрица информации о совпадениях, и вы подсчитываете каждое «слово» (строки) и то, как часто мы видим это слово в некотором «контексте» (столбцы) в большом корпусе. Обычно мы просматриваем наш корпус следующим образом: для каждого термина мы ищем контекстные термины в некоторой области, определяемой размером окна перед термином и размером окна после термина. Кроме того, мы придаем меньшее значение более отдаленным словам.

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

На практике мы используем как GloVe, так и Word2Vec для преобразования нашего текста во встраивание, и оба демонстрируют сопоставимые характеристики. Хотя в реальных приложениях мы обучаем нашу модель на тексте Википедии с размером окна около 5-10. Количество слов в корпусе составляет около 13 миллионов, поэтому для создания этих вложений требуется огромное количество времени и ресурсов. Чтобы избежать этого, мы можем использовать предварительно обученные векторы слов, которые уже обучены, и мы можем легко их использовать. Вот ссылки для загрузки предварительно обученного Word2Vec или GloVe.

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

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

Нирадж Агарвал, основатель Algoscale.


< /p>

«Вы узнаете слово по компании, с которой оно связано!» — Джон Руперт Ферт

Было бы невероятно, если бы компьютеры могли начать понимать Шекспира? Или писать фантастику, как Джоан Роулинг? Это было невообразимо несколько лет назад. Недавние достижения в области обработки естественного языка (NLP) и генерации естественного языка (NLG) резко повысили способность компьютеров лучше понимать текстовый контент.

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

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

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

Давайте рассмотрим некоторые из наиболее многообещающих методов встраивания слов в НЛП.

1. TF-IDF — Термин Частота Обратной Частоты Документа

TF-IDF – это алгоритм машинного обучения (ML), основанный на статистическом показателе релевантности слов в тексте. Текст может быть в виде документа или различных документов (корпусов). Это комбинация двух показателей: частоты терминов (TF) и обратной частоты документов (IDF).

Оценка TF основана на частоте слов в документе. Слова подсчитываются по количеству их вхождений в документы. TF рассчитывается путем деления количества вхождений слова (i) на общее количество (N) слов в документе (j).

TF (i) = log (частота (i,j)) / log (N (j))

Оценка IDF рассчитывает редкость слов. Это важно, потому что TF придает больший вес словам, которые встречаются чаще. Однако слова, которые редко используются в корпусе, могут содержать важную информацию. IDF фиксирует эту информацию. Его можно рассчитать, разделив общее количество (N) документов (d) на количество документов, содержащих слово (i).

IDF (i) = log (N (d) / частота (d, i))

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

Алгоритм TF-IDF используется для решения более простых задач ML и NLP. Его лучше использовать для поиска информации, извлечения ключевых слов, удаления стоп-слов (таких как «a», «the», «are», «is») и базового анализа текста. Он не может эффективно фиксировать семантическое значение слов в последовательности.

2. Word2Vec — Сбор семантической информации

Разработанный Томасом Миколовым и другими исследователями Google в 2013 году, Word2Vec представляет собой метод встраивания слов для решения сложных задач NLP. Он может выполнять итерацию по большому объему текста, чтобы изучать ассоциации или зависимости между словами.

Word2Vec находит сходство между словами, используя метрику косинусного сходства. Если угол косинуса равен 1, это означает, что слова перекрываются. Если угол косинуса равен 90, это означает, что слова независимы или не имеют контекстуального сходства. Он присваивает одинаковые векторные представления похожим словам.

Word2Vec предлагает два варианта на основе нейронных сетей: Continuous Bag of Words (CBOW) и Skip-gram. В CBOW модель нейронной сети принимает в качестве входных данных различные слова и предсказывает целевое слово, тесно связанное с контекстом входных слов. С другой стороны, архитектура Skip-gram принимает в качестве входных данных одно слово и предсказывает тесно связанные с ним контекстные слова.

CBOW работает быстро и находит более точные числовые представления для часто используемых слов, в то время как Skip Gram может эффективно представлять редкие слова. Модели Word2Vec хорошо фиксируют семантические отношения между словами. Например, отношения между страной и ее столицей, например, Париж — столица Франции, а Берлин — столица Германии. Он лучше всего подходит для выполнения семантического анализа, который применяется в системах рекомендаций и поиске знаний.


Архитектуры CBOW и Skip-gram. Источник изображения: документ Word2Vec.

3. GloVe — глобальные векторы для представления слов

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

Word2Vec фиксирует только локальный контекст слов. Во время обучения он учитывает только соседние слова, чтобы уловить контекст. GloVe рассматривает весь корпус и создает большую матрицу, которая может зафиксировать совпадение слов в корпусе.

GloVe сочетает в себе преимущества методов векторного обучения с двумя словами: матричной факторизации, такой как латентный семантический анализ (LSA), и метода окна локального контекста, такого как Skip-gram. Метод GloVe имеет более простую функцию стоимости или ошибки методом наименьших квадратов, которая снижает вычислительные затраты на обучение модели. Полученные вложения слов отличаются и улучшаются.

GloVe значительно лучше справляется с аналогией слов и задачами распознавания именованных сущностей.В одних задачах он лучше Word2Vec, а в других конкурирует. Однако оба метода хороши для сбора семантической информации в корпусе.


Векторы слов GloVe, содержащие слова с похожей семантикой. Источник изображения: Stanford GloVe.

4. BERT — представления двунаправленного кодировщика от трансформаторов

Представленный Google в 2019 году, BERT принадлежит к классу языковых алгоритмов на основе NLP, известных как преобразователи. BERT — это массивная предварительно обученная глубоко двунаправленная модель преобразователя на основе кодировщика, которая поставляется в двух вариантах. BERT-Base имеет 110 миллионов параметров, а BERT-Large — 340 миллионов параметров.

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

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

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


Двунаправленная архитектура BERT. Источник изображения: блог Google AI.

Заключительные мысли

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

В этой статье мы дали общий обзор различных алгоритмов встраивания слов. Давайте суммируем их ниже:

Техника встраивания слов Основные характеристики Случаи использования
TF-IDF Статистический метод для захвата релевантность слов по отношению к корпусу текста. Он не фиксирует семантические ассоциации слов. Подходит для поиска информации и извлечения ключевых слов из документов.
Word2Vec Архитектуры CBOW и Skip-gram на основе нейронных сетей лучше собирают семантическую информацию. Полезно в задачах семантического анализа.
GloVe Матричная факторизация на основе глобального совпадения слов. Он устраняет ограничения локального контекста Word2Vec. Улучшает аналогию слов и задачи распознавания именованных объектов. Сопоставимые результаты с Word2Vec в некоторых задачах семантического анализа и лучшие в других.
BERT Внимание на основе преобразования механизм сбора высококачественной контекстной информации. Языковой перевод, система ответов на вопросы. Развернут в поисковой системе Google для понимания поисковых запросов.

Ссылки

Биография: Нирадж является основателем Algoscale, консалтинговой компании, занимающейся обработкой данных, прикладным искусственным интеллектом, наукой о данных и разработкой продуктов. Он имеет более чем 9-летний опыт работы в этой области и помог широкому кругу организаций, от стартапов до компаний из списка Fortune 100, получать и хранить огромные объемы необработанных данных, чтобы преобразовывать их в действенные идеи для лучшего принятия решений и ускорения бизнеса. значение.

Этот учебник содержит введение во встраивание слов. Вы будете обучать свои собственные вложения слов, используя простую модель Keras для решения суда о настроении, а затем визуализировать их в ожидании встраивания (показанном на изображении ниже).

Скриншот встроенного прототипа< бр />

Представление текста в виде чисел

Горячие кодировки

Схема однократных кодировок

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

Кодируйте каждое слово с номером

Однако в этом резерве есть два резерва:

Целочисленное кодирование является официальным (оно не фиксирует никаких отношений между высказываниями).

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

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

Схема заложения

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

Напристой

Загрузите набор данных IMDb

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

Загрузите набор данных с помощью файловой утилиты Keras и просмотрите каталоги.

Загляните в каталог train/ . В нем есть папки с обзорами фильмов, помеченными как положительные и отрицательные, соответственно. Вы будете использовать обзоры из папок pos и neg для обучения моделей бинарной защиты.

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

Затем создайте tf.data.Dataset , используя tf.keras.utils.text_dataset_from_directory . Подробнее об этой статистике можно использовать для обнаружения в этом туториале по задержанию текста .

Используйте train для создания каталогов данных и проверки с разделением 20% для проверки.

Взгляните на несколько обзоров фильмов и их метки (1: положительный, 0: отрицательный) из набора данных поезда.

Настроить набор данных для производительности

Это два варианта использования, которые вы должны использовать при получении данных, чтобы убедиться, что ввод-вывод не блокируется.

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

.prefetch() перекрывает предварительную обработку данных и выполнение модели во время обучения.

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

Использование объемного дозирования

Keras получает использование встраивания слов. Просмотреть на слой Встраивание .

Слой встраивания можно понимать как поиск вируса, который содержит выявленные индексы (выявления вируса отравления) в плотных вирусах (их вложения). Размерность (или ширина) встраивания — это параметр, с которым вы можете поэкспериментировать, чтобы увидеть, что хорошо подходит для вашей задачи, почти так же, как вы экспериментировали с быстрыми нейронами в плотной структуре.

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

Если вы представляете целое число в целом, результат заменяется каждым числом, вектором в таблице оборота:

Для задач с текстом или последовательностью слоя Он может вмешаться в результат поиска. Вы можете передать в слое встраивания пакеты с формами (32, 10) (пакет выше 32 последовательностей длинной 10) или (64, 15) (пакет из 64 последовательностей длинной 15).

Возвращенный тензор имеет на одну ось больше, чем входной, происходит встраивание выровнены по новой последней оси. Передайте ему входную партию (2, 3) на выход (2, 3, N)

Прием пакета последовательностей в качестве входных данных восстанавливает трехмерный тензор с плавающей запятой формы (выборки, длина_последовательности, размерность_встраивания) .Для преобразования этой последовательности в фиксированное представление существует стандартное подключение. Вы можете использовать слой RNN, Внимание или объединение, чем прежде передается его на плотный слой. В этом случае используется объединение в пул, поскольку оно является наиболее тяжелым. Классификация текста с учебным пособием по RNN — хороший следующий шаг.

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

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

Создание модели задержания

    Слой TextVectorization преобразует строки в словарные индексы. Вы уже инициализировали vectorize_layer как слой TextVectorization и создали словарь, вызвав адаптировать для text_ds . Теперь vectorize_layer можно использовать в качестве первого слоя сквозной модели фильтрации, передавая преобразованные строки в слой Embedding.

Слой Встраивание берет словарь в целочисленной кодировке и ищет вектор поглощения для каждого индекса слова. Эти события происходят по мере моделей обучения. Векторы добавления измерения к выходному массиву. Результирующие размеры: (batch, sequence, embedding) .

Слой GlobalAveragePooling1D возвращает выходной вектор фиксированной зависимости для каждого примера пути усреднения по измерению последовательности. Это позволяет выбирать способ введения веса.

Выход вектора фиксированного обнаружения через полносвязный (плотный) слой с 16 скрытыми единицами.

Последний слой плотный, связанный с одним выходным узлом.

Скомпилируйте и обучите модель

Вы будете использовать TensorBoard для ранней метрики, включая уменьшение и точность. настройка tf.keras.callbacks.TensorBoard .

Скомпилируйте и обучите модель с помощью оптимизатора Adam и потерь BinaryCrossentropy .

При таком подходе модель переоснащается, поскольку точность проверки выше 78%.

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

Визуализируйте метрики моделей в TensorBoard.

embeddings_classifier_accuracy.jpg

Получить обучающие вложения слов и сохранить их на диске

Затем извлеките вложения слов, исследуйте время обучения. Вложения — это вес слоя Встраивание в модели. Матрица весов имеет форму (vocab_size, embedding_dimension) .

Получите вес из моделей, используя get_layer() и get_weights() . Функция get_vocabulary() предоставляет словарь для создания файла метаданных с токеном на файле.

Запишите вес на диск. Чтобы использовать Embedding Projector, вы загрузите два файла в формате, разделенном табуляцией: файл векторов (содержащий встраивание) и файл метаданных (содержащий слова).

Если вы запускаете это руководство в Colaboratory , вы можете использовать следующий фрагмент кода, чтобы загрузить эти файлы на свой локальный компьютер (или использовать файлы, Вид -> Содержание -> Браузер файлов ).< /p>

Визуализируйте вложения

Чтобы визуализировать встраивания, загрузите их на проектор встраивания.

Открытый встроенный проект (он также может работать в случае экземпляра TensorBoard).

Загрузите два файла, которые выражаются выше: vecs.tsv и meta.tsv .

Следующие шаги

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

Чтобы обучить встраивания слов с помощью алгоритма Word2Vec, попробуйте учебник Word2Vec .

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

Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

Читайте также: