文字資料中一般會出現一些高頻詞,如英文中的「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...