[SRILM User List] -posterior-decode vs -viterbi-decode

Andreas Stolcke stolcke at speech.sri.com
Thu Jan 21 14:02:33 PST 2010

In message <alpine.DEB.1.10.1001211344270.31067 at brutus.ling.ohio-state.edu>you 
> Hello,
> I am trying to work out the differences between two ways of decoding an 
> HTK lattice using higher-order ngram models.  My main question is, does 
> the -posterior-decode option take into account the higher-order n-grams?
> I am using these commands:
> lattice-tool -read-htk -in-lattice-list htklats -lm expD9a.lm
>   -viterbi-decode -unk -keep-unk -order $i
> or
> lattice-tool -read-htk -in-lattice htklats -lm expD9a.lm 
> -posterior-decode -unk -keep-unk -order $i

As of version 1.5.10, the LM rescoring happens BEFORE word posterior
decoding, so yes, it should take the new LM into account,
but only if you have the latest version of SRILM.

> where expD9a.lm includes up to 6-grams, is calculated with Witten-Bell 
> discounting, and $i ranges from 3 to 6. I get the following results, 
> which represent the accuracy of the chosen paths for the 80 utterances in 
> htklats:
> For -viterbi-decode:
> 3-grams 72.34
> 4-grams 72.42
> 5-grams 72.36
> 6-grams 72.36
> For -posterior-decode:
> 3-grams 74.43
> 4-grams 74.43
> 5-grams 74.43
> 6-grams 74.43
> In looking more closely at the -posterior-decode results, I'm pretty sure 
> it's giving the same best path every time, regardless of the order of the 
> LM.  Also, when I use the -debug 2 flag, I notice that with 
> -posterior-decode, this note:
> Lattice::expandToLM: starting expansion to general LM (maxNodes = 0) ...
> comes _after_ the best path is given.  Should I interpret this to mean 
> that the expansion (which I think means making the lattice include 
> higher-order probabilities) does not happen in time for the decode? Is 
> there a way to change that, since the posterior decode seems to be working 
> better than viterbi in this instance?

Get the latest version, the informational messages should appear in
a different order now.

And don't forget to use the -order option to specify the desired LM order.
The default is to only use trigrams, even if the LM file contains higher-order

> Any insight on how these two decode methods work, or what situations each 
> is more appropriate for, would be appreciated.

That's a longer story.  Read the papers on posterior-based (or 
"sausage") decoding for ASR (google scholar will get them for you).


More information about the SRILM-User mailing list