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