2

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

有一个较低的分数。

4

1 回答 1

0

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

确实,句子“A cat sat on the red mat with brown cafes END”比“A cat sat on the red mat with END”的可能性更大,因为句子很少以“with”结尾。如果你的 RNN 足够好,它就会反映这一点。

如果您仍想标准化句子概率,您可以计算perplexity(每个单词的平均对数概率),就像在这个问题中一样,该概念用一个简单的 1-gram 模型显示。

于 2018-03-02T22:06:23.660 回答