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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何规范不同长度句子中单词的概率?相关的知识,希望对你有一定的参考价值。

假设我们有一个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 book的练习4中有一个很好的例子。

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

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

以上是关于如何规范不同长度句子中单词的概率?的主要内容,如果未能解决你的问题,请参考以下文章

如何在给定上下文的句子中获取特定标记(单词)的概率

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

Python中一个句子怎么样找出所有的长度最长的单词?

统计分词

机器学习常用算法思想

返回句子中最大单词的长度[重复]