package edu.stanford.nlp.trees; import edu.stanford.nlp.ling.CoreLabel; import edu.stanford.nlp.ling.Label; import edu.stanford.nlp.ling.LabelFactory; import java.util.List; /** * A <code>LabeledScoredTreeFactory</code> acts as a factory for creating * trees with labels and scores. Unless another <code>LabelFactory</code> * is supplied, it will use a <code>CoreLabel</code> by default. * * @author Christopher Manning */ public class LabeledScoredTreeFactory extends SimpleTreeFactory { private LabelFactory lf; /** * Make a TreeFactory that produces LabeledScoredTree trees. * The labels are of class <code>CoreLabel</code>. */ public LabeledScoredTreeFactory() { this(CoreLabel.factory()); } /** * Make a TreeFactory that uses LabeledScoredTree trees, where the * labels are as specified by the user. * * @param lf the <code>LabelFactory</code> to be used to create labels */ public LabeledScoredTreeFactory(LabelFactory lf) { this.lf = lf; } @Override public Tree newLeaf(final String word) { return new LabeledScoredTreeNode(lf.newLabel(word)); } /** * Create a new leaf node with the given label * * @param label the label for the leaf node * @return A new tree leaf */ @Override public Tree newLeaf(Label label) { return new LabeledScoredTreeNode(lf.newLabel(label)); } @Override public Tree newTreeNode(final String parent, final List<Tree> children) { return new LabeledScoredTreeNode(lf.newLabel(parent), children); } /** * Create a new non-leaf tree node with the given label * * @param parentLabel The label for the node * @param children A <code>List</code> of the children of this node, * each of which should itself be a <code>LabeledScoredTree</code> * @return A new internal tree node */ @Override public Tree newTreeNode(Label parentLabel, List<Tree> children) { return new LabeledScoredTreeNode(lf.newLabel(parentLabel), children); } }