首页 > 解决方案 > 如何计算 Word2Vec 训练模型中的词频?

问题描述

我需要计算word2vec训练模型中每个单词的频率。我想要这样的输出:

term    count
apple   123004
country 4432180
runs    620102
...

有可能这样做吗?我如何从 word2vec 中获取这些数据?

标签: pythonword2vecword-embeddingword-frequencynatural-language-processing

解决方案


您使用的是哪个 word2vec 实现?

在流行的gensim库中,在Word2Vec模型建立了它的词汇表之后(通过进行完整的训练,或者在build_vocab()被调用之后),模型的wv属性包含一个KeyedVectors-type 对象,它作为一个属性vocabVocab-type 对象的字典,它具有count扫描语料库中单词频率的属性。

因此,您可以通过以下方式大致获得您所寻求的内容:

w2v_model = Word2Vec(your_corpus, ...)
for word in w2v_model.wv.vocab:
    print((word, w2v_model.wv.vocab[word].count))

简单的词向量集(例如通过gensim'sload_word2vec_format()方法加载的词向量)不会有准确的计数,但按照惯例,通常在内部从最频繁到最不频繁进行排序。


推荐阅读