python - 如何从共现(二元组)计数列表中训练 gensim 中的 word2vec?
问题描述
我正在尝试使用COHA 语料库训练 word2vec 模型,方法是使用语料库作者在此处提供的预先计算的 bigram counts co-occurrence counts 。
如何使用gensim实现这一点?
解决方案
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
.
推荐阅读
- javascript - 如何通过按键盘上的键触发 CSS 关键帧动画?
- cocoapods - 在 Podfile 上添加环境变量的可能性
- apache-spark - Spark内部查询导致大量分区
- sharepoint - 如何标记文档集中任何丢失的文档
- node.js - 如何将 oracle 与节点 js 连接并在 RESTFUL API 中表达 js?
- sf - sf 的逐行操作
- c - C,在符号常量定义中出现错误(可能在函数参数中)
- android - 改造 - 带有 RxKotlin 的 android.os.NetworkOnMainThreadException
- ios - iTunes 未显示 React Native App 支持的语言
- vb.net - 我的编码有问题吗?我还是新人