テキトーなメモ帳

テキトーなメモ帳

高村本の条件付確率場(CRF)と最大エントロピー法を実装してみた

やっぱり読んでるだけではだめだよね?ということで、かれこれ3か月ぐらい前に高村本(言語処理のための機械学習入門)の章末問題を全部やりきりました。
というわけで、今度は実際に実装するときだろうと考えました。


最大エントロピー法については重みベクトルの学習と適用の両方、CRFについても重みベクトルの学習と適用の両方までperlで実装しました。
高村本に則って勾配についてはどちらも最急降下法で求めています。またCRFについては正則化項も入れてます(本の中では省略されてる

CRFの重みベクトルの適用については
back_linkを構築した後、ただのバックトラック使ってbest pathを返します。
ここのverifyはできてないですが。


最大エントロピー法の実装:https://github.com/titsuki/algorithm-maximum-entropy
条件付確率場(CRF)の実装:https://github.com/titsuki/algorithm-crf
動かし方はテストケースを見ればなんとなくわかるかなと思います。
章末問題とか途中の例題とかでverifyしています。


今この本に取り組んでいる方にとって、何かしら参考になる点があれば幸いです。