package edu.stanford.nlp.parser.metrics; import java.util.Collections; import java.util.Set; import edu.stanford.nlp.trees.Constituent; import edu.stanford.nlp.trees.ConstituentFactory; import edu.stanford.nlp.trees.LabeledScoredConstituentFactory; import edu.stanford.nlp.trees.Tree; /** * Measures accuracy by only considering the very top of the parse tree, eg where S, SINV, etc go * * @author John Bauer */ public class TopMatchEval extends AbstractEval { private final ConstituentFactory cf; public TopMatchEval(String name, boolean runningAverages) { super(name, runningAverages); cf = new LabeledScoredConstituentFactory(); } @Override protected Set<Constituent> makeObjects(Tree tree) { if (tree == null) { return Collections.emptySet(); } // The eval trees won't have a root level, instead starting with // the S/SINV/FRAG/whatever, so just eval at the top level Set<Constituent> result = tree.constituents(cf, 0); return result; } }