Skip to content

CaiRugou/NLP-CHUNKING

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NLP-CHUNKING

项目实验环境

  • Python 2.x
  • CentOS 7.0
  • CRF++-0.58

采用条件随机场(CRF++)工具,对训练样本进行训练,得到训练模型

  • 模型训练过程
% crf_learn template_file train_file model_file

这个训练过程的时间、迭代次数等信息会输出到控制台上(感觉上是crf_learn程序的输出信息到标准输出流上了),如果想保存这些信息,我们可以将这些标准输出流到文件上,命令格式如下:

% crf_learn template_file train_file model_file >> train_info_file

有四个主要的参数可以调整:

-a CRF-L2 or CRF-L1

规范化算法选择。默认是CRF-L2。一般来说L2算法效果要比L1算法稍微好一点,虽然L1算法中非零特征的数值要比L2中大幅度的小。

-c float

这个参数设置CRF的hyper-parameter。c的数值越大,CRF拟合训练数据的程度越高这个参数可以调整过度拟合和不拟合之间的平衡度。这个参数可以通过交叉验证等方法寻找较优的参数

-f NUM

这个参数设置特征的cut-off threshold。CRF++使用训练数据中至少NUM次出现的特征。默认值为1。当使用CRF++到大规模数据时,只出现一次的特征可能会有几百万,这个选项就会在这样的情况下起到作用。

-p NUM

如果电脑有多个CPU,那么那么可以通过多线程提升训练速度。NUM是线程数量。

带两个参数的命令行例子:

% crf_learn -f  3 -c 1.5 template_file train_file model_file

项目指南

  • 给定训练数据样例 在该任务中我们会给定训练文件,训练文件中的样例如下所示:
[国务院/nt  侨办/j]BNT  发表/v  [新年/t  贺词/n]BNP  本报/r  北京/ns  [12月/t  30日/t]BTP  讯/ng  [新华社/nt  记者/n]BNP  [胡/nr  晓梦/nr]BNP  
  • 组块类型定义如下表所示

组块(Chunk)被定义为具有稳定的内部结构和独立语义角色的非重叠和非递归短语。一个组块由两个或多个词语组成,其中一个词为核心词。

Category Description Example
BNP Base noun phrase [市场/n 经济/n]NP
BAP Base adjective phrase [公正/a合理/a]BAP
BVP Base verb phrase [顺利/a启动/v]BVP
BDP Base adverb phrase [已/d 不再/d]BDP
BQP Base quantifier phrase [数千/m名/q]BQP 士兵/n
BTP Base time phrase [早上/t 8时/t]BTP
BFP Base position phrase [内蒙古/ns东北部/f]BFP
BNT Name of an organization [烟台/ns 大学/n]BNT
BNS Name of a place [江苏省/ns铜山县/ns]BNS
BNZ Other proper noun phrase [诺贝尔/nr奖/n]BNZ
BSV S-V structure [领土/n 完整/a]BSV
  • 数据预处理以及后处理

如文中的描述所示,这里给出处理后的样本形式,如下:

NO1

  • 模型训练过程以及结果

template模板的编写如下图所示:

NO2

最后这里给出相关数据集(仅供学习勿用作商业)

下面给出项目中使用的数据集合以及CentOS7.0下的CRF++工具包的百度网盘链接点击其中一个即可

训练数据集

测试数据集

CRF++-0.58

共同学习

About

应用条件随机场(CRF)训练中文词块组合模型

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published