import os
import pickle
class HMM(object):
def __init__(self, model_file):
# 存取算法中间结果,不用每次都训练模型
self.model_file = model_file
# 状态集合
self.state_list = ["B", "M", "E", "S"]
# 状态转移概率(状态->状态的条件概率)
self.trans_prob = {}
# 发射率(状态->词语的条件概率)
self.emit_prob = {}
# 状态的初始概率:一句话第一个字被标记成 "S" "B" "E" 或 "M" 的概率。
self.init_prob = {}
# 参数加载,用于判断是否需要重新加载model_file
self.load_param = False
def try_load_model(self, trained):
"""
加载已计算的中间结果,当需要重新训练时,需初始化清空结果
:param trained: 判别是否需要加载中间结果
:return:
"""
if trained:
with open(self.model_file, "