CRF/CRF++工具简单使用案例——分词篇
一、语料准备
从网上下载一份人民日报语料(data.txt),并采用分词工具对其进行分词处理,。效果如下:(每一句话为一行)
北京/金融街/是/首都/金融/主/中心区/,/“/一/行/三/会/”/和/近/2000/家/国/内/外/大型/金融/机构/及/国企/总部/汇聚/于/此/,/资产/规模/占/全国/金融/机构/资产/规模/的/40%/,/是/全国/一/平方公里/高端/产业/最/聚集/、/创造/价值/最大/的/区域/。/
二、语料处理
对原始数据(data.txt)进行处理,分别生成训练集(train.txt)和测试集(test.txt)。处理后效果如下:(每一句话后需作空行处理)
北 B-word
京 E-word
金 B-word
融 I-word
街 E-word
是 S-word
首 B-word
都 E-word
B-word:指一个单词的开头,例如北京的’北’,金融街的’金’。
E-word:指一个单词的结尾,例如北京的’京’,金融街的’街’。
I-word:指一个单词的中间,例如金融街的’融‘,*的’安‘。
S-word:代表一个课单独存在的字,例如’的‘、‘是’。
三、使用CRF++工具
从网上下载CRF++工具,将训练集(train.txt)和测试集(test.txt)文本放入同一文件夹,然后根据指令对训练集进行训练,生成模型。
1. 打开命令行窗口
在保存CRF++工具的文件路径导航栏中输入CMD,打开命令行窗口
2. 训练
输入训练指令进行训练,生成模型。
crf_learn template train.txt model
3. 测试
输入测试指令,并将测试结果存入output.txt
crf_test -m model test.txt >output.txt
测试结果(output.txt)效果如下:
北 B-word B-word
京 E-word E-word
金 B-word B-word
融 I-word I-word
街 E-word E-word
是 S-word S-word
首 B-word B-word
都 E-word E-word
4. 评估
输入测评指令,并将测评结果存入result.txt。
perl conlleval.pl -r -d "\t" < output.txt > result.txt
注意:因用到perl指令,需安装perl的环境。网上下载conlleval.pl拷贝到当前CRF++工具文件夹的下面即可。
评估结果(result.txt)效果如下:
processed 544 tokens with 544 phrases; found: 544 phrases; correct: 476.
accuracy: 87.50%; precision: 87.50%; recall: 87.50%; FB1: 87.50
B-word: precision: 85.92%; recall: 93.85%; FB1: 89.71 213
E-word: precision: 84.98%; recall: 92.82%; FB1: 88.73 213
I-word: precision: 91.67%; recall: 78.57%; FB1: 84.62 24
S-word: precision: 95.74%; recall: 71.43%; FB1: 81.82 9
四、结语
本文记录了使用CRF(条件随机场)进行分词实验的具体步骤,借此加深对CRF模型的理解和掌握。整个分词过程比较简单,初次学习CRF的同学可以用作参考。