初学者的问题,但我有点困惑。希望这个问题的答案能对其他NLP初学者有所裨益。在
以下是一些详细信息:
我知道你可以从word2vec生成的单词向量中计算句子向量。但是这些句子向量的实际步骤是什么呢。谁能提供一个直观的例子,然后一些计算来解释这个过程吗?在
例句:假设我有一句话有三个字:今天很热。假设这些词有假设的向量值:(1,2,3)(4,5,6)(7,8,9)。我是否可以通过对这些词向量进行分量平均得到句子向量?如果向量的长度不同,例如:(1,2)(4,5,6)(7,8,9,23,76)这些情况下的平均过程是什么样子的?在
Tags:
通过对单词向量求平均值来为一段文本(句子/段落/文档)创建向量是一种简单的方法。(它不擅长捕捉意义的细微差别,但很容易做到。)
使用gensim库,可以简单到:
是否使用原始词向量,或单位向量归一化或其他加权的词向量,都是可以考虑的。在
相互兼容的词向量将具有相同的维数,因此不存在尝试平均大小不同的向量的问题。在
其他技术,如“Paragraph Vectors”(gensim中的
Doc2Vec
)可能会在某些小体上为某些目的提供更好的文本向量。在其他利用词向量来比较文本相似度的技术,比如“单词移动距离”(WMD),可能会比比较单个摘要向量给出更好的成对文本相似度得分。(大规模杀伤性武器不会将文本缩减为单个矢量,而且计算成本可能很高。)
对于您的例子,3个单词向量(每个3维)的平均值将产生一个3维的单个向量。在
质心向量=1/3*(1+4+7,2+5+8,3+6+9)=(4,5,6)
获得文档的单个向量的更好方法是使用通常称为doc2vec的段落向量。在
相关问题 更多 >
编程相关推荐