本教程参考https://github.com/NLPchina/ansj_seg/wiki,但在crf上始终无法读取,故自己重新整理。用的是ansj_seg-5.0.1-all-in-one.jar包,
前期用maven引入ansj_seg-5.1.6.jar,发现model.txt无法生成crf.model,不知什么原因。如有高手研究过,麻烦告知下。
步骤如下:
1.下载语料文件。https://github.com/NLPchina/ansj_seg/wiki中可下载。
2.生成train.txt:将ansj_seg-5.0.1-all-in-one.jar中的MakeTrainFile.class反编译后,修改inputPath和outputPath路径为本地路径即可。
inputPath:语料文件所在路径。
outputPath:训练文件输出路径。
3.下载CRF++-0.57,本人用的是Windows安装包测试的。Linux没测试。
下载后解压,在example目录下新建test文件夹,将下图的三个文件复制导test下
迁移后:
Pattern.txt为训练模板,内容如下:
# Unigram
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[-1,0]/%x[0,0]
U05:%x[0,0]/%x[1,0]
U06:%x[-1,0]/%x[1,0]
# Bigram
B
4.将train.txt文件移动到新建的test文件夹下
5.执行:crf_learn.exe pattern.txt train.txt model –t
目录下生成crf++的训练文件
6.加载训练文件代码如下:
踩坑整理:
1. https://github.com/NLPchina/ansj_seg/wiki中下载的语料文件太大,crf++训练时如果“停止工作”,那就把文件内容删除小下再进行以上步骤。
2.必须用ansj_seg-5.0.1-all-in-one.jar。
以上步骤都是在我踩坑的情况下整理的,测试没问题。下面有个小小的疑问。
存在疑问:
我想引用ansj_seg-5.1.6.jar生成crf.model,可是用下面方法生成的crf.model文件存在问题。希望技术大牛分享下原因。或者受累告知下用ansj_seg-5.1.6.jar生成crf.model。该死的求知欲。。。跪拜!!!!