new Accuracy(true).test(learner, learner.getLabeler(), testParser);
} else { setIsTraining(false); result = metric.test(testLearner, testLearner.getLabeler(), testParser); setIsTraining(true);
/** * Trains the learning algorithm given a feature vector as an example. This simply converts the * example object into arrays and passes it to {@link #learn(int[],double[],int[],double[])}. * * @param vector An example of the desired learned classifier's behavior. **/ public void learn(FeatureVector vector) { Classifier saveExtractor = getExtractor(); Classifier saveLabeler = getLabeler(); setExtractor(new FeatureVectorReturner()); setLabeler(new LabelVectorReturner()); learn((Object) vector); setExtractor(saveExtractor); setLabeler(saveLabeler); }
/** * Update the score of each binary variable (label) based on the gold value of each example for * that variable. When using a {@code SparseNetworkLearner} to keep the model there is an LTU * for each label. If the gold is same as a specific label then its binary value for that label * is 1 and the score for that label will be {@code oldScore - lossOffset}; otherwise it will be * 0 and the score will be {@code oldScore + lossOffset}. * * @param example The object to make decisions about. * @param resultS The original scores (see {@link #scores(Object)}). * @return The augmented set of scores. */ public ScoreSet scoresAugmented(Object example, ScoreSet resultS) { ScoreSet augmentedScores = new ScoreSet(); Lexicon lLexicon = getLabelLexicon(); String gold = getLabeler().discreteValue(example); for (int i = 0; i < lLexicon.size(); i++) { String candidate = lLexicon.lookupKey(i).getStringValue(); double originalScore = resultS.getScore(candidate).score; double lossOffset = 1 / (double) (candidates); if (candidate.equals(gold)) augmentedScores.put(candidate, originalScore - lossOffset); else augmentedScores.put(candidate, originalScore + lossOffset); } return augmentedScores; }
/** * Returns the value of the discrete prediction that this learner would make, given a feature * vector. * * @param vector The example vector. * @return The discrete value. **/ public String discreteValue(FeatureVector vector) { Classifier saveExtractor = getExtractor(); Classifier saveLabeler = getLabeler(); setExtractor(new FeatureVectorReturner()); setLabeler(new LabelVectorReturner()); String result = discreteValue((Object) vector); setExtractor(saveExtractor); setLabeler(saveLabeler); return result; }
/** * Returns the value of the real prediction that this learner would make, given a feature * vector. * * @param vector The example vector. * @return The real value. **/ public double realValue(FeatureVector vector) { Classifier saveExtractor = getExtractor(); Classifier saveLabeler = getLabeler(); setExtractor(new FeatureVectorReturner()); setLabeler(new LabelVectorReturner()); double result = realValue((Object) vector); setExtractor(saveExtractor); setLabeler(saveLabeler); return result; }
} else { setIsTraining(false); result = metric.test(testLearner, testLearner.getLabeler(), foldParser); setIsTraining(true);
/** * This method makes one or more decisions about a single feature vector, returning those * decisions as {@link Feature}s in a vector. * * @param vector The vector to make decisions about. * @return A vector of {@link Feature}s about the input vector. **/ public FeatureVector classify(FeatureVector vector) { Classifier saveExtractor = getExtractor(); Classifier saveLabeler = getLabeler(); setExtractor(new FeatureVectorReturner()); setLabeler(new LabelVectorReturner()); FeatureVector result = classify((Object) vector); setExtractor(saveExtractor); setLabeler(saveLabeler); return result; }
/** * Returns the classification of the given feature vector as a single feature instead of a * {@link FeatureVector}. * * @param vector The vector to classify. * @return The classification of <code>vector</code> as a feature. **/ public Feature featureValue(FeatureVector vector) { Classifier saveExtractor = getExtractor(); Classifier saveLabeler = getLabeler(); setExtractor(new FeatureVectorReturner()); setLabeler(new LabelVectorReturner()); Feature result = featureValue((Object) vector); setExtractor(saveExtractor); setLabeler(saveLabeler); return result; }
/** * Produces a set of scores indicating the degree to which each possible discrete classification * value is associated with the given feature vector. Learners that return a <code>real</code> * feature or more than one feature may implement this method by simply returning * <code>null</code>. * * @param vector The vector to make decisions about. * @return A set of scores indicating the degree to which each possible discrete classification * value is associated with the given example vector. **/ public ScoreSet scores(FeatureVector vector) { Classifier saveExtractor = getExtractor(); Classifier saveLabeler = getLabeler(); setExtractor(new FeatureVectorReturner()); setLabeler(new LabelVectorReturner()); ScoreSet result = scores((Object) vector); setExtractor(saveExtractor); setLabeler(saveLabeler); return result; }