如何在doc2vec中设置最大词汇量

时间:2019-06-06 13:14:00

标签: python gensim word2vec doc2vec

在创建词汇表时,Doc2vec可以将单词中出现频率最小的文档作为参数min_count包含在词汇表中。

model = gensim.models.doc2vec.Doc2Vec(vector_size=200, min_count=3, epochs=100,workers=8)

如何排除带有某些参数的频率太高的单词?

我知道一种方法是在预处理步骤中手动删除这些单词,并对每个单词进行计数,但是很高兴知道是否有一些内置方法可以这样做,因为它为测试提供了更多空间。 非常感谢您的回答。

1 个答案:

答案 0 :(得分:2)

gensim的max_count中没有明确的Word2Vec参数。

如果您确定某些标记没有意义,则应预处理文本以消除它们。

还有一个trim_rule选项可以作为模型实例化或build_vocab()传递,您自己的函数可以丢弃一些单词;请参阅gensim文档:

https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec

类似地,您可以避免直接调用build_vocab(),而是调用其子步骤-但在词汇最终确定之前编辑发现的原始计数字典。您可能希望参考源代码来执行此操作,并且可以将舍弃太少单词的代码用作自己的新附加代码的模型。

sample的经典Word2Vec参数还控制高频单词的下采样,以防止模型在冗余训练丰富的单词上花费过多的相对精力。此值越激进(越小),则在训练过程中会少跳高频单词的实例。 1e-030.001)的默认值非常保守。在非常大的自然语言语料库中,我看到不错的结果,直到1e-070.0000001)或1e-80.00000001)–在另一个领域,令牌非常常见,类似的积极下采样值得尝试。

较新的ns_exponent选项更改了负采样,以调整频率较低单词的相对偏爱。最初的word2vec工作使用的固定值为0.75,但是自从进行了一些研究以来,建议其他域(例如推荐系统)可能会从对实际令牌频率或多或少敏感的其他值中受益。 (相关文件在gensim文档中链接了ns_exponent参数。)