【发布时间】:2021-02-18 20:39:04
【问题描述】:
我有一个短文本语料库(约 5000 个句子),它形成了约 2000 个单词的词汇。我使用 Gensim 构建了 Word2Vec 模型,但 most_similar 的输出看起来并不合理。这是因为我的词汇表中没有足够的单词吗?如果是这样,词汇量大小是否有任何经验法则?
【问题讨论】:
我有一个短文本语料库(约 5000 个句子),它形成了约 2000 个单词的词汇。我使用 Gensim 构建了 Word2Vec 模型,但 most_similar 的输出看起来并不合理。这是因为我的词汇表中没有足够的单词吗?如果是这样,词汇量大小是否有任何经验法则?
【问题讨论】:
通常 word2vec 需要大量数据,每个单词都有许多不同的示例,以获得良好的词向量。您有时可以通过以下方式从较小的数据集中提取一些有用性:
(虽然我没有对此进行正式测试,但我的直觉/经验法则是向量维数应该不超过唯一词计数的平方根。所以只有 2000 个唯一词,即使是50的维度正在推动它。)
您可能很想使用低于默认值的min_count,这样那些只出现一两次的词就会训练向量。但是这些没有不同用法示例的向量本身就很差——被那些一两个不具有广泛代表性的上下文所支配。此外,总的来说,所有这些“噪音”词,穿插着确实有足够例子的词,往往会使其他词向量变得更糟。 (丢弃示例太少的单词通常改进幸存单词的向量。)
如果可能,请从类似的使用领域获取更多训练数据,以与您主要感兴趣的数据混合。
【讨论】:
词汇量大小没有经验法则,但每个词都应该与其他词出现足够频繁,以便算法计算出有意义的嵌入(gensim 的 word2vec 中的默认 min_count 是 5)。
word2wec 中实际上有两种底层算法:skip-gram (sg=1) 和 CBOW (sg=0)。您可以同时尝试这两种方法,因为其中一种可能会产生比另一种更好的结果。您还可以对 window 参数尝试不同的值,这是一个句子中当前单词和预测单词之间的最大距离。
最后,如果你有一个小的词汇/数据集,你应该使用一个小的向量维度(例如vector_size=50)。
【讨论】: