首页 > 解决方案 > 如何从共现(二元组)计数列表中训练 gensim 中的 word2vec?

问题描述

我正在尝试使用COHA 语料库训练 word2vec 模型,方法是使用语料库作者在此处提供的预先计算的 bigram counts co-occurrence counts 。

如何使用gensim实现这一点?

标签: pythongensimword2vec

解决方案


Gensim 的Word2Vec班级期望其训练语料库是实际文本(单词标记列表)的可迭代。最里面的训练循环,其中skip-gram算法适用于上下文窗口内的单词对,没有考虑到允许您提供更多原始语料库变体。

由于看起来该语料库已(或即将)以全文形式提供,因此我建议以该形式获取和使用它。然后,您可以修改不同的window值。

如果您绝对需要使用 2-gram,它们会非常模仿使用 a 进行 skip-gram 训练window=1,因此您可以尝试从该数据创建合成语料库。

也就是说,对于每个出现次数的二元组,创建那么多的 2 字文本。(例如,如果数据包括(('fat', 'cat'), 3)——意味着双字母"fat cat"在真实文本中出现 3 次,则创建伪文本[['fat', 'cat'], ['fat', 'cat'], ['fat', 'cat']]。)然后,将所有这些 2 词文本连接并打乱——这样相同或相似的双字母就不会出现在运行中/团块。(交错对比示例比长时间运行相同/相似的文本更适合模型训练。)

然后使用合成文本集进行训练Word2Vec。你应该得到与你在真实文本上得到的非常相似的词向量,使用window=1, sg=1.


推荐阅读