词嵌入/词向量如何work/created?

How does word embedding/ word vectors work/created?

word2vec 如何为单词创建向量?我使用两个不同的文件(来自 commoncrawl 网站)训练了两个 word2vec 模型,但我从两个模型中获得了给定单词的相同单词向量。

实际上,我使用来自 commoncrawl 网站的不同文本文件创建了多个 word2vec 模型。现在我想检查一下哪个模型更好。 select 如何才能从所有这些模型中找出最好的模型?为什么我会为不同的模型获得相同的词向量?

抱歉,如果问题不清楚。

如果您从不同文本语料库准备的模型中获得相同的词向量,则您的过程中可能有问题。您可能根本没有执行任何训练,这可能是因为将可迭代文本提供给 Word2Vec class 的方式存在问题。 (在那种情况下,词向量将保持其初始的随机初始化值。)

您应该启用日志记录,并仔细查看日志以查看在此过程中是否显示了合理的字数、示例、进度和增量进度。您还应该检查一些表面的、特别的检查的结果在训练后看起来是否合理。例如,model.most_similar('hot') return 其他 words/concepts 是否有点像 'hot'?

一旦你确定模型是在不同的语料库上训练的——在这种情况下,它们的词向量应该彼此非常不同——决定哪个模型是 'best' 取决于你的词的具体目标-向量。

您应该设计一种可重复的定量方法来根据您的预期最终用途评估模型。这可能会粗略地从您自己对结果的一些手动审查开始,例如查看 most_similar() 结果以寻找 better/worse 结果的重要词——但应该变得更广泛。随着项目的进展,它会严格且自动化。

这种自动评分的一个例子是 gensim 的词向量对象上的 accuracy() 方法。参见:

https://github.com/RaRe-Technologies/gensim/blob/6d6f5dcfa3af4bc61c47dfdf5cdbd8e1364d0c3a/gensim/models/keyedvectors.py#L652

如果提供了特定格式的词类比文件,它将检查词向量解决这些类比的效果如何。例如,Google 的原始 word2vec 代码版本的 questions-words.txt 包括他们用来报告矢量质量的类比。但请注意,最适合某些目的的词向量,例如理解文本主题或情绪,可能也不是解决这种类比的最佳方法,反之亦然。如果训练自己的词向量,最好根据 'good' 向量的目标特定标准来选择训练 corpus/parameters。