问题描述
我见过几个在神经网络模型中使用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
数组。