用平均法从word2vec词向量计算句子向量的具体步骤是什么?

2024-10-02 16:27:46 发布

您现在位置:Python中文网/ 问答频道 /正文

初学者的问题,但我有点困惑。希望这个问题的答案能对其他NLP初学者有所裨益。在

以下是一些详细信息:

我知道你可以从word2vec生成的单词向量中计算句子向量。但是这些句子向量的实际步骤是什么呢。谁能提供一个直观的例子,然后一些计算来解释这个过程吗?在

例句:假设我有一句话有三个字:今天很热。假设这些词有假设的向量值:(1,2,3)(4,5,6)(7,8,9)。我是否可以通过对这些词向量进行分量平均得到句子向量?如果向量的长度不同,例如:(1,2)(4,5,6)(7,8,9,23,76)这些情况下的平均过程是什么样子的?在


Tags: 答案nlp过程步骤详细信息word2vec单词向量
2条回答

通过对单词向量求平均值来为一段文本(句子/段落/文档)创建向量是一种简单的方法。(它不擅长捕捉意义的细微差别,但很容易做到。)

使用gensim库,可以简单到:

import numpy as np
from gensim.models.keyedvectors import KeyedVectors

wv = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz', binary=True)
text = "the quick brown fox jumped over the lazy dog"
text_vector = np.mean([wv[word] for word in text.split()], axis=0)

是否使用原始词向量,或单位向量归一化或其他加权的词向量,都是可以考虑的。在

相互兼容的词向量将具有相同的维数,因此不存在尝试平均大小不同的向量的问题。在

其他技术,如“Paragraph Vectors”(gensim中的Doc2Vec)可能会在某些小体上为某些目的提供更好的文本向量。在

其他利用词向量来比较文本相似度的技术,比如“单词移动距离”(WMD),可能会比比较单个摘要向量给出更好的成对文本相似度得分。(大规模杀伤性武器不会将文本缩减为单个矢量,而且计算成本可能很高。)

对于您的例子,3个单词向量(每个3维)的平均值将产生一个3维的单个向量。在

质心向量=1/3*(1+4+7,2+5+8,3+6+9)=(4,5,6)

获得文档的单个向量的更好方法是使用通常称为doc2vec的段落向量。在

相关问题 更多 >