【问题标题】:gensim - word2vec: AttributeError: 'Word2Vec' object has no attribute 'most_common'gensim - word2vec: AttributeError: 'Word2Vec' 对象没有属性 'most_common'
【发布时间】:2021-02-16 01:15:21
【问题描述】:
PAD = 0
UNK = 1
START = 2
END = 3
def make_vocab(wc, vocab_size):
    word2id, id2word = {}, {}
    word2id['<pad>'] = PAD
    word2id['<unk>'] = UNK
    word2id['<start>'] = START
    word2id['<end>'] = END
    for i, (w, _) in enumerate(wc.most_common(vocab_size), 4):
        word2id[w] = i
    return word2id

调用此函数时出现此错误“AttributeError: 'Word2Vec' object has no attribute 'most_common'”。我尝试了不同版本的 gensim。你能给我一些提示来解决这个问题吗?

【问题讨论】:

  • 正如@cecil-cox 所说,Gensim 中没有most_common() 方法。 (你为什么认为有?)而且,你想用这个word2id dict做什么?为什么? (如果这些标记在您的训练数据中,它们将获得自己的位置,应该与 0-3 一样好。如果它们不在您的训练数据中,保留它们的位置可能会使其他东西损坏/无意义/脆弱.)

标签: python nlp gensim word2vec


【解决方案1】:

Gensim 的 Word2Vec 不包含 most_common 方法。

如果出于某种原因您必须从模型中提取 word,frequency 对,您可以使用

[(word, wc.w2v.vocab[word]) for word in wc.wv.vocab]

并对结果列表进行排序。然而,这是一个非常奇怪的用例。

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2017-07-11
    • 2014-04-02
    • 2017-03-28
    相关资源
    最近更新 更多