что представляет собой вектор слова в word2vec?

word2vec – это инструмент Google с открытым исходным кодом:

  • Для каждого слова он предоставляет вектор значений с плавающей запятой, что именно они представляют?

  • Существует также статья о векторе абзаца. Может ли кто-нибудь объяснить, как они используют word2vec в порядке чтобы получить вектор фиксированной длины для абзаца.


person user168983    schedule 20.11.2014    source источник
comment
Хороший ответ на ваш вопрос требует объяснения нейронных сетей и выходит за рамки формата вопросов и ответов SO.   -  person Chthonic Project    schedule 21.11.2014
comment
Я считаю этот вопрос очень полезным и актуальным для распределенных представлений предложений и документов, как в документе, цитируемом спрашивающим.   -  person user305883    schedule 20.01.2017


Ответы (2)


TLDR: Word2Vec строит проекции слов (встраивания) в скрытом пространстве N измерений, где N – размер полученных векторов слов. . Значения с плавающей запятой представляют собой координаты слов в этом N-мерном пространстве.

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

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

Алгоритмы Word2Vec делают это:

Представьте, что у вас есть предложение:

Собака должна пойти ___ на прогулку в парк.

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

Это своего рода «интуиция» за word2vec. Для более теоретического объяснения того, что происходит, я бы предложил прочитать:

Для векторов абзацев идея та же, что и в w2v. Каждый абзац может быть представлен своими словами. В статье представлены две модели.

  1. В способе "Bag of Word" (модель pv-dbow), где один вектор абзаца фиксированной длины используется для предсказания его слов.
  2. Добавляя маркер абзаца фиксированной длины в контексты слов (модель pv-dm). За счет обратного распространения градиента они получают «ощущение» того, чего не хватает, приближая абзац с одними и теми же словами/темой «отсутствует».

Отрывки из статьи:

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

Для полного понимания того, как строятся эти векторы, вам нужно узнать, как строятся нейронные сети и как работает алгоритм обратного распространения. (я предлагаю начать с этого видео и курса Эндрю Н.Г. на Coursera)

Примечание: Softmax — это просто причудливый способ классификации, каждое слово в алгоритмах w2v рассматривается как класс. Иерархическая softmax/отрицательная выборка — это уловки для ускорения softmax и обработки большого количества классов.

person Cedias    schedule 02.12.2014

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

Можно легко придумать ввод фиксированного размера для любого слова — скажем, M слов слева и N слов справа от него. Как это сделать для предложения или абзаца, размеры которых различаются, не так очевидно, или, по крайней мере, сначала не было. Не читая сначала статью, я предполагаю, что можно объединить вложение фиксированной ширины всех слов в предложении/абзаце, чтобы получить векторное вложение фиксированной длины для предложения/абзаца.

person Edi Bice    schedule 01.12.2014