訓練詞向量中的二次取樣

2021-10-03 08:40:11 字數 1098 閱讀 2809

文字資料中一般會出現一些高頻詞,如英文中的「the」「a」和「in」。通常來說,在乙個背景視窗中,乙個詞(如「chip」)和較低頻詞(如「microprocessor」)同時出現比和較高頻詞(如「the」)同時出現對訓練詞嵌入模型更有益。因此,訓練詞嵌入模型時可以對詞進行二次取樣。 具體來說,資料集中每個被索引詞 w

iw_i

wi​ 將有一定概率被丟棄,該丟棄概率為

p (w

i)

=max⁡(

1−tf

(wi)

,0

)p(w_i)=\max(1-\sqrt},0)

p(wi​)

=max(1

−f(w

i​)t

​​,0

)其中 f(w

i)

f(w_i)

f(wi​)

是資料集中詞 w

iw_i

wi​ 的個數與總詞數之比,常數 t

tt 是乙個超引數(實驗中設為 10−

410^

10−4

)。可見,只有當 f(w

i)

>

tf(w_i)>t

f(wi​)

>

t 時,我們才有可能在二次取樣中丟棄詞 w

iw_i

wi​,並且越高頻的詞被丟棄的概率越大。

#使用二次取樣演算法(subsampling)處理語料,強化訓練效果

def subsampling(corpus, word2id_freq):

#這個discard函式決定了乙個詞會不會被替換,這個函式是具有隨機性的,每次呼叫結果不同

#如果乙個詞的頻率很大,那麼它被遺棄的概率就很大

def discard(word_id):

return random.uniform(0, 1) < 1 - math.sqrt(

1e-4 / word2id_freq[word_id] * len(corpus))

corpus = [word for word in corpus if not discard(word)]

return corpus

bitmap的二次取樣

bitmap二次取樣 一 二次取樣 一 意義或目的 1 用bitmapfactory解碼一張時,有時會遇到該錯誤。這往往是由於過大造成的。要想正常使用,則需要分配更少的記憶體空間來儲存。bitmapfactory.decodefile imagefile 2 bitmapfactory.option...

pytorch中如何使用預訓練詞向量

不涉及具體 只是記錄一下自己的疑惑。我們知道對於在pytorch中,我們通過構建乙個詞向量矩陣物件。這個時候物件矩陣是隨機初始化的,然後我們的輸入是單詞的數值表達,也就是一些索引。那麼我們會根據索引,賦予每個單詞獨一無二的乙個詞向量表達。在其後的神經網路訓練過程中,每個單詞對應獨一無二的索引,從而對...

Spark中的二次排序

首先要先定義乙個自定義的型別,實現scala提供的ordered介面並實現其方法,方法就是排序的邏輯。這裡我對兩列數字進行排序,如下 package cn.spark.study.core class secondarysortkey val first int,val second int ext...