初始化词汇外 (OOV) 标记

Initializing Out of Vocabulary (OOV) tokens

我正在为 NLP 任务构建 TensorFlow 模型,我正在使用预训练的 Glove 300d word-vector/embedding 数据集。

显然有些标记无法解析为嵌入,因为它们没有包含在词向量嵌入模型的训练数据集中,例如罕见的名字。

我可以用 0 的向量替换这些标记,但与其将这些信息丢在地上,我更喜欢以某种方式对其进行编码并包含到我的训练数据中。

说,我有 'raijin' 个词,它不能解析为嵌入向量,用 Glove 嵌入数据集对它进行一致编码的最佳方法是什么?将其转换为 300d 向量的最佳方法是什么?

谢谢。

与其将所有 Out of Vocabulary 标记分配给一个共同的 UNK 向量(零),不如为它们分配一个唯一的随机向量。至少这样,当你发现它们与任何其他词之间的相似性时,它们中的每一个都是独一无二的,模型可以从中学到一些东西。在 UNK case 中,它们都是相同的,因此所有 UNK 词都将被视为具有相同的上下文。

我尝试了这种方法,使用 LSTM 模型在 Quora Duplicate question pair detection 数据集上获得了 3% 的准确度提升。

最好看看关于通过生成嵌入处理 'oov' 标记的 EMNLP 论文

Mimicking Word Embeddings using Subword RNNs