Как обучить модель HMM с несколькими последовательностями наблюдений — пары символов

Я пытаюсь обучить модель 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.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 для такого типа задач. Пожалуйста, помогите мне решить эту ошибку.


person user6568159    schedule 11.01.2018    source источник


Ответы (2)


Реализация hmmlearn уже поддерживает обучение HMM с несколькими последовательностями наблюдений. см. обучение hmm с несколькими последовательностями

person Wenmin Wu    schedule 06.07.2018

Библиотека nltk имеет модель HMM, которая делает именно то, что вы пытаетесь сделать.

см. следующую ссылку для лучшего понимания: https://gist.github.com/blumonkey/007955ec2f67119e0909

person Pramod Munemanik    schedule 11.01.2018
comment
спасибо за ваше предложение, братан .. но я хочу изучить HMM для других проблем извлечения информации, таких как сегментация адресов, анализ резюме и т. д., поэтому я пытался реализовать это ... - person user6568159; 11.01.2018
comment
См. это: arxiv.org/pdf/1603.01360.pdf . Модель LSTM-CRF очень хороша для последовательной маркировки. - person Pramod Munemanik; 11.01.2018