Word Embedding 如何處理未登入詞?

時間 2021-05-07 10:25:25

1樓:張小白

1.直接當做unk處理;

2.使用預訓練詞向量;

3.使用ELMo等預訓練語言模型;

4.考慮更細粒度,比如subwords技術,可能需要重頭開始訓練詞向量;

暫時想到這麼多!

2樓:摸魚專家

BPEmb: Tokenization-free Pre-trained Subword Embeddings in 275 Languages

Enriching Word Vectors with Subword Information

3樓:小明是個畫家

OOV可以根據語料(或者特定domain語料)中非OOV的詞向量統計均值mean、方差std,然後根據正態分佈N~(mean,std)生成OOV的詞向量。

或者使用char CNN等。

4樓:夕小瑤

其實大部分NLP場景對OOV都不會太敏感,一般能帶來的穩定收益很小。我曾經在Yelp還是yahoo answers資料集上做過乙個很無聊的實驗,就是把模型訓練好後,把包含oov的測試集樣本抽出來單獨評測效能,結果竟然發現效能沒怎麼掉!如果你真的很介意oov的問題,不妨跟我一樣使用這種方法測試一下。

如果要認真對待,那麼一種理想的做法是把未登陸詞也歸成幾類。比如純數字的未登陸詞,純符號的未登陸詞,純中文的未登陸詞,其他型別OOV等(前提是這些類別跟你任務相關),或者簡單粗暴一點直接打個pos tag,然後將這種策略在詞向量pretrain的階段就應用上,這樣就緩解了簡單粗暴將所有的未登陸詞都劃歸為UNK導致的資訊丟失。另外,如果你OOV切分的類別多的話,pretrain階段的時候可以把詞頻閾值設定的高一些以增加訓練集裡的OOV,使得這些OOV embeddings得到充分的訓練。

至於使用0向量還是隨機取樣來初始化,一般在資料集level上看不出明顯的區別(除非你訓練時把它fix住了)。當然,你要是把OOV和PAD的embedding做引數共享的話,有時影響就會讓你懷疑人生了,極力不建議這倆功能性token合併。

另外就是其他回答裡提到的,在使用ELMo、BERT這些上下文相關的模型抽特徵時會進一步弱化OOV的影響。

總之,打出來oov後,掃一眼,只要不是跟任務特別相關,那就別太糾結啦。先把其他事兒處理好再回過頭照顧一下oov即可

5樓:lshz

未登入詞如果都使用全0或者其他統一的乙個預設向量,是會引起語義漂移的問題,尤其對於短文本。比如若不同文字中出現大比例未登入詞,最終語義向量會被帶入到同乙個狹窄語義空間中,從而影響下一步任務處理。

拋磚引玉一下。方式可以設定n個桶,每個桶對應分布均勻的向量,詞經過雜湊等方式對映到桶中,這樣可以保證同乙個詞對應的語義向量的一致性,n夠大也可以有語義區分。

當然這是折中之法之一,最好還是減少未命中率。用BERT等用字粒度的預處理模型,也可以解決這種問題。

6樓:突觸多巴胺

對在預訓練embedding上沒有找到的未登入詞,可以嘗試在模型訓練階段給未登入詞維護乙個字典,將其輸入另乙個embeding層。

具體的說,給模型準備兩個embedding層,乙個載入預訓練的Word2Vec,另乙個random initialize後訓練未登入詞。

若題主對這個idea有興趣,後續再補充reference。

7樓:[已重置]

不是做這個的,但是就我的理解,word embedding實際上構建乙個relational system,考察的是資料之間的相對關係,(這個和物理中的思路是一樣的),如果是未登入的資料,顯然這種相對關係是無法建立起來的,任何人為的設定都無法保證效能,唯一的方法只能是通過訓練考察相對關係。

8樓:

個人有幾點想法

1. 使用default向量解決

2. 多預留空間,增量訓練

3. 拆分成更小單元,如字元單字筆畫等

4. 使用大量未登入詞的上下文來表示未登入詞5. 組合使用上面方法

9樓:Alpaca

加unk詞,oov的詞都assign到這上面,這是通常做法。而且有太多unk words說不定是你資料處理有問題,試試normalize一下。

10樓:

同意 @追汽車的狗 的回答。

將其他人做的大規模中文資料集預訓練好的embedding layer儲存下來。訓練的時候,將你自己的中文資料集輸入進去,可以解決未登入詞問題。

你的資料集太小,全0恐怕效果不好,除非你的語料在用word2vec之前至少幾個g。

關閉大規模未登入詞問題,我覺得你可以參照matrix67的idea:https://

blog.csdn.net/sinat_337

31745/article/details/79382720

另外,word2vec恐怕不太適合,建議你使用斯坦福的glove

glove介紹:

GloVe is an unsupervised learning algorithm for obtaining vector representations for words. Training is performed on aggregated global word-word co-occurrence statistics from a corpus, and the resulting representations showcase interesting linear substructures of the word vector space.

11樓:瑪莉蓓爾

我自己做實驗的時候,辦法是碰到未登入詞的時候讓程式隨機生成乙個向量(np.random.random),範圍在[0,1)之間,維度跟word2vec設定的維度一樣就行了。

不能保證效果變好,但是對於我的實驗來說可以做到不耽誤事。2333

12樓:

沒太理解題主的意思,就按照我的理解回答了。

一般來說word embedding是需要先在乙個比較大的訓練集裡單獨訓練,然後再將該訓練好的嵌入層用於其他學習任務。英語有一些lib是有訓練好的word embedding可以直接用,中文不太清楚。

另外,對於unknown word統一看成乙個「未知」詞就好,用0向量好像不是特別普遍的做法。

可以參考我的另乙個回答。

word embedding的所謂word analogy特性是有一定的應用性還是只是個玩具?

李韶華 個人認為這種特性儘管似乎在實踐中沒什麼卵用,但它間接支援了使用word embedding作為 NLP 任務的 feature。我無法給出嚴格的證明,只能在直覺上解釋一下。feature 的線性模型是機器學習裡乙個基本元件,在文字分類 情感分析 NER 等 NLP 任務裡也是如此。即使非線性...

word embedding 詞向量能否用於判別中文詞彙難易度?

很討厭裝 的回答,搞一大堆圖,結果沒卵用。我試舉例如下。訏謨遠大巨集偉的謀劃 涯涘水邊 岸。邊際 界限。惠允得到對方獲准的敬稱 窈然深遠貌 幽深貌。乖蹇不好 不順遂 臆度憑主觀猜測 犟嘴頂嘴,強辯。繁鬧繁榮熱鬧 落枕又名失枕。因睡覺時受寒或枕枕頭的姿勢不合適,以致脖子疼痛,轉動不便 撫掌拍手。多表示...

如何靜心 如何學習 如何專注 如何成為不平凡?

三文 在當下,你本身就是非凡之人。在當下,沒有時間,所以沒有 我 沒有 我 就沒有了我的身份和故事,也沒有了煩惱和問題。只剩下真實的自己,圓滿,完美和永恆的自己。如有不適感 外在或內在 就體會著它的波動,清醒地受苦。注意力會使它化解。這是 臣服 是最好的修行法門,也是古時的 靜心 化解不適感後,就可...