public static <T> Dictionary<T> readFrom(final Class<T> elementClass, final InputStream stream) throws IOException { final Dictionary<T> dictionary = create(); final ObjectInputStream ois = new ObjectInputStream(stream); final int size = ois.readInt(); try { for (int i = 0; i < size; ++i) { final T element = elementClass.cast(ois.readObject()); dictionary.map.put(element, i); dictionary.list.add(element); } } catch (final ClassNotFoundException ex) { throw new IOException("Invalid file content", ex); } return dictionary; }
public static <T> Dictionary<T> readFrom(final Class<T> elementClass, final Reader reader) throws IOException { final Dictionary<T> dictionary = create(); final BufferedReader in = reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader); final Function<String, T> valueOfFunction = valueOfFunction(elementClass); String line; while ((line = in.readLine()) != null) { final T element = valueOfFunction.apply(line.trim()); dictionary.map.put(element, dictionary.list.size()); dictionary.list.add(element); } return dictionary; }
private static Classifier trainJava(final Parameters parameters, final Iterable<LabelledVector> trainingSet) throws IOException { // Prepare the svm_parameter object based on supplied parameters final svm_parameter parameter = encodeParameters(parameters); // Encode the training set as an svm_problem object, filling a dictionary meanwhile final Dictionary<String> dictionary = Dictionary.create(); final svm_problem problem = encodeProblem(dictionary, trainingSet); // Perform training final svm_model model = svm.svm_train(problem, parameter); // Compute model hash, by saving and reloading SVM model final File tmpFile = File.createTempFile("svm", ".bin"); tmpFile.deleteOnExit(); svm.svm_save_model(tmpFile.getAbsolutePath(), model); final String modelString = com.google.common.io.Files.toString(tmpFile, Charset.defaultCharset()); final String modelHash = computeHash(dictionary, modelString); final svm_model reloadedModel = svm .svm_load_model(new BufferedReader(new StringReader(modelString))); tmpFile.delete(); // Build and return the SVM object return new LibSvmClassifier(parameters, modelHash, dictionary, reloadedModel); }
final Dictionary<String> dictionary = Dictionary.create(); final File trainingFile = File.createTempFile("svmdata.", ".txt"); trainingFile.deleteOnExit();
final Dictionary<String> dictionary = Dictionary.create(); dictionary.indexFor("_unused"); // just to avoid using feature index 0 final File trainingFile = File.createTempFile("training.", ".txt");
private static Classifier trainJava(final Parameters parameters, final Iterable<LabelledVector> trainingSet) throws IOException { // Prepare the svm_parameter object based on supplied parameters final Parameter parameter = encodeParameters(parameters); parameter.setEps(getDefaultEpsilon(parameters) * 0.1f); // Encode the training set as an svm_problem object, filling a dictionary meanwhile final Dictionary<String> dictionary = Dictionary.create(); dictionary.indexFor("_unused"); // just to avoid using feature index 0 final Problem problem = encodeProblem(dictionary, trainingSet, parameters); // Perform training final Model model = Linear.train(problem, parameter); // Compute model hash final StringWriter writer = new StringWriter(); Linear.saveModel(writer, model); final String modelString = writer.toString(); final String modelHash = computeHash(dictionary, modelString); // Build and return the SVM object return new LibLinearClassifier(parameters, modelHash, dictionary, model); }