加载预训练的 Word2Vec 模型后,如何获得新句子的 word2vec 表示?
After loading a pretrained Word2Vec model, how do I get word2vec representations of new sentences?
我使用 Google 新闻数据集加载了一个 word2vec 模型。现在我想获得我希望聚类的句子列表的 Word2Vec 表示。通过 documentation 我找到了这个 gensim.models.word2vec.LineSentence
但我不确定这就是我要找的东西。
应该有一种方法可以从预训练模型中获取句子列表的 word2vec 表示,对吗? None 我搜索的链接有任何相关内容。任何线索将不胜感激。
Word2Vec 只提供单词的向量表示,不提供句子。
从词向量到较长文本(如句子)的向量的一种粗略但有些有效(出于某些目的)的方法是将所有词向量平均在一起。这不是 gensim Word2Vec
class 的函数;你必须自己编码。
例如,对于已经加载为 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)
真正的代码可能会添加处理,以应对模型并非所有标记都已知的情况,或者 tokenizing/filtering 文本的其他方式,等等。
还有其他更复杂的方法来获取文本长度的向量,例如由 gensim 的 Doc2Vec
class 实现的 'Paragraph Vectors' 算法。这些不一定以预训练的词向量开始,但可以在您自己的文本语料库上进行训练。
我使用 Google 新闻数据集加载了一个 word2vec 模型。现在我想获得我希望聚类的句子列表的 Word2Vec 表示。通过 documentation 我找到了这个 gensim.models.word2vec.LineSentence
但我不确定这就是我要找的东西。
应该有一种方法可以从预训练模型中获取句子列表的 word2vec 表示,对吗? None 我搜索的链接有任何相关内容。任何线索将不胜感激。
Word2Vec 只提供单词的向量表示,不提供句子。
从词向量到较长文本(如句子)的向量的一种粗略但有些有效(出于某些目的)的方法是将所有词向量平均在一起。这不是 gensim Word2Vec
class 的函数;你必须自己编码。
例如,对于已经加载为 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)
真正的代码可能会添加处理,以应对模型并非所有标记都已知的情况,或者 tokenizing/filtering 文本的其他方式,等等。
还有其他更复杂的方法来获取文本长度的向量,例如由 gensim 的 Doc2Vec
class 实现的 'Paragraph Vectors' 算法。这些不一定以预训练的词向量开始,但可以在您自己的文本语料库上进行训练。