美文网首页
使用CRF++进行模型训练

使用CRF++进行模型训练

作者: JackMeGo | 来源:发表于2021-11-25 16:55 被阅读0次

    使用CRF++进行模型训练

    本机训练:

    使用以下命令:

    nohup ./CRF++-0.58/crf_learn -f 10 -H 10 -e 0.0005 -m 300 data/template/template data/output/training_data_new.txt data/model/out_model -t > nohup.out 2>&1 &

    • template : 使用默认的模板,可以在CRF++-0.58/example/seg中找到
    • training_data.txt:即上步生成的训练文件
    • model:生成的模型名称
    • 其他参数:参见 http://taku910.github.io/crfpp/#source
      参数设置:
      -m,最大迭代d次数,默认为10k,int
      -f,使用的feature最少出现次数,默认为1,int
      -c,cost参数,CRFs超参,默认1.0,float。值越大,CRF越可能过拟合,用来平衡过拟合和低拟合情况,
      这个值得选取对模型有显著影响(后续调优可以对这个值给予关注)。
      Note: You can find an optimal value by using held-out data or more general model selection method such as cross validation.
      -t,输出文本模型
      -e,模型迭代训练停止条件,为loss变化率,默认0.0001
      -p,线程数量,默认为自动检测
      注意:模型训练时间很长,且会打满所有CPU,本机训练时注意训练文件不要太大(建议1w条以内)

    预测

    使用人工标注的数据data.test进行预测
    ./CRF++-0.58/crf_test -m data/model/model35 data/test_data/data.test.with_features.txt > data/test_data/data.test.out 2>&1
    ./CRF++-0.58/crf_test -m data/model/out_model data/test_data/data.test.correct.single_char_single_line_with_rulemodel_feature.txt > data/test_data/data.test_new.out 2>&1

    内容:该工程源码源于官方CRF++-0.58版本,官方原始的CRF++在训练模型的时候会将第一列为 \0 或 空格 或 \t 的行忽略掉,但我们需要第一列支持空格,所以修改了CRF++两处源码(feature_index.cpp 168行左右、tagger.cpp 368行左右),重新编译了CRF++,这样训练模型的时候支持第一列是空格。

    相关文章

      网友评论

          本文标题:使用CRF++进行模型训练

          本文链接:https://www.haomeiwen.com/subject/eielvktx.html