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

Minimum number of words in the vocabulary for Word2Vec models?

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

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

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

最后,如果你有一个小的vocabulary/dataset,你应该使用一个小的向量维度(例如vector_size=50)。

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

  • 向量维度更小; and/or
  • 更多训练时期

(虽然我还没有正式测试过这个,但我的 hunch/rule-of-thumb 是矢量维数应该不超过唯一单词数的平方根。所以只有 2000 个唯一单词,即使是50 的维度正在推动它。)

您可能会想使用低于默认值的值 min_count,这样那些只出现一两次的词就会训练向量。但是,没有各种用法示例的此类向量本身就很差-被那些一两个不具有广泛代表性的上下文所支配。此外,总的来说,所有这些“噪音”词,散布在 do 有足够示例的词中,往往会使其他词向量变得更糟。 (丢弃示例太少的词通常 改进 幸存词的向量。)

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