基于CRF++的命名实体识别浅析
背景:本科选修课课程设计,折腾了一段时间,后来发现其实不是很复杂,但是如果零基础的话还是蛮难弄的,鉴于网上大都是Linux系统下的,这里简单科普一下在windows上怎么进行这个功能,本篇侧重基础操作,旨在熟悉流程。
一、源程序的下载
-
理论上可以通过官网直接下载,但是好像有墙,所以这里我给一个百度网盘的链接吧,里面有试验所需全部文件。
-
百度网盘链接 提取码:cdsk
-
CRF++的window版不需要安装,直接在文件夹中输入cmd命令行运行即可。
二、实验原理
- 参考下面文章 条件随机场CRF简介
三、实验进行
所需要的文件主要在这个chunking里面。
- 首先实验进行你得要有两个东西,一是训练语料,这个材料一般会给到,二是训练模板,这个需要自己写。
- 模板的含义是什么呢,通过别的参考资料可以得到是很多token的组合
- 打颗🌰,看下面的数据
机器对它识别的时候,就需要拿个模板,从前面到后面一个个地去查是否符合标准,就像拿个测温枪对着你,看你有没有发烧一样。你看前面的模板是五个窗口长度的,为什么这么说,因为从-2~+2,括号里面第二项是对应这个数据第二列,也就是词性,所以这个模板下的算法其实是同时对一二行的数据进行处理的。
U16:%x[-2,1]/%x[-1,1]/%x[0,1]
U17:%x[-1,1]/%x[0,1]/%x[1,1]
U18:%x[0,1]/%x[1,1]/%x[2,1]
比如说这三行是什么意思,就是联合(-2,-1,0)(-1,0,1)(0,1,2)这三个位置的数据:
同样以上述数据为例(检测6~10行)
机器通过这三个模板得到:李/铁映/等,铁映/等/向,等/向/地
四、实验演示
- 给大家简单演示一下怎么操作
-
准备好实验材料,进入文件夹
-
输入命令crf_learn -a MIRA -f 3 -c 1.5 template1.txt train1.txt model_1
可见生成了模板一 -
进行测试crf_test -m model_1 test.txt >> output1.txt
得到结果
第四列为所得结果。
五、结果评价
- 本实验中我们通过一个py程序对结果进行评价
- 操作演示
使用时需要将代码12行里面改为需要的文件,比如我们得到了output1.txt,就改成这个;
同样在该窗口下运行cmd命令:python analize.py
运行结果
⭐End~经验分享,欢迎交流⭐
其他参考: