【问题标题】:getting distance matrix and features matrix from word2vec model从 word2vec 模型中获取距离矩阵和特征矩阵
【发布时间】:2017-12-30 00:08:30
【问题描述】:

我已经使用 gensim 为一个庞大的语料库生成了一个 word2vec 模型,我需要使用 k 表示我需要的聚类对词汇表进行聚类:

  1. 余弦距离矩阵(单词到单词,所以矩阵的大小为 number_of_words x number_of_words )
  2. 特征矩阵(单词到特征,所以矩阵的大小是number_of_words x number_of_features(200))

对于特征矩阵,我尝试使用 x=model.wv,对象类型为 gensim.models.keyedvectors.KeyedVectors,它比我预期的特征矩阵要小得多

有没有办法直接使用这个对象来生成 k-means 聚类?

【问题讨论】:

  • 能否请您添加一些代码和预期/实际输出?

标签: python k-means gensim word2vec


【解决方案1】:

在 gensim 的 Word2Vec 模型中,原始的词向量 number_of-words x number_of_features numpy 数组位于 model.wv.vectors 中。 (在较早的 Gensim 版本中,.vectors 属性被命名为 .syn0,与 Google 最初的 word2vec.c 命名相匹配。

您可以使用model.wv.key_to_index dict(以前的.vocab)来学习string-token-to-array-slot 的赋值,或者使用model.wv.index_to_key 列表(以前的.index2word)来学习array-slot-单词分配。

没有预先计算成对距离,因此您必须自己创建。并且对于典型的词汇量,它可能大得不切实际。 (例如,对于 100,000 个单词的词汇表,以最有效的方式存储所有成对距离将需要大约 100,000^2 * 4 bytes/float / 2 = 20GB 的可寻址空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 2013-04-14
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    相关资源
    最近更新 更多