SRILM

时间:2016-03-31 16:17:57

标签: nlp n-gram language-model srilm

我正在尝试使用SRILM构建语言模型。 我有一个短语列表,我使用以下方法创建模型:

./ngram-count -text corpus.txt -order 3 -ukndiscount -interpolate -unk -lm corpus.lm

在此之后我试着做一些例子来看看不同短语的概率,结果发现它的对数概率 -0.9

问题是训练中有一些词的对数概率较低。例如,有5个" abatantuono" ,其对数概率 -4.8

我认为这很奇怪,因为短语<s> <unk> </s><s> abatantuono </s>更可能,而在训练集中,3-gram <s> abatantuono </s>也存在!

这可以在这里看到:

 % ./ngram -lm corpus.lm -ppl ../../../corpus.txt.test -debug 2 -unk
 reading 52147 1-grams
 reading 316818 2-grams
 reading 91463 3-grams
 abatantuono
     p( abatantuono | <s> )     = [2gram] 1.6643e-05 [ -4.77877 ]
     p( </s> | abatantuono ...)     = [3gram] 0.717486 [ -0.144186 ]
 1 sentences, 1 words, 0 OOVs
 0 zeroprobs, logprob= -4.92296 ppl= 289.386 ppl1= 83744.3

 abatantonno
     p( <unk> | <s> )   = [1gram] 0.00700236 [ -2.15476 ]
     p( </s> | <unk> ...)   = [1gram] 0.112416 [ -0.949172 ]
 1 sentences, 1 words, 0 OOVs
 0 zeroprobs, logprob= -3.10393 ppl= 35.6422 ppl1= 1270.36

 file ../../../corpus.txt.test: 2 sentences, 2 words, 0 OOVs
 0 zeroprobs, logprob= -8.02688 ppl= 101.56 ppl1= 10314.3

您认为问题是什么?

谢谢

1 个答案:

答案 0 :(得分:3)

这是SRILM的标记问题(请参阅第30页的Kenneth Heafield的thesis - 脚注及其关于SRILM的website注释)。质量分配给未知单词的方式可以为他们分配比训练数据中看到的罕见单词更高的概率。您可以查看KenLM软件包,该软件包仅具有Modified Kneser-Ney的实现(通常比Kneser-Ney平滑更好),但是以防止这种情况发生的方式对未知单词进行大量分配。