首页 > 解决方案 > gensim 短语不遵守 min_count 参数

问题描述

我正在尝试使用二元组训练一个 gensim Word2Vec 模型。为了得到二元组,我运行下面的代码,用sentences代表一长串拆分句子nltk.sent_tokenize,用 Spacy 进行词形还原,然后小写:

from gensim.models import Word2Vec, Phrases

bigrams = Phrases(sentences, min_count=20, threshold=10)

这只能包括出现 >= 20 次的二元组。但是当我运行时bigrams.vocab,我得到:

defaultdict(int,
             b'inflated': 237,
             b'the_inflated': 34,
             b'inflated_bag': 1,
             b'let': 6841,
             b'bag_let': 1,
             b'let_-pron-': 3723,
             ...)

据我了解,inflated_baglet_-pron-应该在场。有什么我做错了吗?还是我误解了输出?

标签: pythongensim

解决方案


在 gensimPhrases源代码中,min_count是一个可调整的输入,用于决定应该组合哪些二元组。

不是一个严格的截止值(例如和相关类中的同名参数Word2Vec),低于该值的任何一元/二元都将被忽略或从调查计数中彻底丢弃。

(gensim 中的 doc-commentsphrases.py在这方面有些误导。)


推荐阅读