【问题标题】:How to get vocabulary word count from gensim word2vec?如何从 gensim word2vec 获取词汇字数?
【发布时间】:2016-09-08 12:40:52
【问题描述】:

我在 python 中使用 gensim word2vec 包。我知道如何从训练有素的模型中获取词汇。但是如何获取词汇表中每个单词的字数呢?

【问题讨论】:

标签: gensim word2vec


【解决方案1】:

词汇属性已从 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

查看migrating from Gensim 3.x to 4上的注释

【讨论】:

    【解决方案2】:

    当你想创建一个单词字典以便以后检索方便时,你可以这样做:

    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))
    

    【讨论】:

      【解决方案3】:

      词汇表中的每个单词都有一个关联的词汇表对象,其中包含一个索引和一个计数。

      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
      • 澄清一下,字数≠词频。
      • @aucamort 你能解释一下word count ≠ word frequency 是什么意思吗?这个答案(stackoverflow.com/a/55659539/6907424)似乎与你所说的相反。
      猜你喜欢
      • 2017-10-09
      • 2023-03-24
      • 1970-01-01
      • 2016-06-06
      • 2017-07-19
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多