Подтвердить что ты не робот

Gensim word2vec доступ к векторам ввода/вывода

В модели word2vec есть два линейных преобразования, которые берут слово в пространстве словаря на скрытый слой (вектор "in" ), а затем обратно в пространство словака ( "выход" ). Обычно этот вектор отбрасывается после тренировки. Мне интересно, есть ли простой способ доступа к вектору out в gensim python? Эквивалентно, как я могу получить доступ к исходной матрице?

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

Вот более подробная информация. Из приведенной выше справки мы имеем следующую модель word2vec:

введите описание изображения здесь

Здесь входной уровень имеет размер $V $, размер словаря, скрытый слой имеет размер $d $и выходной уровень размера $V $. Две матрицы W_ {IN} и W_ {OUT}. Обычно модель word2vec сохраняет только матрицу W_IN. Это то, что возвращается туда, где после обучения модели word2vec в gensim вы получаете такие вещи, как:

модель ['potato'] = [- 0.2,0.5,2,...]

Как я могу получить доступ или сохранить W_ {OUT}? Это, скорее всего, довольно дорогостоящее вычисление, и я действительно надеюсь на некоторые встроенные методы в gensim, чтобы сделать это, потому что я боюсь, что если я закоучу это с нуля, это не даст хорошей производительности.

4b9b3361

Ответ 1

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

Копаясь в ссылке

Ответ 2

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

model.save('/tmp/mymodel.model')
new_model = gensim.models.Word2Vec.load('/tmp/mymodel')

Некоторая справочная информация Gensim - бесплатная библиотека Python, предназначенная для обработки необработанных, неструктурированных цифровых текстов ( "простой текст" ). Алгоритмы в gensim, такие как латентный семантический анализ, распределение скрытых распределений Дирихле и случайные проекции, открывают семантическую структуру документов, анализируя статистические шаблоны совпадения слов в составе учебных документов.

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

Ссылка на установку здесь

Надеюсь, это поможет!!!

Ответ 3

В файле word2vec.py вам необходимо внести это изменение В следующей функции он в настоящий момент возвращает вектор "in". Как вам нужен "вне" вектор. "In" сохраняется в объекте syn0, а "out" сохраняется в переменной объекта syn1neg.

def save_word2vec_format(self, fname, fvocab=None, binary=False):
  ....
  ....
  row = self.syn1neg[vocab.index]