/** * @return the objects for constructing a {@link ClassificationEvaluator} */ private Collection<OBJECT> getObjects() { final List<OBJECT> objects = new ArrayList<OBJECT>(); for (final Annotated<OBJECT, ANNOTATION> ao : testData) { objects.add(ao.getObject()); } return objects; }
/** * @return the actual classes for constructing a * {@link ClassificationEvaluator} */ private Map<OBJECT, Set<ANNOTATION>> getActual() { final Map<OBJECT, Set<ANNOTATION>> actual = new HashMap<OBJECT, Set<ANNOTATION>>(); for (final Annotated<OBJECT, ANNOTATION> ao : testData) { actual.put(ao.getObject(), new HashSet<ANNOTATION>(ao.getAnnotations())); } return actual; }
public AnnotationEvaluationEngine(Annotator<OBJECT, ANNOTATION> annotator, Dataset<? extends Annotated<OBJECT, ANNOTATION>> testData) { for (final Annotated<OBJECT, ANNOTATION> item : testData) { final OBJECT obj = item.getObject(); results.put(obj, annotator.annotate(obj)); } }
/** * @return the relevant docs for constructing a {@link RetrievalEvaluator} */ private Map<ANNOTATION, Set<OBJECT>> getRelevant(Collection<ANNOTATION> queries) { final Map<ANNOTATION, Set<OBJECT>> relevant = new HashMap<ANNOTATION, Set<OBJECT>>(); for (final ANNOTATION query : queries) { final HashSet<OBJECT> rset = new HashSet<OBJECT>(); relevant.put(query, rset); for (final Annotated<OBJECT, ANNOTATION> item : testData) { if (item.getAnnotations().contains(query)) { rset.add(item.getObject()); } } } return relevant; }
@Override public void train(final Annotated<OBJECT, ANNOTATION> annotated) { this.nn = null; this.features.add(this.extractor.extractFeature(annotated.getObject())); final Collection<ANNOTATION> anns = annotated.getAnnotations(); this.annotations.add(anns); this.annotationsSet.addAll(anns); }
@Override public FEATURE get(int index) { return extractor.extractFeature( data.get(indices.get(index)).getObject() ); }
@Override public FEATURE get(int index) { return extractor.extractFeature( data.get(selectedIndices.get(index)).getObject() ); }
@Override public void train(Annotated<OBJECT, ANNOTATION> annotated) { objectCache.add(annotated.getAnnotations(), annotated.getObject()); isInvalid = true; }
@Override public void train(Annotated<FACE, PERSON> annotated) { faceCache.add(annotated.getAnnotations(), annotated.getObject()); isInvalid = true; }
@Override public void train(List<? extends Annotated<OBJECT, ANNOTATION>> data) { final List<IndependentPair<FEATURE, ANNOTATION>> featureData = new ArrayList<IndependentPair<FEATURE, ANNOTATION>>(); for (final Annotated<OBJECT, ANNOTATION> a : data) { final FEATURE f = extractor.extractFeature(a.getObject()); for (final ANNOTATION ann : a.getAnnotations()) featureData.add(IndependentPair.pair(f, ann)); } model.estimate(featureData); }
@Override public void train(Annotated<OBJECT, ANNOTATION> annotated) { final FEATURE fv = extractor.extractFeature(annotated.getObject()); featureCache.add(annotated.getAnnotations(), fv); isInvalid = true; }
@Override public void train(List<? extends Annotated<OBJECT, ANNOTATION>> data) { final Set<ANNOTATION> termsSet = new HashSet<ANNOTATION>(); for (final Annotated<OBJECT, ANNOTATION> d : data) termsSet.addAll(d.getAnnotations()); terms = new ArrayList<ANNOTATION>(termsSet); final int termLen = terms.size(); final int trainingLen = data.size(); final Annotated<OBJECT, ANNOTATION> first = data.get(0); final double[] fv = extractor.extractFeature(first.getObject()).asDoubleVector(); final int featureLen = fv.length; final Matrix F = new Matrix(trainingLen, featureLen); final Matrix W = new Matrix(trainingLen, termLen); addRow(F, W, 0, fv, first.getAnnotations()); for (int i = 1; i < trainingLen; i++) { addRow(F, W, i, data.get(i)); } final Matrix pinvF = PseudoInverse.pseudoInverse(F, k); transform = pinvF.times(W); }
private void addRow(Matrix F, Matrix W, int r, Annotated<OBJECT, ANNOTATION> data) { final double[] fv = extractor.extractFeature(data.getObject()).asDoubleVector(); addRow(F, W, r, fv, data.getAnnotations()); }
annotationsList = new ArrayList<ANNOTATION>(annotations); final int featureLength = extractor.extractFeature(data.get(0).getObject()).length();
@Override public void train(Annotated<OBJECT, ANNOTATION> annotated) { final FeatureVector feature = extractor.extractFeature(annotated.getObject()); final Vector vec = VectorFactory.getDefault().copyArray(feature.asDoubleVector()); for (final ANNOTATION ann : annotated.getAnnotations()) { learner.update(categorizer, new DefaultInputOutputPair<Vector, ANNOTATION>(vec, ann)); } }