Проецировать слово на ось (Word2Vec)
Я использую Word2Vec для встраивания слов. Я хочу проецировать слово W на ось, которая представляет сходство слова W с двумя заданными словами W1 и W2 таким образом, чтобы мы могли видеть, какое слово W более похоже, например:
1 ответ
Есть много способов справиться с этим, но самый простой и простой из них - просто получить сходство с обеими точками, определяющими ось сравнения, и просто нормализовать, чтобы получить скалярное значение между [0,1] (исключая числовые неточности).:
# obama <- obama.vector
# iguana <- iguana.vector
# president <- president.vector
# lizzard <- lizzard.vector
>>> A = np.stack(president, lizzard).T
>>> A.shape
(300, 2)
>>> np.matmul(obama, A) / np.sum(np.matmul(obama, A))
array([ 0.90378857, 0.0962114 ], dtype=float32)
>>> np.matmul(iguana, A) / np.sum(np.matmul(iguana, A))
array([-0.05331916, 1.0533191 ], dtype=float32)
Примечание: приведенные выше примеры результатов получены с векторами GloVe 300d-CC.