NLP LSTM 输入基本疑问

数据挖掘 机器学习 深度学习 nlp lstm rnn
2022-03-06 20:31:57

关于将文本转换为数字并将其提供给 LSTM,我有一个基本的疑问。我知道 OneHot、CountVectorizer、TfIDF、Word2vec 等不同的方法。我的疑问是,如果我们使用 Count Vectoriser 或 Tfidf,那么在 LSTM 中,我们必须为每个句子传递整个单词词汇表,因为那是TFIDF 和计数向量器如何对句子进行编码。我对吗?

我的第二个疑问是,如果我们使用 TFIDF 或 COuntVectorizer,每个单词都会根据其出现和频率而具有不同的值。这与学习和使用嵌入的 Word2Vec 形成对比。如果每次 LSTM 模型看到特定单词的不同值,它如何学习?就像在一个句子中,如果“Hi”这个词出现 6 次,它在其适当的索引中用数字 6 编码,而在另一个句子中,如果它出现 4 次,我们用值 4 编码。这是如何工作的?这没有意义。

1个回答

传统的词袋表示与词嵌入表示的区别在于:

  • 词袋:向量的每个索引代表一个特定的词。由于每个可能的单词都必须有一个索引,因此每个向量的维度确实必须是完整的词汇表大小。
  • 嵌入:单词和句子在(通常是预训练的)嵌入空间中表示。这个空间的维度是预定义的和任意的,没有办法直接知道每个索引代表什么。间接地,可以证明索引可以表示相当精确的语义概念。

无论如何,在这两种情况下,特征(可能会有所不同)都没有意义,它始终是代表特定语义概念的固定索引。

在您的示例中,假设单词“Hi”的索引为 1234:该特定索引包含 6 或 4 的事实允许模型识别这两个句子之间的相似性。请注意,在嵌入表示中,它也是承载该概念的索引。例如,也许“Hi”对于与“salutations”相关的维度具有重要价值,这将允许模型找到与“hello”、“dear X”等世界的相似性。