Нужны ли начальное и конечное состояния в HMM при реализации алгоритма Витерби для тегов POS?

Я не совсем понимаю, как использовать начальное и конечное состояния в скрытой марковской модели. Нужны ли они для разработки и реализации матриц перехода и эмиссии?


person Michael    schedule 15.02.2014    source источник


Ответы (2)


Начальное/конечное состояния необходимы для моделирования того, будет ли тег находиться в начале или в конце предложения.

Например, если у вас есть предложение из пяти слов, и вы рассматриваете два тега

  1. Det Существительное Глагол Det Существительное
  2. Det Существительное Глагол Det Adj

Оба они выглядят довольно хорошо с точки зрения переходов, потому что Det->Noun и Det->Adj очень вероятны. НО, предложение оканчивается на Adj гораздо меньше, чем на существительное, чего вы не получили бы без конечного тега. Итак, что вы действительно хотите сравнить, так это

  1. НАЧАЛО Det Существительное Глагол Det Существительное КОНЕЦ
  2. START Det Существительное Глагол Det Adj END

Затем вы будете вычислять P(END|Существительное) и P(END|Adj).


Если вы проводите контролируемое обучение, то получение вероятностей с помощью START/END ничем не отличается от других тегов, вам просто нужно добавить специальные теги к каждому предложению перед подсчетом. Итак, если в вашем учебном корпусе есть:

Det Noun Verb
Det Noun Verb Det Noun

Затем вы изменили бы его, чтобы он был

START Det Noun Verb END
START Det Noun Verb Det Noun END

И вычислить, например:

  • P(Det|СТАРТ) = 2/2
  • P(КОНЕЦ|Глагол) = 1/2
  • Р(КОНЕЦ|Существительное) = 1/3

Кроме того, выбросы тривиальны: P(START|START)=1 и P(END|END)=1.

person dhg    schedule 15.02.2014
comment
Верно, но у меня нет этой информации ни в матрице перехода, ни в матрице излучения. Должен ли я также сохранять счетчики POS, появляющиеся после полной остановки? - person Michael; 15.02.2014
comment
Конечно! Однако я пытаюсь внедрить тегировщик биграмм, так что мне нужно вставлять эти состояния START и END в каждое предложение в моем корпусе? - person Michael; 15.02.2014
comment
На самом деле вам не нужно редактировать свой корпус, вы можете просто добавлять их на лету во время подсчета. - person dhg; 15.02.2014

Я думаю, что этот вопрос действительно зависит от вашего корпуса. Если, скажем, корпус, который вы используете, состоит из полных предложений (с точки зрения семантики), то я предлагаю вам добавить начальное и конечное состояния, чтобы улучшить языковую модель. Но если корпус заполнен фрагментами предложений, то я не думаю, что начальные/конечные состояния помогут. Они могут даже дать обратный эффект.

По сути, в пост-тегах начальные состояния пытаются смоделировать, какие теги с большей вероятностью появятся в начале предложения. Конечные состояния аналогичны. Итак, если предложения в вашем корпусе действительно являются предложениями, эти начальные и конечные состояния научат вашу языковую модель тому, как начинать или заканчивать предложение.

person Kun Wu    schedule 17.02.2014