Word2Vec 模型的词汇表中的最少单词数?

问题描述

我有一个短文本(约 5000 个句子)的语料库,它形成了一个约 2000 个单词的词汇表。我用 Gensim 构建了一个 Word2Vec 模型,但是 most_similar 的输出看起来不合理。这是因为我的词汇量不够吗?如果是这样,词汇量是否有任何经验法则?

解决方法

词汇量大小没有经验法则,但每个单词应该与其他单词一起出现足够频繁,以便算法计算有意义的嵌入(gensim 的 word2vec 中的默认 min_count5)。

实际上 word2wec 中有两种底层算法:skip-gram (sg=1) 和 CBOW (sg=0)。您可以同时尝试这两种方法,因为其中一种可能会产生比另一种更好的结果。您还可以试验 window 参数的不同值,即句子中当前词和预测词之间的最大距离。

最后,如果您的词汇表/数据集较小,则应使用较小的向量维度(例如 vector_size=50)。

,

通常 word2vec 需要大量数据,每个词都有许多不同的例子,以获得好的词向量。有时,您可以通过以下方式从较小的数据集中榨取一些用处:

  • 较小的向量维数;和/或
  • 更多训练时期

(虽然我没有正式测试过这个,但我的直觉/经验法则是向量维数应该不超过唯一词数的平方根。所以只有 2000 个唯一词,即使是一个50 维正在推动它。)

您可能会倾向于使用低于默认值的 min_count,以便那些只出现一两次的词训练向量。但是这种没有各种用法示例的向量本身就会很差——由那一两个不具有广泛代表性的上下文主导。此外,总的来说,所有这些“噪音”词,穿插着确实有足够例子的词,往往会使其他词向量变得更糟。 (丢弃示例太少的单词通常改进幸存单词的向量。)

如果可能,从类似的使用领域获取更多训练数据,以与您的主要兴趣数据混合。