Python 我们如何使用一个随机森林来使用单词嵌入进行句子分类

Python 我们如何使用一个随机森林来使用单词嵌入进行句子分类,python,nlp,random-forest,word-embedding,Python,Nlp,Random Forest,Word Embedding,当我们有一个随机森林时,我们有n个输入和m个特征,例如3个观测值和2个特征 X=[[1,23],[0,-12],-0.5,29]] y=[1,0,1] 我们可以训练一个随机的森林 来自sklearn.employ的 模型=随机森林() 模型拟合(X,y) 如果我用一个100维向量来嵌入一个单词,我们如何创建X矩阵,其中每个输入都是一个句子 假设我们有以下三维嵌入单词[“我”、“喜欢”、“狗”、“猫”]: I=[-0.5,0,1] like=[5,2,3] 狗=[1,2,3] 猫=[3,2,1

当我们有一个随机森林时,我们有n个输入和m个特征,例如3个观测值和2个特征

X=[[1,23],[0,-12],-0.5,29]]
y=[1,0,1]
我们可以训练一个随机的森林

来自sklearn.employ的

模型=随机森林()
模型拟合(X,y)
如果我用一个100维向量来嵌入一个单词,我们如何创建
X
矩阵,其中每个输入都是一个句子

假设我们有以下三维嵌入单词
[“我”、“喜欢”、“狗”、“猫”]

I=[-0.5,0,1]
like=[5,2,3]
狗=[1,2,3]
猫=[3,2,1]
然后数据集[“我喜欢狗”,“我喜欢猫”]将是

X=[
[[-0.5,0,1], [5,2,3], [1,2,3]],
[[-0.5,0,1], [5,2,3], [3,2,1]]
]
y=[“爱狗者”、“爱猫者”]

RF自然无法训练,因此产生erropr
ValueError:Found数组的dim为3。预计估计量我认为对三维输入执行随机森林分类器是不可能的,但作为一种替代方法,您可以使用句子嵌入而不是单词嵌入。因此,您的输入数据将是该分类器预期的二维(
(n个样本,n个特征)
) 获取句子嵌入向量的方法有很多,包括Doc2Vec和SentenceBERT,但最简单和常用的方法是对所有单词嵌入向量进行元素平均。
在您提供的示例中,嵌入长度被认为是3。假设句子是“我喜欢狗”。因此,句子嵌入向量的计算如下:

I = [-0.5,0,1]
like = [5,2,3]
dogs = [1,2,3]
cats = [3,2,1]

# sentence: 'I like dogs'
sentence = [-0.5+5+1, 0+2+2, 1+3+3] / 3
         = [5.5, 4, 7] / 3
         = [1.8333, 1.3333, 2.3333]

关于那件事,你有什么推荐信吗?我在训练神经网络时也遇到了同样的问题(例如,每个特征都是100维的)。在本文的第三部分中,对向量平均法有一些很好的解释。对于RandomForest分类器也使用相同的方法。但是神经网络在处理单词嵌入方面应该没有任何问题。例如,可以使用in Keras库处理这些向量。