【问题标题】:How to embed a sentence into vector如何将句子嵌入向量中
【发布时间】:2018-03-11 15:31:51
【问题描述】:

我有句子。我使用 word2vec 将单词嵌入向量。例如,假设我有一个包含 5 个单词的句子。所以我得到了句子的 5 个不同的向量(每个单词一个)。这是最好的方法将完整的句子作为单个向量传递给 ANN?

【问题讨论】:

    标签: neural-network artificial-intelligence recurrent-neural-network sentiment-analysis


    【解决方案1】:

    这是一个悬而未决的问题;存在许多创建有意义的句子向量的方法。

    向量加法等元素操作足以满足大多数简单的任务,但随着句子变大或手头的任务要求越来越高,显然会出现大量的信息丢失。递归神经网络非常擅长创建任务特定的句子嵌入,但显然这些需要训练数据和对机器学习的一些熟悉。从研究的角度来看,通用句子嵌入是最有趣的,但可能不是您想要的。

    【讨论】:

    • 现在通过 Facebook 的 inferSent 和 Google 的 Universal Sentence Encoder 完成了通用句子表示的大量工作
    【解决方案2】:

    您可以使用词袋概念,如此处https://machinelearningmastery.com/gentle-introduction-bag-words-model/ 所述。这样您就可以收集所有单词并将它们放入词汇表中。之后,您可以将句子表示为向量,其中每个元素是 1 或 0,具体取决于单词是否在句子中。 例如,如果你的句子是

    你好,我的名字是彼得。

    你的字典会是

    [你好,我的名字,是彼得]

    句子的向量将是

    [1, 1, 1, 1, 1]

    如果你还有类似的句子

    我很高兴。

    您的字典将扩展包括这些词。所以会是

    [你好,我的名字,是,彼得,我,是,快乐]

    而且你的向量句子也会延伸

    [1, 1, 1, 1, 1, 0, 0, 0]

    作为替代方案,您还可以创建一个词汇表,其中每个单词都由一个数字表示,以便

    {你好:1,我:2,名字:3,是:彼得:4,我:5,上午:6,快乐:7}

    你的句子的向量将是

    [1,2,3,4]

    对于每个新句子,您将使用词汇表作为参考将单词转换为数字。

    【讨论】:

    • 但是矩阵的长度随着具有唯一词的句子的增加而增加,矩阵将变得空间化。在word2vec中,向量的维数只有300。
    • 是的,我提到的第一个选项就是这种情况。但不是第二种选择。只有词汇量会随着独特词的增加而增加。但是,句子向量的长度将与句子中的单词数完全相同。
    【解决方案3】:

    word2vec 是一种创建词嵌入的算法,您可以在此处阅读详细信息https://www.tensorflow.org/tutorials/word2vec

    您可以在自己的数据集上运行此算法,或使用 Google(或其他方)已在数十亿文档上运行的保存的词嵌入。

    这个想法是将每个单词映射为某个 n 维向量空间中的密集向量,从而包含更多关于单词及其关系的信息。

    简单地说,每个单词都由一个唯一的数字列表表示,现在可以对单词、句子和文档进行数学运算。

    【讨论】:

      猜你喜欢
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 2019-09-22
      • 2017-11-30
      • 1970-01-01
      • 2020-05-27
      相关资源
      最近更新 更多