何かと話題の隠れマルコフモデルを実装した

"ビジネスでもほとんど使われていない最新の統計モデル"とかいう謎なレッテルをはられてしまったことで話題の隠れマルコフモデル(Hidden Markov Model)を実装した。
NLPでのHMMは教師ありデータに対して使う場合が多いが、完全に品詞がわかっている場合はCRFとか使ったほうが良い。なので隠れ状態が本当に隠れている場合のHMMはあまりNLPで使う機会がない。
というわけで隠れ状態をEMで推測する本当のHMMを実装した。HMMの実装で力尽きたのでスケーリングとかViterbiとかはサボっていてまだやっていない(ので長い系列を入れると確率がやばい感じになるし、系列の推定部分は適当)。

https://github.com/echizentm/HiddenMarkovModel

$$ cat sample.txt
She is Kazumi . She is Alice . : n v pn eos n v 0 eos

$$ perl test.pl < sample.txt
n v pn eos n v pn eos

コロン(:)の前半が観測系列で後半が品詞列。不明な品詞は0を入れてある。HMMによってAliceが固有名詞であることが推定できた。