package edu.stanford.nlp.trees;
import edu.stanford.nlp.ling.CoreLabel;
import edu.stanford.nlp.ling.LabelFactory;
import java.io.Reader;
/**
* This class implements a <code>TreeReaderFactory</code> that produces
* labeled, scored array-based Trees, which have been cleaned up to
* delete empties, etc. This seems to be a common case (for English).
* By default, the labels are of type CategoryWordTag,
* but a different Label type can be specified by the user.
*
* @author Christopher Manning
*/
public class LabeledScoredTreeReaderFactory implements TreeReaderFactory {
private final LabelFactory lf;
private final TreeNormalizer tm;
/**
* Create a new TreeReaderFactory with CoreLabel labels.
*/
public LabeledScoredTreeReaderFactory() {
lf = CoreLabel.factory();
tm = new BobChrisTreeNormalizer();
}
public LabeledScoredTreeReaderFactory(LabelFactory lf) {
this.lf = lf;
tm = new BobChrisTreeNormalizer();
}
public LabeledScoredTreeReaderFactory(TreeNormalizer tm) {
lf = CoreLabel.factory();
this.tm = tm;
}
public LabeledScoredTreeReaderFactory(LabelFactory lf, TreeNormalizer tm) {
this.lf = lf;
this.tm = tm;
}
/**
* An implementation of the <code>TreeReaderFactory</code> interface.
* It creates a <code>TreeReader</code> which normalizes trees using
* the <code>BobChrisTreeNormalizer</code>, and makes
* <code>LabeledScoredTree</code> objects with
* <code>CategoryWordTag</code> labels (unless otherwise specified on
* construction).
*/
public TreeReader newTreeReader(Reader in) {
return new PennTreeReader(in, new LabeledScoredTreeFactory(lf), tm);
}
}