如何在统计算法中使用 Word2Vec CBOW?

问题描述

我见过几个在神经网络模型中使用CBOW的例子(虽然我没看懂)

我知道 Word2Vec 与 BOW 或 TFIDF 不相似,因为 CBOW 没有单一值

我看到的所有示例都使用神经网络。

我有两个问题

1- 我们可以将向量转换为单个值并将其放入数据帧中,以便我们可以在逻辑回归模型中使用它吗?

2- 是否有任何关于 CBOW 使用逻辑回归的简单代码

更多解释。

就我而言,我有一个语料库,我想对 BOW 和 CBOW 的主要特征进行比较

转换为 BOW 后

我得到这个数据集

RepID   Label   Cat   Dog   Snake   Rabbit  Apple Orange  ...
1       1       5     3     8       2       0 
2       0       1     0     0       6       9
3       1       4     1     5       1       7 

转换为 TFIDF 后

我得到这个数据集

RepID   Label   Cat   Dog   Snake   Rabbit  Apple Orange  ...
1       1       0.38     0.42    0.02    0.22   0.00   0.19
2       0       0.75     0.20    0.08    0.12   0.37   0.21
3       1       0.17     0.84    0.88    0.11   0.07   0.44

我正在观察每个模型中前 3 个特征的结果

所以我的数据集变成这样

BOW(我在这里为将被省略的值设置为 null)

RepID   Label    Cat   Dog   Snake   Rabbit  Apple Orange  ...
1       1        5      null    8    null   null   7
2       0        null   null    null    6   9   2
3       1        4      null    5    null   7   null

TFIDF(我在这里为将被省略的值设置为空)

RepID   Label   Cat   Dog   Snake   Rabbit  Apple Orange  ...
1       1       0.38     0.42    null    0.22   null   null
2       0       0.75     null    null    null   0.37   0.21
3       1       null     0.84    0.88    null   null   0.44

我现在想用 Word2Ven CBOW 做同样的事情

我想取CBOW模型中的最高值

RepID   Label  Cat   Dog   Snake   Rabbit  Apple Orange  ...
1       1      v11     v12    v13    v14   v15   v16
2       0      v21     v22    v23    v24   v25   v26
3       1      v31     v32    v33    v34   v35   v36

变成这样

RepID   Label    Cat   Dog   Snake   Rabbit  Apple Orange  ...
1       1        v11     null    v13    null   v15   null
2       0        null     null    v23    null   v25   v26
3       1        v31     null    v33    v34   null   null

解决方法

无论是内部训练方法,CBOW还是skip-gram,词向量始终是一个多维向量:它包含许多浮点数。

所以在一个层面上,这是一个“值”——其中“值”是一个向量。但它从来都不是一个数字。

词向量,即使具有所有维度,也绝对可以作为下游逻辑回归任务的输入。但是确切的细节取决于您正在操作的数据以及您打算实现的目标 - 因此您可能想要扩展您的问题,或询问更具体的后续问题,以及有关您正在使用的特定数据/任务的更多信息考虑。

另请注意:使用 scikit-learn 之类的库的管道会更频繁地执行此操作。将密集的高维词向量本身(或从词向量派生的其他特征)直接放入“数据帧”通常是一个错误,与使用更紧凑/原始格式的如此大的特征向量相比,增加了开销和间接性(比如说)numpy 数组。