Я начинаю изучать скрытые модели марков и на вики-странице, а также на github есть много примеров, но большинство вероятностей уже есть (70% изменение дождя, 30% вероятность изменения состояния и т. Д. ..). Примеры проверки правописания или предложений, кажется, изучают книги и затем ранжируют вероятности слов.
Итак, модель Маркова включает способ определения вероятностей или мы предполагаем, что какая-то другая модель будет предварительно рассчитывать ее?
Извините, если этот вопрос выключен. Я думаю, это просто, как скрытая модель Маркова выбирает вероятные последовательности, но вероятностная часть для меня немного серая (потому что ее часто предоставляют). Примеры или любая информация были бы великолепны.
Для тех, кто не знаком с марковскими моделями, вот пример (из википедии) http://en.wikipedia.org/wiki/Viterbi_algorithm и http://en.wikipedia.org/wiki/Hidden_Markov_model
#!/usr/bin/env python
states = ('Rainy', 'Sunny')
observations = ('walk', 'shop', 'clean')
start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
transition_probability = {
'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},
'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},
}
emission_probability = {
'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
}
#application code
# Helps visualize the steps of Viterbi.
def print_dptable(V):
print " ",
for i in range(len(V)): print "%7s" % ("%d" % i),
print
for y in V[0].keys():
print "%.5s: " % y,
for t in range(len(V)):
print "%.7s" % ("%f" % V[t][y]),
print
def viterbi(obs, states, start_p, trans_p, emit_p):
V = [{}]
path = {}
# Initialize base cases (t == 0)
for y in states:
V[0][y] = start_p[y] * emit_p[y][obs[0]]
path[y] = [y]
# Run Viterbi for t > 0
for t in range(1,len(obs)):
V.append({})
newpath = {}
for y in states:
(prob, state) = max([(V[t-1][y0] * trans_p[y0][y] * emit_p[y][obs[t]], y0) for y0 in states])
V[t][y] = prob
newpath[y] = path[state] + [y]
# Don't need to remember the old paths
path = newpath
print_dptable(V)
(prob, state) = max([(V[len(obs) - 1][y], y) for y in states])
return (prob, path[state])
#start trigger
def example():
return viterbi(observations,
states,
start_probability,
transition_probability,
emission_probability)
print example()