【发布时间】:2016-09-08 12:40:52
【问题描述】:
我在 python 中使用 gensim word2vec 包。我知道如何从训练有素的模型中获取词汇。但是如何获取词汇表中每个单词的字数呢?
【问题讨论】:
我在 python 中使用 gensim word2vec 包。我知道如何从训练有素的模型中获取词汇。但是如何获取词汇表中每个单词的字数呢?
【问题讨论】:
词汇属性已从 Gensim 4.0.0 中的 KeyedVector 中删除。
改为:
word2vec_model.wv.get_vecattr("my-word", "count") # returns count of "my-word"
len(word2vec_model.wv) # returns size of the vocabulary
【讨论】:
当你想创建一个单词字典以便以后检索方便时,你可以这样做:
w2c = dict()
for item in model.wv.vocab:
w2c[item]=model.wv.vocab[item].count
如果您想对其进行排序以查看模型中最常见的单词,您也可以这样做:
w2cSorted=dict(sorted(w2c.items(), key=lambda x: x[1],reverse=True))
【讨论】:
词汇表中的每个单词都有一个关联的词汇表对象,其中包含一个索引和一个计数。
vocab_obj = w2v.vocab["word"]
vocab_obj.count
谷歌新闻 w2v 模型的输出:2998437
因此,要获得每个单词的计数,您需要遍历词汇表中的所有单词和 vocab 对象。
for word, vocab_obj in w2v.vocab.items():
#Do something with vocab_obj.count
【讨论】:
gensim 1.0.0 开始,您需要使用w2v.wv.vocab["word"].count 而不是w2v.vocab["word"].count。
word count ≠ word frequency 是什么意思吗?这个答案(stackoverflow.com/a/55659539/6907424)似乎与你所说的相反。