使用Gensim进行训练时,嵌入一词毫无意义:已知关系(国王-男人+女人->皇后)与其他人之间的相似之处根本不成立(甚至不紧密),它们可能是随机的。 >
使用相同的训练数据和等效的参数,我使用Facebook的FastText获得有意义的结果。相比之下,我尝试了Gensim FastText和Word2Vec类,它们都返回无意义的嵌入。
为缩小范围,以下是一些设置:
下面的培训代码:
print("Setting Model")
model = FastText(
# model = Word2Vec(
sg=1,
size=dim,
max_vocab_size=max_vocab_size,
window=10,
negative=8,
min_count=20,
max_n=0,
min_n=0,
workers=16,
alpha=0.1,
)
print("Building vocab")
model.build_vocab(
corpus_file=corpus_file,
progress_per=1_000_000
)
print("Training model")
model.train(
corpus_file=corpus_file,
total_words=model.corpus_total_words,
total_examples=model.corpus_count,
epochs=5,
word_ngrams=0,
)
print("Saving model")
model.save(model_name)
我宁愿避免使用Facebook的FastText,因为它需要我更改其源代码才能达到此vocab大小。
可能出了什么问题,或者我该如何调试?我已经能够将Facebook的FastText向量导入Gensim,并且工作正常。