簡體   English   中英

我們如何使用隨機森林進行詞嵌入的句子分類

[英]How do we use a Random Forest for sentence-classification using word-embedding

當我們有一個隨機森林時,我們有 n 個輸入和 m 個特征,例如我們有 3 個觀察和 2 個特征

X = [[1,23],[0,-12],[-0.5,29]]
y = [1,0,1]

我們可以訓練一個隨機森林

from sklearn.ensemble import RandomForestClassifier
model = RandomForest()
model.fit(X,y)

如果我使用 100 維向量進行詞嵌入,我們如何創建X矩陣,其中每個輸入都是一個句子?

假設我們有以下單詞["I","like","dogs","cats"]的 3 維嵌入:

I = [-0.5,0,1]
like = [5,2,3]
dogs = [1,2,3]
cats = [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 = ["dog-lover","cat-lover"]

RF 自然無法訓練,因此給出錯誤ValueError: Found array with dim 3. Estimator expected <= 2.

除了 RF 可能不適合 NLP - 有沒有辦法這樣做?

我認為在 3 維輸入上執行隨機森林分類器是不可能的,但作為一種替代方法,您可以使用句子嵌入而不是詞嵌入。 因此,您的輸入數據將是此分類器預期的二維( (n_samples, n_features) )。
獲取句子嵌入向量的方法有很多,包括Doc2VecSentenceBERT ,但最簡單和常用的方法是對所有詞嵌入向量進行元素平均。
在您提供的示例中,嵌入長度被認為是 3。假設句子是"I like dogs" 所以句子嵌入向量將計算如下:

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM