ARPA文件中的n-gram概率计数

时间:2015-03-19 17:56:44

标签: nlp n-gram language-model

我开始研究与语言建模相关的问题,但有些计算并不清楚。例如,请考虑以下简单文本:

I am Sam Sam I am I do not like green eggs and ham

我使用berkelylm来创建n-gram概率计数和ARPA文件。这是生成的ARPA文件:

\data\
ngram 1=12
ngram 2=14
ngram 3=14
ngram 4=13
ngram 5=12
ngram 6=11
ngram 7=10
ngram 8=0
ngram 9=0

\1-grams:
-1.146128   am  -0.062148
-1.146128   like    -0.062148
-1.146128   not -0.062148
-99.000000  <s> -0.062148
-1.146128   green   -0.062148
-1.146128   and -0.062148
-0.669007   I   -0.238239
-0.845098   Sam -0.062148
-1.146128   </s>
-1.146128   ham -0.062148
-1.146128   eggs    -0.062148
-1.146128   do  -0.062148

\2-grams:
-0.720159   am Sam
-0.597943   Sam I
-0.709435   and ham
-0.709435   not like
-0.709435   like green
-0.720159   Sam Sam
-0.709435   ham </s>
-0.709435   green eggs
-0.496144   <s> I
-0.377737   I am
-0.597943   am I
-0.709435   do not
-0.709435   eggs and
-1.066947   I do

\3-grams:
-0.597943   Sam Sam I
-0.377737   <s> I am
-0.709435   do not like
-0.720159   I am Sam
-1.066947   am I do
-0.377737   Sam I am
-0.709435   green eggs and
-0.709435   like green eggs
-0.597943   I am I
-0.709435   eggs and ham
-0.709435   and ham </s>
-0.709435   I do not
-0.709435   not like green
-0.720159   am Sam Sam

1克的概率计数很明显,但我不清楚如何创建2克和3克的数据。 那里总共有13个双子星座和二元宝贝&#34;我是&#34;出现两次所以,2克概率计算为&#34;我是&#34;应该是log(2/13)或-0.81291,以对数刻度,但在生成的文件中是-0.37。

由于我缺乏经验,我可能会遗漏一些东西,但我会感谢一个解释计算的例子。

感谢。

1 个答案:

答案 0 :(得分:2)

您可能错过的是计算日志概率时使用的平滑技术。平滑从n-gram中获取一些概率权重并将其转换为看不见的ngrams,以便像#Sam; I Sam&#34;不会得到零概率(因为它从未见过),但考虑到&#34; I&#34;的非单位概率的概率。和#34; Sam&#34;。

根据我在BerkeleyLM文档中看到的,它使用的是修改后的KN平滑,这是LM工具中最受欢迎的。您可以阅读有关平滑here的详细信息,并查看SRILM's man page中不同平滑方法的精确计算。