首页 > 技术文章 > CRF整理笔记

lijieqiong 2017-03-17 18:17 原文

CRF工具资源一栏

CRF++介绍

  • 用法
    下载目录内有一下文件

    从example目录下文件开始入手
    训练数据

    1.seg 目录中,以上,训练数据格式中,第一列是单个字,第二列是特征,此处看起来是词性,第三列是词串标记,B代表词的首补,I代表紧跟的字
大	k	B
阪	k	I
市	k	I
立	k	I
大	k	I
助	k	B
教	k	I
授	k	I
、	y	B

如上,词串为 大阪市立大/助教授/.。
分词中,常用的是另一种标签:BMES,B-begin, M-middle E-end S-single,格式如下 ,中间常用的特征依然是 词性

1   m   E  
迈   v   B  
向   v   E  
充   v   B  
满   v   E  
希   n   B  
望   n   E  
的   u   S  
新   a   S  
世   n   B  

训练脚本

..\..\crf_learn.exe -f 3 -c 4.0 template train.data model
..\..\crf_test.exe -m model test.data

..\..\crf_learn.exe -a MIRA -f 3 template train.data model
..\..\crf_test.exe -m model test.data

以上,训练crf-learn.exe, 识别为crf_test.exe, 这两个可执行文件已经在下载目录中。注意这两个文件同在目录一定要有dll文件。不然不能运行。
以上用到借相关参数,-a -f -m

-m 模型名称
-f 特征裁剪阈值(超过f次的才被使用)
-a 算法选择 一个是crf 一个是mira
-c float  这是crf拟合训练数据的参数 ,越大未必越好。

2.JapaneseNE 目录中,看起来是训练日语命名体识别的。
`训练数据

看训练数据格式,是将多个命名体混合在一起做识别,其他词标记为O,第一列是词串本身(不是单字),第二列是词性??第三列是感觉词的类型,最后一列是NER标签
B-DATE I-DATE,分别是日期的开始词和紧跟词,O是其他词。
加入训练的还有MONEY,LOCATION,PERCENT,PERSON,ORGANIZATION .这么多实体放在一起训练效果真的好吗

`特征模板

U35:%x[-2,2]/%x[-1,2]
U36:%x[-1,2]/%x[0,2]
U37:%x[0,2]/%x[1,2]
U38:%x[1,2]/%x[2,2]

以上,[-2,2] 代表当前词语前两个词,第二列位置的特征。

3.chunking目录中,
训练数据如下:

Confidence NN B-NP
in IN B-PP
the DT B-NP
pound NN I-NP
is VBZ B-VP
widely RB I-VP
expected VBN I-VP
to TO I-VP
take VB I-VP
another DT B-NP
sharp JJ I-NP

以上,是训练phrase,此处包含了NP,ADJP,PP,VP。第一列是单词,英语字就是词,第二列是词性作为特征,第三列是标签,B-NP,代表一个NPChunk中,该字是头部。I-NP,该字是紧跟。O代表其他。

训练脚本中,用了两种算法做对比

../../crf_learn -a MIRA template train.data model
../../crf_test -m model test.data

../../crf_learn -a CRF-L1 template train.data model
../../crf_test -m model test.data

MIRA 和CRF-L1方法。

  • 源码介绍

CRF原理梳理

Hanlp中crf模块解析

推荐阅读