word2vec ограничивает результат Similar_by_vector () переобученным корпусом - PullRequest
0 голосов
/ 17 мая 2019

Предположим, у вас есть (wikipedia) предварительно обученная модель word2vec, и обучите ее на дополнительном корпусе (очень маленький, 1000 сцен).

Можете ли вы представить себе способ ограничить поиск векторов только "переобученным" корпусом?

Например

model.wv.similar_by_vector() 

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

С другой стороны, для поиска по слову существует понятие:

most_similar_to_given('house',['garden','boat'])

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

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Аналогично подходу для создания подмножества векторов документов в новом KeyedVectors предложенном экземпляре здесь , предполагая, что small_vocab - это список слов в вашем новом корпусе, вы можете попробовать:

subset_vectors = WordEmbeddingsKeyedVectors(vector_size)
subset_vectors.add(small_vocab, w2v_model.wv[small_vocab])

Тогда subset_vectors содержит только слова, которые вы выбрали, но поддерживает знакомые операции, такие как most_similar().

0 голосов
/ 19 мая 2019

Совместное использование эффективного способа сделать это вручную:

  1. перенастроить word2vec на дополнительный корпус
  2. создать полный уникальный словарь-указатель корпуса
  3. получить переученные векторы для каждого слова в индексе
  4. вместо стандартной функции «Similar_by_vector» используйте scipy.spatial.KDTree.query()

Это находит самое близкое слово только в данном корпусе и работает как ожидалось.

...