Каковы конкретные шаги для вычисления векторов предложений из векторов слов word2vec с использованием метода усреднения?

Вопрос новичка, но я немного озадачен этим. Надеюсь, ответ на этот вопрос принесет пользу и другим новичкам в НЛП.

Вот еще некоторые подробности:

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

Например: Предположим, у меня есть предложение из трех слов: Сегодня жарко. И предположим, что эти слова имеют гипотетические векторные значения: (1,2,3) (4,5,6) (7,8,9). Могу ли я получить вектор предложения, выполняя покомпонентное усреднение этих векторов слов? А что, если векторы имеют разную длину, например: (1,2) (4,5,6) (7,8,9,23,76) как выглядит процесс усреднения для этих случаев?


person pete the dude    schedule 12.08.2017    source источник


Ответы (2)


Создание вектора для длины текста (предложение / абзац / документ) путем усреднения векторов слов - один из простых подходов. (Это не очень хорошо улавливает оттенки значения, но это легко сделать.)

Используя библиотеку gensim, это может быть очень просто:

import numpy as np
from gensim.models.keyedvectors import KeyedVectors

wv = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz', binary=True)
text = "the quick brown fox jumped over the lazy dog"
text_vector = np.mean([wv[word] for word in text.split()], axis=0)

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

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

Другие методы, такие как 'Paragraph Vectors' (Doc2Vec in gensim), могут дать лучшие текстовые векторы для некоторых целей в некоторых корпусах.

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

person gojomo    schedule 12.08.2017

В вашем примере усреднение трех векторов слов (каждое из трех измерений) даст один единственный вектор из трех измерений.

Centroid-vec = 1/3 * (1 + 4 + 7, 2 + 5 + 8, 3 + 6 + 9) = (4, 5, 6)

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

person Debasis    schedule 12.08.2017