首页 > 解决方案 > 在解码过程中为词汇表外的单词使用 UNK 标记有什么意义?

问题描述

首先,我知道这个问题有点离题,但我已经尝试在其他地方提问但没有得到回应。

在词汇表中添加UNK标记是在 NLP 任务中处理 oov 单词的常规方法。将它用于编码是完全可以理解的,但是将它用于解码有什么意义呢?UNK我的意思是您永远不会期望您的解码器在预测期间生成令牌,对吗?

标签: neural-networkdeep-learningnlpmachine-translation

解决方案


根据您预处理训练数据的方式,您可能需要UNK在训练期间使用。即使你使用 BPE 或其他子词分割,OOV 也会出现在训练数据中,通常是一些奇怪的 UTF-8 东西,字母的片段,你根本不感兴趣等等。

例如,如果您将 WMT 训练数据用于英德翻译,进行 BPE 并获取词汇表,您的词汇表将包含数千个在训练数据中恰好出现一次的汉字。即使您将它们保留在词汇表中,模型也没有机会了解它们,甚至没有机会复制它们。UNK将它们表示为s是有意义的。

当然,你通常在推理时做的是阻止模型预测UNK标记,UNK总是不正确的。


推荐阅读