关于条件随机场CRF的学习笔记
背景
需要完成NER类似工作,因此需要搭建网络+CRF。目前网络模型采用pytorch进行搭建。
对于CRF除了要求输出loss和解码最优结果,还需要边缘概率以及n-best 输出。
关于CRF原理
面向神经网络的公式推导
CRF 详细推导、验证实例
个人理解为:通过动态规划(程序实现),计算出路径得分,以此算出Loss和解码出最优的路径。
边缘概率
【西湖大学 张岳老师|自然语言处理在线课程 第八章 - 7节】CRF对边缘概率的计算
看了很多网上的公式推导,但是看了张岳老师的这个视频有了更直观简洁的理解。
n-best输出
暂无
代码/库
1. pytorch-crf
适配pytorch的CRF库,可类似于一层网络直接调用。(文档)
2. CRF++
基于C++的CRF库,功能强大。(CRF++: Yet Another CRF toolkit)
3. python-crfsuite
4. NCRF++
目前唯一一个基于python带n-best的代码(github:NCRFpp)
To be continued...