Gensim训练无意义的词嵌入

时间:2020-07-16 17:02:29

标签: nlp gensim embedding word-embedding fasttext

使用Gensim进行训练时,嵌入一词毫无意义:已知关系(国王-男人+女人->皇后)与其他人之间的相似之处根本不成立(甚至不紧密),它们可能是随机的。 >

使用相同的训练数据和等效的参数,我使用Facebook的FastText获得有意义的结果。相比之下,我尝试了Gensim FastText和Word2Vec类,它们都返回无意义的嵌入。

为缩小范围,以下是一些设置:

  • 30GB训练数据文本文件。用空格分隔的标记,用换行符分隔的句子。
  • 训练后的最终词汇量:12M +单词向量
  • 尺寸= 100
  • 禁用的子词
  • 禁用的n-grams
  • 负采样= 8
  • 跳过图
  • 最小数量= 20

下面的培训代码:

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,并且工作正常。

0 个答案:

没有答案