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

标签 python vector nlp word2vec sentence

初学者问题,但我对此有点困惑。希望这个问题的答案也能让其他 NLP 初学者受益。

以下是更多详细信息:

我知道你可以根据 word2vec 生成的词向量计算句子向量。但是制作这些句子向量的实际步骤是什么?谁能提供一个直观的例子和一些计算来解释这个过程?

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

最佳答案

通过对词向量进行平均来创建文本长度(句子/段落/文档)的向量是一种简单的方法。 (它不太擅长捕捉含义的深浅,但很容易做到。)

使用 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)

是否使用原始词向量,或者单位标准化的词向量或通过某种词重要性度量进行加权的词向量是需要考虑的替代方案。

彼此兼容的词向量将具有相同的维度,因此尝试对不同大小的向量进行平均从来不存在问题。

其他技术,如“段落向量”(gensim 中的 Doc2Vec)可能会在某些语料库上为某些目的提供更好的文本向量。

利用词向量比较文本相似性的其他技术,例如“词移动器距离”(WMD),可能比比较单个摘要向量提供更好的成对文本相似性分数。 (WMD 不会将文本简化为单个向量,并且计算成本可能很高。)

关于python - 使用均值法从word2vec词向量计算句子向量的具体步骤是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45651644/

相关文章:

非指针的c++ vector

python - Tensorflow DNNClassifier 返回错误的预测

machine-learning - 方面提取的监督学习方法

google-maps - 使用自然语言处理从推文中提取地址

python - 在Python中按位置将数字从其他列转移到新列?

python - Selenium:WebDriverException:Chrome无法启动:由于google-chrome不再运行而崩溃,因此ChromeDriver认为Chrome已崩溃

c++ - 为什么我无法声明 vector 全局变量?

python - 使用 Python 和 lxml 针对外部 DTD 验证 XML

Python 坏了,AttributeError : 'module' object has no attribute 'python_version'

c++ - 奇怪的段错误 - 将指针指向 vector 的对象推回导致崩溃