All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.stanford.nlp.ling.LabelFactory Maven / Gradle / Ivy

package edu.stanford.nlp.ling;


/**
 * A LabelFactory object acts as a factory for creating
 * objects of class Label, or some descendant class.
 * It can also make Labels from Strings, optionally with options.
 *
 * @author Christopher Manning
 * @version 2000/12/25
 */
public interface LabelFactory {

  /**
   * Make a new label with this String as the
   * value.
   * Any other fields of the label would normally be null.
   *
   * @param labelStr The String that will be used for value
   * @return The new Label
   */
  public Label newLabel(String labelStr);


  /**
   * Make a new label with this String as the value, and
   * the type determined in an implementation-dependent way from the
   * options value.
   *
   * @param labelStr The String that will be used for value
   * @param options  May determine what kind of label is created
   * @return The new Label
   */
  public Label newLabel(String labelStr, int options);


  /**
   * Make a new label.  The String argument will be decomposed into
   * multiple fields in an implementing class-specific way, in
   * accordance with the class's setFromString() method.
   *
   * @param encodedLabelStr The String that will be used for labelling the
   *                        object (by decoding it into parts)
   * @return The new Label
   */
  public Label newLabelFromString(String encodedLabelStr);


  /**
   * Create a new Label, where the label is formed from
   * the Label object passed in.  The new Label is
   * guaranteed to at least copy the value() of the
   * source label (if non-null); it may also copy other components
   * (this is implementation-specific).  However, if oldLabel is of
   * the same type as is produced by the factory, then the whole
   * label should be cloned, so that the returnedLabel.equals(oldLabel).
   * Implementation note: That last sentence isn't true of all
   * current implementations (e.g., WordTag), but we should make it
   * so that it is true!
   *
   * @param oldLabel The Label that the new label is being created from
   * @return The new label of a particular type
   */
  public Label newLabel(Label oldLabel);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy