【问题标题】:What are the specifc steps for computing sentence vectors from word2vec word vectors using the averaging method?使用平均法从 word2vec 词向量计算句子向量的具体步骤是什么?
【发布时间】:2018-01-20 22:36:32
【问题描述】:

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

这里有更多细节:

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

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

【问题讨论】:

    标签: python vector nlp word2vec sentence


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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)
      

      是否使用原始字向量,或者通过单词标准化或以其他方式加权的字向量,以某种方式是单词意义是要考虑的替代方案。

      彼此兼容的字向量将具有相同数量的维度,因此从来没有尝试平均不同尺寸的向量的问题。

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

      用于比较利用字向量的文本相似性的其他技术,如“词语移动器距离”(WMD),可能会提供比比较单个汇总向量的更好的成对文本相似度得分。 (WMD不会将文本减少到单个向量,并且可以计算成本昂贵。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-16
        • 1970-01-01
        • 2019-02-23
        • 1970-01-01
        • 2020-07-22
        • 2012-01-02
        • 1970-01-01
        相关资源
        最近更新 更多