如何处理预训练的手套词嵌入中看不见的词,以避免键盘错误?

时间:2019-05-24 05:46:39

标签: python nlp word-embedding

我想从预先训练的手套嵌入中提取特征。但是我得到Keyerror的某些字眼。这是单词标记的列表。

words1=['nuclear','described', 'according', 'called','physics', 'account','interesting','holes','theoretical','like','space','radiation','property','impulsed','darkfield']

我从“冲动”,“暗场”这两个词中得到了Keyerror,因为这可能是看不见的词。如何避免此错误? 。

这是我的完整代码:

gloveFile = "glove.6B.50d.txt"
import numpy as np
def loadGloveModel(gloveFile):
    print ("Loading Glove Model")
    with open(gloveFile, encoding="utf8" ) as f:
        content = f.readlines()
    model = {}
    for line in content:
        splitLine = line.split()
        word = splitLine[0]
        embedding = np.array([float(val) for val in splitLine[1:]])
        model[word] = embedding
    print ("Done.",len(model)," words loaded!")
    return model

model = loadGloveModel(gloveFile)

words1=['nuclear','described', 'according', 'called','physics', 'account','interesting','holes','theoretical','like','space','radiation','property','impulsed','darkfield']

import numpy as np
vector_2 = np.mean([model[word] for word in words1],axis=0) ## Got error message

“脉冲”字的错误消息

enter image description here

有什么办法可以跳过这些看不见的单词?

1 个答案:

答案 0 :(得分:0)

我建议在下面

  • 所有丢失的单词都分配给某个唯一的向量(例如全零)
  • 找到与之相似的词并使用其嵌入:
    • 尝试使用ngram(前缀或后缀)的单词,并检查其是否在vocab中
    • 对单词加词根并检查它是否在单词中
  • 最简单的解决方案:使用FastText。它从子词n-gram组合词向量,从而使其能够处理词汇量不足的词。