如何将最大词汇频率放入doc2vec

How to put maximum vocabulary frequency in doc2vec

Doc2vec 在创建词汇表时有可能将单词在文档中的最小出现次数作为参数包含在词汇表中 min_count

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

如何使用某些参数排除出现频率太高的单词?

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

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

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

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

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

同样,您可以避免直接调用 build_vocab(),而是调用它的子步骤——但在最终确定词汇表之前编辑发现的 raw-counts 字典。您可能需要查阅源代码来执行此操作,并且可以使用丢弃 too-infrequent 单词的代码作为您自己的新附加代码的模型。

Word2Vec 的经典 sample 参数也控制了 high-frequency 词的下采样,以防止模型在冗余训练大量词上花费过多的相对努力。这个值越激进(越小),在训练过程中随机跳过的 high-frequency 个词的实例就越多。默认的1e-030.001)是非常保守的;在 very-large 自然语言语料库中,我看到了 1e-07 (0.0000001) 或 1e-8 (0.00000001) 的良好结果——所以在另一个领域中,一些 lower-meaning 标记是 very-frequent,同样激进的下采样值得尝试。

较新的 ns_exponent 选项更改负采样以调整 less-frequent 词的相对偏好。最初的 word2vec 工作使用固定值 0.75,但此后的一些研究表明其他领域(如推荐系统)可能会受益于对实际标记频率或多或少敏感的其他值。 (相关论文在 ns_exponent 参数的 gensim 文档中有链接。)