python - 如何处理预训练 Glove 词嵌入中看不见的单词以避免按键错误?

标签 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

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

最佳答案

我建议如下

  • 将所有缺失的单词分配给某个唯一向量(例如全零)
  • 找到与其相似的单词并使用它们的嵌入:
    • 尝试单词的 ngram(前缀或后缀)并检查它是否在词汇中
    • 词干并检查它是否在词汇中
  • 最简单的解决方案:使用 FastText。它从子词 n 元语法中组装词向量,使其能够处理词汇表之外的单词。

关于python - 如何处理预训练 Glove 词嵌入中看不见的单词以避免按键错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56286510/

相关文章:

neural-network - 使用预训练的词嵌入 - 如何为未知/OOV token 创建向量?

python将独特的项目添加到一个巨大的表中

python - OSError :/usr/lib/libyara. so:无法打开共享对象文件:没有这样的文件或目录

Python 或 linux 命令行检测 .tar.gz 中的目录名称

java - Maltparser 错误

python-3.x - Python 字典特征提取

python - 如何从预先训练的词嵌入数据集创建 Keras 嵌入层?

python-3.x - 如何存储词向量嵌入?

python - 转义包含在某些 html 标签中的引号

nlp - CBOW VS跳过-gram : why invert context and target words?