【发布时间】:2018-03-11 15:31:51
【问题描述】:
我有句子。我使用 word2vec 将单词嵌入向量。例如,假设我有一个包含 5 个单词的句子。所以我得到了句子的 5 个不同的向量(每个单词一个)。这是最好的方法将完整的句子作为单个向量传递给 ANN?
【问题讨论】:
标签: neural-network artificial-intelligence recurrent-neural-network sentiment-analysis
我有句子。我使用 word2vec 将单词嵌入向量。例如,假设我有一个包含 5 个单词的句子。所以我得到了句子的 5 个不同的向量(每个单词一个)。这是最好的方法将完整的句子作为单个向量传递给 ANN?
【问题讨论】:
标签: neural-network artificial-intelligence recurrent-neural-network sentiment-analysis
这是一个悬而未决的问题;存在许多创建有意义的句子向量的方法。
向量加法等元素操作足以满足大多数简单的任务,但随着句子变大或手头的任务要求越来越高,显然会出现大量的信息丢失。递归神经网络非常擅长创建任务特定的句子嵌入,但显然这些需要训练数据和对机器学习的一些熟悉。从研究的角度来看,通用句子嵌入是最有趣的,但可能不是您想要的。
【讨论】:
您可以使用词袋概念,如此处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 是一种创建词嵌入的算法,您可以在此处阅读详细信息https://www.tensorflow.org/tutorials/word2vec
您可以在自己的数据集上运行此算法,或使用 Google(或其他方)已在数十亿文档上运行的保存的词嵌入。
这个想法是将每个单词映射为某个 n 维向量空间中的密集向量,从而包含更多关于单词及其关系的信息。
简单地说,每个单词都由一个唯一的数字列表表示,现在可以对单词、句子和文档进行数学运算。
【讨论】: