![](/img/trans.png)
[英]How to add missing words vectors in GoogleNews-vectors-negative300.bin pre-trained model?
[英]Handling OOV words in GoogleNews-vectors-negative300.bin
我需要為標記的句子的每個單詞計算單詞向量,如下所示:
['my', 'aunt', 'give', 'me', 'a', 'teddy', 'ruxpin'].
如果我使用的是經過預訓練的[fastText] [1]嵌入:facebook的cc.en.300.bin.gz。 我可以通過OOV得到。 但是,當我從GoogleNews-vectors-negative300.bin使用Google的word2vec時,它將返回InvalidKey錯誤。 我的問題是如何計算OOV的單詞向量呢? 我在網上搜索,找不到任何東西。 當然,執行此操作的方法是刪除所有Google的word2vec中未列出的單詞。 但是,我注意到16134中只有5550個詞完全嵌入了單詞中。
我也做了
model = gensim.models.KeyedVectors.load_word2vec_format('/content/drive/My Drive/Colab Notebooks/GoogleNews-vectors-negative300.bin', binary=True)
model.train(sentences_with_OOV_words)
但是,tensorflow 2返回錯誤。
任何幫助將不勝感激。
如果未找到vocab,請使用相同大小的零矢量初始化它們(Google word2vec應該是300個尺寸的矢量):
try:
word_vector = model.wv.get_vector('your_word_here')
except KeyError:
word_vector = np.zeros((300,))
GoogleNews
向量集是單詞到向量的簡單映射。 其中沒有工具(或創建它的算法)可以為未知單詞合成矢量。
(類似地,如果您將一個簡單的向量集作為KeyedVectors
加載到gensim
中,就沒有機會在結果對象上運行train()
,如您的問題代碼所示。它不是一個完全可訓練的模型,而只是一個向量集合)
您可以使用in
關鍵字檢查單詞是否可用。 正如其他答案所指出的那樣,您可以選擇對此類單詞使用一些插入值(例如全零向量)。
但是通常最好完全忽略這些單詞-假設它們甚至不在您的文本中。 (相反,使用零向量,然后將該零向量輸入系統的其他部分,可以使這些未知詞從本質上減輕附近其他詞向量的影響,而這通常不是您想要的。)
太棒了! 非常感謝你。
def get_vectorOOV(s):
try:
return np.array(model.wv.get_vector(s))
except KeyError:
return np.zeros((300,))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.