Given a string of phones find the most probable sequence of words
it realizes.
We are given as an input a sequence of phones.
Each phone gets one instant of time:
aa | n | iy | dh | ax |
1 | 2 | 3 | 4 | 5 |
We use a language to model to assign
probabilities to sequences of phones.
Paths through the model determine sequences
of words. Our output is the most probable
sequence of words:
We've simultaneously accomplished decoding and segmentation:
In general a state s can be reached at time t via a number of paths. For each path reaching state s at time t, we compute a path probability. We call the best of these viterbi(s,t).
Basic idea: For a state s' compatible with the input phone at time t+1, compute viterbi(s',t+1), assuming we know viterbi(s,t) for all s.
path-prob(s'|s,t) = | viterbi(s,t) * | a[s,s'] |
probability of path to s' through s |
best path score for state s at time t |
transition probability for s => s' |
Key idea:
t = 0 |   |
Compatible state is start viterbi(start,0) = 1.0 |
---|---|---|
t= 1 |   |
o1 = aa; compatible states
are onaa and Iaa
viterbi(onaa,1)
viterbi(Iaa,1)
|
t=2 |   |
o2 = n; compatible states are onaa n, then and needn
viterbi(onaa n,2)
viterbi(then,2)
viterbi(needn,2)
|