一、viterbi算法的用途
在自然语言的工程实践中,viterbi算法常常被用来寻找最可能的隐藏状态序列。如,序列标注任务就需要用到viterbi算法。
二、viterbi求最优路径
李航老师《统计机器学习》有如下例题:
用viterbi算法解决上述例题的推理过程如下:
三、viterbi算法的实现
#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@Author : heyw
@Time : 2020/1/30 16:22
@Software: PyCharm
@File : viterbi.py
"""
import numpy as np
def viterbi(invisible, transition_prob, emission_prob, pi, obs_seq):
# 转换为numpy形式
transition_prob=np.array(transition_prob)
emission_prob=np.array(emission_prob)
pi=np.array(pi)
# 计算路径矩阵的行数和列数
row_num = np.array(transition_prob).shape[0]
col_num = len(obs_seq)
# 定义路径矩
path_matrix = np.zeros((row_num,col_num)