1. 程式人生 > >條件隨機場之CRF++原始碼詳解-開篇

條件隨機場之CRF++原始碼詳解-開篇

介紹

  最近在用條件隨機場做切分標註相關的工作,系統學習了下條件隨機場模型。能夠理解推導過程,但還是比較抽象。因此想研究下模型實現的具體過程,比如:1) 狀態特徵和轉移特徵具體是什麼以及如何構造 2)前向後向演算法具體怎麼實現 等等。那麼,想要深入瞭解一個演算法比較好的方式就是閱讀現有的開源專案。閱讀好的開源專案不但可以深入理解原理,還可以學習一些工程實踐的經驗。我閱讀條件隨機場的開源專案是CRF++。我在閱讀CRF++原始碼的時候走過一些彎路也積累了一些經驗,想把這個過程和經驗總結下來,希望能夠對正在學習條件隨機場的同學一些幫助。本文儘量做到將條件隨機場中的公式對應到相關的原始碼,我在學習的過程中也參考不少前輩的部落格,給我了很好的指導,但我希望這個系列的部落格能將這條件隨機場模型實現過程解釋的更加詳細具體,若文章中有不對的地方望其他同學能夠指正

準備工作

  CRF網站下載原始碼,我用的版本是0.58。獲得CRF++原始碼可以在Linux平臺下編譯,若要輸出一些列印資訊可以直接修改原始碼後重新編譯,方便除錯和理解。對於原始碼閱讀器可以用CLion或者Visual Studio,直接開啟原始碼目錄即可。如果需要輸入列印資訊或者debug,可以在Ubuntu下進行。

後續計劃

  該系列的後續文章中,我會先整體介紹CRF++工程整體框架,以及涉及的重點部分。結合條件隨機場的理論推導過程,逐步詳細地分章節介紹具體的實現。若讀者有任何建議可以在留言交流。

參考

  1. http://www.hankcs.com/ml/crf-code-analysis.html

  2. https://github.com/AlexPengW/resource