如何在文本生成中处理 <UKN> 个标记

How to handle <UKN> tokens in text generation

在我的文本生成数据集中,我已将所有不常用词转换为标记(未知词),正如大多数文本生成文献所建议的那样。

但是,当训练 RNN 将句子的一部分作为输入并预测句子的其余部分时,我不确定应该如何阻止网络生成标记。 当网络在训练集中遇到一个未知(不常见)的单词时,它的输出应该是什么?

示例:
句子:I went to the mall and bought a <ukn> and some groceries
网络输入:I went to the mall and bought a
当前网络输出:<unk> and some groceries
期望的网络输出:??? and some groceries

它应该输出什么而不是 <unk>

我不想构建一个输出它不知道的单词的生成器。

RNN 将为您提供最有可能出现在文本中的标记样本。在您的代码中,您选择概率最高的标记,在本例中为 «unk»。

在这种情况下,您可以省略 «ukn» 标记,只需采用 RNN 根据其呈现的概率值建议的下一个最有可能的标记

我偶尔见过 <UNK>,但从未见过 <UKN>

在词嵌入训练中更常见的是完全丢弃稀有词,以保持词汇量紧凑,并避免在其他词的训练中使用没有足够示例的词作为 'noise'。 (将它们全部折叠成一个单一的魔法未知标记——然后变得比真实标记更频繁!——只会倾向于将一个没有明确含义的大的不自然的伪词扔到其他单词的上下文。)

因此,我不确定将其描述为 "suggested by most text-generation literature" 是否准确。在某种程度上,当预测是 UNK 标记时,没有任何消息来源暗示这一点,然后也建议做什么?

如果您的特定应用程序需要任何真正的已知词,即使 NN 对正确的词是任何已知词的信心很低,看起来您只是阅读了下一个最好的非 <UKN> 来自 NN 的预测,如 所建议的那样。