如何在没有文件的情况下训练 Open NLP

How to train Open NLP without file

我有以下用于训练 Open NLP POS Tagger 的代码

Trainer(String trainingData, String modelSavePath, String dictionary){

    try {
        dataIn = new MarkableFileInputStreamFactory(
                new File(trainingData));

        lineStream = new PlainTextByLineStream(dataIn, "UTF-8");
        ObjectStream<POSSample> sampleStream = new WordTagSampleStream(lineStream);

        POSTaggerFactory fac=new POSTaggerFactory();
        if(dictionary!=null && dictionary.length()>0)
        {
            fac.setDictionary(new Dictionary(new FileInputStream(dictionary)));
        }
        model = POSTaggerME.train("en", sampleStream, TrainingParameters.defaultParams(), fac);

    } catch (IOException e) {
        // Failed to read or parse training data, training failed
        e.printStackTrace();
    } finally {
        if (lineStream != null) {
            try {
                lineStream.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();
            }
        }
    }
}

这很好用。现在,是否可以在不涉及文件的情况下做同样的事情?我想将训练数据存储在某个地方的数据库中。然后我可以将其作为流或块读取并将其提供给培训师。我不想创建临时文件。这可能吗?

是的,您可以创建自己的 InputStream 实现,例如 DatabaseSourceInputStream 并使用它,而不是将 FileInputStream 传递给字典。