/** * Load a classifier packaged by {@link #packageClassifier(File)} from the jar file in the * training directory. * * This method should typically not be overridden by subclasses - use * {@link #unpackageClassifier(JarInputStream)} and {@link #newClassifier()} instead. * * @param dir * The directory where the classifier was trained and packaged. * @return The loaded classifier. */ public CLASSIFIER_TYPE loadClassifierFromTrainingDirectory(File dir) throws IOException { File modelJarFile = getModelJarFile(dir); InputStream inputStream = new BufferedInputStream(new FileInputStream(modelJarFile)); try { return this.loadClassifier(inputStream); } finally { inputStream.close(); } }
public CLASSIFIER_TYPE createClassifier() throws IOException { InputStream stream = this.getClass().getResourceAsStream(this.classifierJarPath); if (stream == null) { try { stream = new URL(this.classifierJarPath).openStream(); } catch (MalformedURLException e) { stream = new FileInputStream(this.classifierJarPath); } } stream = new BufferedInputStream(stream); JarInputStream modelStream = new JarInputStream(stream); JarClassifierBuilder<?> builder = JarClassifierBuilder.fromManifest(modelStream.getManifest()); try { return this.getClassifierClass().cast(builder.loadClassifier(modelStream)); } finally { stream.close(); } }
@Override public void unpackageClassifier(JarInputStream modelStream) throws IOException { JarStreams.getNextJarEntry(modelStream, DELEGATED_MODEL_FILE_NAME); JarInputStream delegatedModelStream = new JarInputStream(modelStream); Manifest delegatedManifest = delegatedModelStream.getManifest(); JarClassifierBuilder<?> delegatedBuilder = JarClassifierBuilder.fromManifest(delegatedManifest); this.delegatedClassifier = this.cast(delegatedBuilder.loadClassifier(delegatedModelStream)); JarStreams.getNextJarEntry(modelStream, OUTCOME_FEATURE_EXTRACTOR_FILE_NAME); ObjectInputStream objectStream = new ObjectInputStream(modelStream); try { this.outcomeFeatureExtractors = (OutcomeFeatureExtractor[]) objectStream.readObject(); } catch (ClassNotFoundException e) { throw new IOException(e); } }
.getManifest()); return this.getClassifierClass().cast(builder.loadClassifier(modelStream)); } finally { stream.close();