【问题标题】:After loading a pretrained Word2Vec model, how do I get word2vec representations of new sentences?加载预训练的 Word2Vec 模型后,如何获得新句子的 word2vec 表示?
【发布时间】:2017-07-13 14:12:44
【问题描述】:

我使用 Google 新闻数据集加载了一个 word2vec 模型。现在我想获得我希望聚类的句子列表的 Word2Vec 表示。经过documentation 之后,我找到了gensim.models.word2vec.LineSentence,但我不确定这就是我要找的东西。

应该有一种方法可以从预训练模型中获取句子列表的 word2vec 表示,对吧?我搜索的链接都没有关于它的任何内容。任何线索将不胜感激。

【问题讨论】:

  • word2vec 将 words 映射到向量,而不是句子。

标签: cluster-analysis gensim word2vec


【解决方案1】:

Word2Vec 仅提供单词的向量表示,而不是句子。

从词向量到更长文本(如句子)的向量的一种粗略但有些有效(出于某些目的)的方法是将所有词向量平均在一起。这不是 gensim Word2Vec 类的功能;你必须自己编码。

例如,已经将词向量加载为word_model,您大致会这样做:

import numpy as np

sentence_tokens = "I do not like green eggs and ham".split()
sum_vector = np.zeros(word_model.vector_size)
for token in sentence_tokens:
    sum_vector += word_model[token]
sentence_vector = sum_vector / len(sentence_tokens)

真正的代码可能会在模型不知道所有标记时添加处理,或对文本进行标记/过滤的其他方式等等。

还有其他更复杂的方法可以获取文本长度的向量,例如 gensim 的 Doc2Vec 类实现的“段落向量”算法。这些不一定从预训练的词向量开始,但可以在您自己的文本语料库上进行训练。

【讨论】:

  • 感谢您的回答。我尝试了 Doc2Vec,但我的语料库太小,无法有效地训练模型。这就是我尝试实现预训练的 Word2Vec 模型的原因。
猜你喜欢
  • 2017-06-26
  • 2017-09-01
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 2018-09-02
  • 2022-01-24
  • 2015-08-09
相关资源
最近更新 更多