Word2Vec比较来自具有不同大小的不同模型的向量

问题描述 投票:3回答:2

我已经使用gensim针对不同的语言训练了多个word2vec模型,但是每种模型的size不同。

向量是这样获得的:

vec_sp = word_vectors_sp.get_vector("uno")

如何使用vec_sp作为具有不同矢量大小的不同模型的输入:

word_vectors_en.most_similar(positive=[vec_sp], topn=1)

在第二个模型中获得相应的单词

python nlp artificial-intelligence gensim word2vec
2个回答
1
投票

能够在n个具有不同维度d_1,... d_n]的不同嵌入向量空间之间进行比较的系统方法是将每个空间中向量的维数减小为一个值m其中m

[有很多方法可以做到。通过Johnson Lindenstrauss lemma,您可以通过在每个空间分别应用随机投影

来实现,即为每组向量Xi_ {d_i} x N选择一个大小为[[m x d_i的随机投影矩阵Ri(假设每个空间有N个向量),然后计算[Xi'_ {m x N} = Ri _ {m x d_i} x Xi _ {d_i x N}(矩阵的尺寸显示在旁边)。

在对每个空间应用此变换之后,最终将得到i个这样的空间...每个空间的尺寸将为

m

,这意味着您将能够计算点积之间降低维度的另一种方法是使用

PCA

。 Python的sklearn提供random projectionsPCA的实现。就一个具体的例子而言,如果您有两个100和200维的向量空间,每个向量空间有100,000个向量,则可以通过PCA或随机投影将每个向量空间减少到20个维(任意选择)。然后,您可以通过计算距离或内积来比较这20维向量。

0
投票
如果模型是分别训练的,即使它们具有相同的维数,向量也不会有意义地可比。
© www.soinside.com 2019 - 2024. All rights reserved.