fasttext 训练后产生不同的向量

问题描述

这是我的培训:

import fasttext

model = fasttext.train_unsupervised('data.txt',model='skipgram')

现在,让我们观察第一个向量(为了可读性省略了完整的输出

model.get_input_vector(0)

# array([-0.1988439,0.40966552,0.47418243,0.148709,0.5891477

另一方面,让我们将第一个字符串输入到我们的模型中:

model[data.iloc[0]]

# array([ 0.10782535,0.3055557,0.19097836,-0.15849613,0.14204402

我们得到一个不同的向量。

为什么?

解决方法

您应该已经详细解释了 data 结构。顺便说一下,当您使用 model[data.iloc[0]] 时,它相当于 model.get_word_vector(data.iloc[0])。所以,你应该向模型传递一个词。

另一方面,model.get_input_vector(0) 可能会向模型输入一个句子。因此,如果 model.get_input_vector(0) 是一个句子,您可以将 model.get_sentence_vector(data.iloc[0]) 的结果与 data.iloc[0] 进行比较。否则,您应该将数据中的第一个单词输入到 model 中,然后比较它们的向量。