2017-10-06 3 views
0

Ich versuche, ein Modell mit dem Code unten zu trainieren, aber ich bekomme immer einen Fehler auf der DocumentCategorizerME.train() Methode es sagt mir, die factory zu doccatfactory zu ändern. Warum?Ausbildung eines Kategorisierungsmodells Opennlp

public void trainModel() 
{ 
    DoccatModel model = null; 
    InputStream dataIn = null; 

    try 
    { 
     InputStreamFactory factory = getInputStreamFactory(new File("D:/training.txt")); 
     ObjectStream<String> lineStream = new PlainTextByLineStream(factory, Charset.defaultCharset()); 
     ObjectStream<DocumentSample> sampleStream = new DocumentSampleStream(lineStream); 
     TrainingParameters params = new TrainingParameters(); 
     params.put(TrainingParameters.ITERATIONS_PARAM, "100"); 
     params.put(TrainingParameters.CUTOFF_PARAM, "0"); 

     model = DocumentCategorizerME.train("en", sampleStream, params, factory); 

    } 



} 

public static InputStreamFactory getInputStreamFactory(final File file) throws IOException{ 
    return new InputStreamFactory() { 

     @Override 
     public InputStream createInputStream() throws IOException { 
      return new FileInputStream(file); 
     } 
    }; 
} 

Antwort

0

, wenn Sie die DocumentCategorizerME.train verwenden (...) Methode, müssen Sie in einem DoccatFactory nicht ein InputStreamFactory passieren. Versuchen Sie:

model = DocumentCategorizerME.train("en", sampleStream, params, new DoccatFactory()); 

Ich hoffe, es hilft.