[SRILM User List] Interpreting ngram -ppl output in case of backoff
Sander Maijers
S.N.Maijers at student.ru.nl
Wed Jun 5 04:23:11 PDT 2013
On 05-06-13 07:58, Andreas Stolcke wrote:
> On 6/1/2013 6:00 AM, Sander Maijers wrote:
>> Andreas, you wrote:
>> > If the word is 'a' and the last two words 'b' and 'c' (in that
>> order), and you have a bigram hit (output says '[2gram]' ), you'd
>> have to look up the bigram log probability for 'a c' and add to that
>> the backoff weight for 'b c'.
>> I interpret this as P(a | b c). If that is correct, then shouldn't I
>> actually look up the line in the ARPA LM with "c a" (reverse)?
> You are correct, the backoff bigram would be 'c a' .
>> Can you further comment to clear up my remaining confusion please ...
>>
>> 1. The word "Albert" is not in the word list/vocabulary. Nor are
>> there any N-grams with "Albert". This confuses me. I cannot trace the
>> appropriate N-gram that lead to the logprob that was reported by
>> 'ngram'. It seems that I cannot directly see in the 'ngram' output
>> if/when there had been any backing off during the LM lookups for this
>> sentence. I assume that the word Albert was actually replaced with
>> [unk], but in the ngram output, such is not displayed. There also 0
>> OOVs reported, which strikes me as odd. All in all I believe that the
>> following N-grams were looked up:
>>
>> -1.358477 <s> dat -0.6622628
>> -1.334724 dat [unk] -0.0686222
>> -0.6776069 dat [unk] [unk]
>>
>> for the 'n gram' output
>>
>> dat Albert Heijn het doet zou niet de aanleiding zijn
>> p( dat | <s> ) = 0.0438046 [ -1.35848 ]
>> p( Albert | dat ...) = 0.0100695 [ -1.99699 ]
>> p( Heijn | Albert ...) = 0.210084 [ -0.677607 ]
>>
>> How did 'ngram' come to the -1.99699 logprob?
>
> I'm not sure how exactly you are invoking ngram. But if your ppl
> output shows the original words and not the [unk] word that means
> your OOV words were NOT mapped to [unk].
> Also, I'm confused by that had that your -debug 2 output doesn't
> indicate what order of ngram was hit.
>
> For reference, if you invoke ngram on the 3gram model that is packaged
> with SRILM:
>
> % ngram -unk -map-unk '@reject@' -lm
> $SRILM/lm/test/tests/ngram-count-gt/swbd.3bo.gz -debug 2 -ppl -
>
> and feed two sentences
>
> hi there
> hix there
>
> the output should look like this:
>
> hi there
> p( hi | <s> ) = [2gram] 0.000625719 [ -3.20362 ]
> p( there | hi ...) = [3gram] 0.0131176 [ -1.88215 ]
> p( </s> | there ...) = [2gram] 0.137458 [ -0.86183 ]
> 1 sentences, 2 words, 0 OOVs
> 0 zeroprobs, logprob= -5.9476 ppl= 96.0578 ppl1= 941.453
>
> hix there
> p( @reject@ | <s> ) = [2gram] 0.00733392 [ -2.13466 ]
> p( there | @reject@ ...) = [3gram] 0.00498615 [ -2.30223 ]
> p( </s> | there ...) = [2gram] 0.0603144 [ -1.21958 ]
> 1 sentences, 2 words, 0 OOVs
> 0 zeroprobs, logprob= -5.65648 ppl= 76.8232 ppl1= 673.347
>
> Notice the [2gram] [3gram] indicators, and notice how the OOV "hix" is
> mapped to the unknown word token "@reject@" (that's the label that
> this particular model uses).
>
> So you must be invoking ngram in a difference way and that may have
> something to do with the problems you have interpreting the output.
>
> Andreas
Yes, there is confusion here. I did not specify the complete command
line that I used to invoke 'ngram', only the options that I believed
were relevant. Actually, I used the "-use-server" parameter (for the
ngram client invocation) ... I haven't read that the debug output is
more limited in this sense if you use the 'ngram' server. And I had
specified the same debug level with both the "'ngram' -server-port ..."
and "ngram -use-server ..." invocations) .
Still, there are no logprobs of "-1.99699" in my LM, so I do not know
where that comes from. (I tried to look for the values in the ARPA LM
with fewer decimals: the 'ngram' output logprobs and the ARPA logprobs
are not exactly the same in my output). There simply must be OOVs in
that "Albert Heijn" sentence but they weren't detected, it seems? Could
this be problem that has to do with the 'ngram' server mode?
If you are interested in it, I can give you the relevant ARPA LM and the
command lines used for a test case.
Sander
More information about the SRILM-User
mailing list