Java 如何训练POSTagger OpenNLP并将结果追加回旧模型?

Java 如何训练POSTagger OpenNLP并将结果追加回旧模型?,java,opennlp,Java,Opennlp,所以,我尝试使用POSTagger的训练API。但我想将新的训练数据附加到旧模型中。或者,如果我想多次训练它,我会有很多模型文件。如何将结果合并回现有模型。所以,我只有一个模型有更大的数据。我认为模型文件是一个二进制文件,所以我不确定在这种情况下附加文件是否有效 这是我的密码 public class POSTraining { private final String outputModel; private InputStream dataIn; public P

所以,我尝试使用POSTagger的训练API。但我想将新的训练数据附加到旧模型中。或者,如果我想多次训练它,我会有很多模型文件。如何将结果合并回现有模型。所以,我只有一个模型有更大的数据。我认为模型文件是一个二进制文件,所以我不确定在这种情况下附加文件是否有效

这是我的密码


public class POSTraining {
    private final String outputModel;
    private InputStream dataIn;

    public POSTraining() throws IOException {
        outputModel = this.getClass().getResource("/model/en-pos-maxent.bin").getPath();
        dataIn = this.getClass().getResourceAsStream("/model/en-pos.train");
    }

    public static void main(String args[]) throws IOException {

        POSTraining posTraining = new POSTraining();
        posTraining.train();
    }

    public void train() {
        try {
            ObjectStream lineStream = new PlainTextByLineStream(dataIn, "UTF-8");
            ObjectStream sampleStream = new WordTagSampleStream(lineStream);

            TrainingParameters trainParams = new TrainingParameters();
            trainParams.put("model", ModelType.MAXENT.name());
            POSModel trainedModel = POSTaggerME.train("en", sampleStream, trainParams, null, null);

            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(outputModel));
            trainedModel.serialize(bufferedOutputStream);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (dataIn != null) {
                try {
                    dataIn.close();
                } catch (IOException e) {
                    // Not an issue, training already finished.
                    // The exception should be logged and investigated
                    // if part of a production system.
                    e.printStackTrace();
                }
            }
        }


    }
}


这在NLP模型中通常是不可能的。您不能增量调整它们。

因此,这意味着我必须保留我的训练数据并增量相加?上述答案是正确的,但是您可以使用更多训练数据重新训练新模型。