赞
踩
一般在训练 NLP 模型,比如分词,词性,组块标注等等时,采用 BIO 表示法,说明如下:
B — 代表当前词是一个组块的开始
I — 代表当前词在一个组块中
O — 代表当前词不在任意组块中 。
如果要求更精确,可以增加两个符号:
E — 代表组块结束
S — 代表当前词是一个组块,该组块只有一个词
以句法组块标注训练为例,我们先将 宾州树 的标注使用 perl 小程序作如下转化,
- # 宾州树库格式组块标注
- ((IP-HLN (NP-SBJ (NP-PN (NR 上海)
- (NR 浦东))
- (NP (NN 开发)
- (CC 与)
- (NN 法制)
- (NN 建设)))
- (VP (VV 同步))) )
下载 ChunkLinkCTB 小程序:https://github.com/ouprince/ChunklinkCTB ,执行
perl chunklinkctb.pl -fhHct tree.mrg > tree.chunk
将宾州树库格式的组块标注自动转化成 BIO 表示法 的如下格式 tree.chunk 如下
- #arguments: IOB tag: Begin, word numbering: file
- #columns: file_id sent_id word_id iob_inner pos word
- 1 1 0 B-NP NR 上海
- 1 1 1 I-NP NR 浦东
- 1 1 2 B-NP NN 开发
- 1 1 3 I-NP CC 与
- 1 1 4 I-NP NN 法制
- 1 1 5 I-NP NN 建设
- 1 1 6 B-VP VV 同步
下载 CRF++ 工具:链接:https://pan.baidu.com/s/1VC6xtVMUNGXt26cge_hL9Q 提取码:ck3e
解压后执行如下步骤安装 CRF++
- ./configure
- make
- make install
- ldconfig
进入 example 文件夹,里面有 CRF 使用的示范文件,basenp 或者 chunking 可用来参考作为组块标注,seg 是分词标注示范。
- 1.在 example 文件夹下建立一个目录 chunktest
- 2.复制 chunking 中的模板 template 到此目录下
- 3.template 模板中提供了一元特征模板和二元特征模板,需要和实际的训练文件对应
打开 template 文件,里面定义了特征的模板如下:
- # Unigram # 这里定义了一元特征模板
- U00:%x[-2,0]
- U01:%x[-1,0]
- U02:%x[0,0]
- U03:%x[1,0]
- U04:%x[2,0]
- U05:%x[-1,0]/%x[0,0]
- U06:%x[0,0]/%x[1,0]
-
- U10:%x[-2,1]
- U11:%x[-1,1]
- U12:%x[0,1]
- U13:%x[1,1]
- U14:%x[2,1]
- U15:%x[-2,1]/%x[-1,1]
- U16:%x[-1,1]/%x[0,1]
- U17:%x[0,1]/%x[1,1]
- U18:%x[1,1]/%x[2,1]
-
- U20:%x[-2,1]/%x[-1,1]/%x[0,1]
- U21:%x[-1,1]/%x[0,1]/%x[1,1]
- U22:%x[0,1]/%x[1,1]/%x[2,1]
-
- # Bigram # 这里定义了二元特征模板
- B
模板的大致内容如下: 训练文件一共有三列,第一列和第二列表示特征,第三列为标签。于是训练文件 train.data 如下
- 海 NR B-NP
- 浦东 NR I-NP
- 开发 NN B-NP
- 与 CC I-NP
- 法制 NN I-NP
- 建设 NN I-NP
- 同步 VV B-VP
参数 | 说明 |
-f, --freq=INT | 使用出现次数不少于 INT 次的特征(默认为 1) |
-m,--maxiter=INT | 设置INT 为 LBFGS 的最大迭代次数(默认 10k) |
-c,--cost=FLOAT | 设置 FLOAT 为代价参数,越大拟合程度越高(默认 1.0) |
-e,--eta=FLOAT | 设置终止标准 FLOAT(默认 0.0001) |
-C,--convert | 将文本模式转为二进制模式 |
-t,--textmodel | 为调试建立文本模型文件 |
-a,--algorithm=(CRF|MIRA) | 选择训练算法,默认为 CRF-L2 |
-p,--thread=INT | 线程数(默认1),利用多个 CPU 减少训练时间 |
-H,--shrinking-size=INT | 设置 INT 为最适宜的迭代变量次数(默认 20) |
-v,--version | 显示版本号并退出 |
-h,--help | 显示帮助并退出 |
执行如下开始训练
- # 第一个参数 template 为特征模板文件 第二个参数为训练文件
- # 第三个参数 chunkmodel 为保存的模型文件
- ../../crf_learn -t template train.data chunkmodel
-
- # 执行后生成 chunkmodel.txt 和 模型文件 chunkmodel
测试模型如下,test 数据为
- 上海 NR
- 浦东 NR
- 啊 N
执行如下进行模型测试
- # chunkmodel 为训练的模型, test 为测试数据
- ../../crf_test -m chunkmodel test
后面即是模型生成的标签。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。