【问题标题】:How do you create Bag-of-Words feature vector after applying GloVe embedding?应用 GloVe 嵌入后如何创建词袋特征向量?
【发布时间】:2019-09-16 20:11:03
【问题描述】:

如果我有两条电影评论:

"this was a really good movie" and "i did not like this movie at all"

我对它们应用 GloVe 嵌入,我将得到两个向量,其中包含多个单词向量,如下所示:

1st Review: [[300 Floats],[300 Floats],[300 Floats],[300 Floats],[300 Floats],[300 Floats]] 
2nd Review: [[300 Floats],[300 Floats],[300 Floats],[300 Floats],[300 Floats],[300 Floats],[300 Floats],[300 Floats]]

基本上,评论中的每个单词都会被转换成一个 300 元素的浮点数数组。由于数组是可变长度的,我不能将它们插入到分类器中。

我想过做某种词袋表示,但现在单词已经变成数字了,我不知道如何实现它。

【问题讨论】:

  • 或者您可以尝试使用 SpaCy 文档向量 spacy.io/api/doc#vector 从整个评论创建向量,它们应该具有相同的长度 - 每个 384 项。

标签: machine-learning nlp sentiment-analysis libsvm glove


【解决方案1】:

仅当您将单词作为离散单元使用时,词袋表示才有意义。如果您想使用 SVM 而没有神经网络,则可以使用均值池或最大池(即,仅在句子长度上取平均值或最大值)进行嵌入。

在神经网络中,嵌入是使用 CNN 或 RNN 处理的,它们基本上保留重要信息并丢弃其余信息。由于您在 SVM 模型中没有类似的东西,因此合理的做法是删除停用词。

【讨论】:

  • 您能解释一下我将如何使用均值池吗?我是否只需将单个词向量相加,然后除以词向量数量的长度?
  • 是的,确切地说,加和除以长度。
  • 我真的很惊讶你可以做到这一点而不会丢失句子中单词的表示。分类器无法知道原始单词是什么。
猜你喜欢
  • 2019-03-15
  • 1970-01-01
  • 2016-09-27
  • 2018-02-14
  • 2016-02-12
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多