如何修改训练模型Opennlp的参数(截止,迭代)

时间:2017-03-23 03:27:21

标签: opennlp

我正在使用OpenNLP(1.7.2)令牌名称查找器来解析非结构化数据。模型建立在默认参数上,即迭代100和截止5。 当我尝试这样的cmd:

  
    

./ opennlp TokenNameFinderTrainer -cutoff 8 -lang en -encoding utf8 -data es_corpus_train_persons.txt -model es_ner_person.bin

  

然后错了:

  
    

遇到无法识别的参数:[ - cutoff,8],但

  

所以我的问题是,如何修改参数(截止,迭代)。

提前致谢!

3 个答案:

答案 0 :(得分:0)

TrainingParameters tp = new TrainingParameters();
tp.put(TrainingParameters.CUTOFF_PARAM, "1");
tp.put(TrainingParameters.ITERATIONS_PARAM, "100");
TokenNameFinderFactory tnff = new TokenNameFinderFactory();
model = NameFinderME.train(language, modelName, sampleStream, tp, tnff);

应该这样做!

答案 1 :(得分:0)

如果您使用命令行,您可以创建一个属性文件,如下所示:https://github.com/apache/opennlp/tree/master/opennlp-tools/lang/ml

.bin/opennlp TokenNameFinderTrainer -params PerceptronTrainerParams.txt -lang en -encoding utf8 -data es_corpus_train_persons.txt -model es_ner_person.bin

答案 2 :(得分:0)

默认参数定义为:

`

public static TrainingParameters defaultParams() {
    TrainingParameters mlParams = new TrainingParameters();
    mlParams.put(TrainingParameters.ALGORITHM_PARAM, "MAXENT");
    mlParams.put(TrainingParameters.TRAINER_TYPE_PARAM, EventTrainer.EVENT_VALUE);
    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100);
    mlParams.put(TrainingParameters.CUTOFF_PARAM, 5); 

    return mlParams;
  }

您可以按照Nuwanda描述的方法进行调整