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

时间:2018-03-02 21:24:44

标签: machine-learning nlp deep-learning rnn language-model

假设我们有一个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"

得分较低。

1 个答案:

答案 0 :(得分:0)

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

实际上,句子“一只猫坐在红色的垫子上,棕色的咖啡渍END”更有可能是“一只猫坐在红色的垫子上用END”,只是因为那些很少以“with”结束。如果您的RNN足够好,它将反映出这一点。

如果您仍想对句子概率进行标准化,则可以计算困惑(每个单词的平均对数概率),例如在this question中,其中概念用简单的1克模型显示