我正在尝试训练HMM模型以找到词性标注问题的模型参数。
我正在使用以下资源中的PythonHMM包: https://github.com/jason2506/PythonHMM
原始训练数据可能是这样的:
Sr.No. Observations
1 killer/N clown/N
2 killer/N problem/N
3 crazy/A problem/N
4 crazy/A clown/N
5 problem/N crazy/A clown/N
6 clown/N crazy/A killer/N
我已经根据原始数据创建了每个序列的列表((状态列表,符号列表)对列表),按照指示通过PythonHMM用于列车模型。 它看起来像这样:
sequences = [
(['N','N'],['killer','clown']),
(['N','N'],['killer','problem']),
(['A','N'],['crazy','problem']),
(['A','N'],['crazy','clown']),
(['N','A','N'],['problem','crazy','clown']),
(['N','A','N'],['clown','crazy','killer'])
]
我正在打电话'火车' hmm的函数(在导入hmm.py之后)
model_hmm = hmm.train(sequences)
然后我收到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-41-24d7c607e58c> in <module>()
----> 1 model_hmm = hmm.train(sequences)
/home/sk/hmm.py in train(sequences, delta, smoothing)
95 for _, symbol_list in sequences:
96 model.learn(symbol_list, smoothing)
---> 97 new_likelihood += log(model.evaluate(symbol_list))
98
99 new_likelihood /= length
ValueError: math domain error
我无法弄清楚为什么会出现这个错误,将序列数据传递给训练函数还是其他什么问题?
我也没有找到针对此类问题的HMM模型培训的任何示例。请帮我解决这个错误。
答案 0 :(得分:1)
hmmlearn实现已经支持具有多个观察序列的火车HMM。参见train hmm with multiple sequences
答案 1 :(得分:0)
nltk 库有HMM模型,它完全符合您的要求。
请参阅以下链接以便更好地理解:https://gist.github.com/blumonkey/007955ec2f67119e0909