2016-03-31 11 views
1

Ich versuche, ein Sprachmodell mit SRILM zu bauen. Ich habe eine Liste von Phrasen und ich schaffen das Modell mit:Sprachmodell mit SRILM

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

Danach habe ich versucht, einige Beispiel zu machen, die Wahrscheinlichkeiten der verschiedenen Sätze zu sehen, und es stellte sich heraus, dass eine Protokollwahrscheinlichkeit -0,9 hat .

Das Problem ist, dass es einige Wörter im Training mit einer niedrigeren logarithmischen Wahrscheinlichkeit gibt. Zum Beispiel gibt es 5 "abatantuono" und seine Log-Wahrscheinlichkeit ist -4,8.

Ich denke, das ist seltsam, weil ein Satz <s> <unk> </s> wahrscheinlicher ist als <s> abatantuono </s> und im Trainingssatz ist auch das 3-Gramm <s> abatantuono </s> vorhanden!

Dies kann hier gesehen werden:

% ./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 

Was denken Sie, könnte das Problem sein?

Danke

Antwort

3

Dies ist ein gekennzeichnetes Problem der SRILM (siehe Kenneth Heafield des thesis - Fußnote auf Seite 30 und seine website Hinweise auf SRILM). Die Art und Weise, wie die Masse einem unbekannten Wort zugeordnet wird, kann ihnen eine höhere Wahrscheinlichkeit im Vergleich zu den seltenen Wörtern in den Trainingsdaten zuweisen. Sie können sich das KenLM-Paket anschauen, das nur Modifizierte Kneser-Ney implementiert (im Allgemeinen besser als Kneser-Ney-Glättung), aber die Massenzuordnung zu unbekannten Wörtern so durchführt, dass dies nicht geschieht.

+0

Ich versuchte KenLM und es funktionierte wie erwartet. Vielen Dank! – Daniele