介紹
最近在用條件隨機場做切分標注相關的工作,系統學習了下條件隨機場模型。能夠理解推導過程,但還是比較抽象。因此想研究下模型實現的具體過程,比如:1) 狀態特征和轉移特征具體是什么以及如何構造 2)前向后向算法具體怎么實現 等等。那么,想要深入了解一個算法比較好的方式就是閱讀現有的開源項目。閱讀好的開源項目不但可以深入理解原理,還可以學習一些工程實踐的經驗。我閱讀條件隨機場的開源項目是CRF++。我在閱讀CRF++源碼的時候走過一些彎路也積累了一些經驗,想把這個過程和經驗總結下來,希望能夠對正在學習條件隨機場的同學一些幫助。本文盡量做到將條件隨機場中的公式對應到相關的源碼,我在學習的過程中也參考不少前輩的博客,給我了很好的指導,但我希望這個系列的博客能將這條件隨機場模型實現過程解釋的更加詳細具體,若文章中有不對的地方望其他同學能夠指正。
准備工作
在CRF網站下載源碼,我用的版本是0.58。獲得CRF++源碼可以在Linux平台下編譯,若要輸出一些打印信息可以直接修改源碼后重新編譯,方便調試和理解。對於源碼閱讀器可以用CLion或者Visual Studio,直接打開源碼目錄即可。如果需要輸入打印信息或者debug,可以在Ubuntu下進行。
后續計划
該系列的后續文章中,我會先整體介紹CRF++工程整體框架,以及涉及的重點部分。結合條件隨機場的理論推導過程,逐步詳細地分章節介紹具體的實現。若讀者有任何建議可以在留言交流。