[英]How can you train a word2vec in gensim from a list of co-occurrence (bigram) counts?
Gensim 的Word2Vec
类希望它的训练语料库是一个可迭代的实际文本(单词标记列表)。 最内层的训练循环,其中 skip-gram 算法在上下文窗口内的词对上工作,没有考虑到允许您提供更多原始语料库变体。
由于该语料库看起来(或很快将)作为全文提供,我建议以这种形式获取和使用它。 然后,您可以修改不同的window
值。
如果您绝对需要使用 2-gram,那么它们会非常接近地模拟带有window=1
的 skip-gram 训练,因此您可以尝试从该数据创建合成语料库。
也就是说,对于具有出现次数的每个二元组,创建那么多的 2 字文本。 (例如,如果数据包括(('fat', 'cat'), 3)
- 表示双字组"fat cat"
在真实文本中出现了 3 次,则创建伪文本[['fat', 'cat'], ['fat', 'cat'], ['fat', 'cat']]
.) 然后,将所有这些 2 个单词的文本连接并随机排列在一起 - 这样相同或相似的二元词就不会出现在运行/团块中. (交错对比示例比长时间运行的相同/相似文本更适合模型训练。)
然后使用该合成文本集来训练Word2Vec
。 你应该得到的词向量在实用性上与你在真实文本上得到的非常相似, window=1, sg=1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.