如何规范不同长度句子中单词的概率?



假设我们有一个RNN模型,它输出在语料库上训练的给定上下文(或没有上下文)的单词的概率。 我们可以将每个单词的概率链在一个序列中,以获得句子本身的整体概率。但是,因为我们是链接的,句子的概率(或可能性)会随着长度的增加而下降。即使我们使用对数概率,情况也是如此。

无论如何,我们可以将这些概率归一化吗?这是我在构建语言模型时面临的一个有趣的子问题。我有一个900万句话的语料库,其长度从2-30不等。但是所有的句子都是有效的,我用这些作为语料库来训练LM。

现在,我正在获取数据子集并对其进行更改,例如将句子改组或切成两半,在随机单词前置或附加一个单词等等。这是为了创造一个不需要有效的"假句子"。我想做的是获得所有有效句子可能性的某种阈值,然后当我使用 RNN 计算假句子的概率时,它应该相当小或与计算的阈值不同。

TLDR; 像这样的句子

"the cat sat on the red mat"
"the cat sat on a mat"
"a cat sat on the red mat with brown coffee stains"

都应该具有可比较的概率/分数/指标 而像这样的句子

"cat cat mat on the brown red sat is"
"not mat in door on cat"

分数较低。

您可以引入一个特殊的单词END-OF-SENTENCE,并预测其概率以及其余单词。 在这种情况下,您将能够正确对句子长度的分布进行建模。在Jurafsky的NLP书中的练习4中有一个很好的例子。

事实上,"一只猫坐在带有棕色咖啡渍的红色垫子上 END"这句话更有可能是"一只猫坐在带有 END 的红色垫子上",只是因为句子很少以"with"结尾。如果你的RNN足够好,它会反映这一点。

如果您仍然想规范化句子概率,则可以计算困惑度(每个单词的平均对数概率),就像在这个问题中,该概念用简单的 1 克模型显示。

最新更新