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

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

Go to download

Stanford CoreNLP provides a set of natural language analysis tools which can take raw English language text input and give the base forms of words, their parts of speech, whether they are names of companies, people, etc., normalize dates, times, and numeric quantities, mark up the structure of sentences in terms of phrases and word dependencies, and indicate which noun phrases refer to the same entities. It provides the foundational building blocks for higher level text understanding applications.

There is a newer version: 4.5.7
Show newest version
package edu.stanford.nlp.ling;

import java.io.Serializable;

/**
 * A ValueLabel object acts as a Label with linguistic
 * attributes.  This is an abstract class, which doesn't actually store
 * or return anything.  It returns null to any requests. However,
 * it does
 * stipulate that equals() and compareTo() are defined solely with respect to
 * value(); this should not be changed by subclasses.
 * Other fields of a ValueLabel subclass should be regarded
 * as secondary facets (it is almost impossible to override equals in
 * a useful way while observing the contract for equality defined for Object,
 * in particular, that equality must by symmetric).
 * This class is designed to be extended.
 *
 * @author Christopher Manning
 */
public abstract class ValueLabel implements Label, Comparable, Serializable {

  protected ValueLabel() {
  }


  /**
   * Return the value of the label (or null if none).
   * The default value returned by an ValueLabel is
   * always null
   *
   * @return the value for the label
   */
  public String value() {
    return null;
  }


  /**
   * Set the value for the label (if one is stored).
   *
   * @param value - the value for the label
   */
  public void setValue(String value) {
  }


  /**
   * Return a string representation of the label.  This will just
   * be the value() if it is non-null,
   * and the empty string otherwise.
   *
   * @return The string representation
   */
  @Override
  public String toString() {
    String val = value();
    return (val == null) ? "" : val;
  }


  public void setFromString(String labelStr) {
    throw new UnsupportedOperationException();
  }


  /**
   * Equality for ValueLabels is defined in the first instance
   * as equality of their String value().
   * Now rewritten to correctly enforce the contract of equals in Object.
   * Equality for a ValueLabel is determined simply by String
   * equality of its value().  Subclasses should not redefine
   * this to include other aspects of the ValueLabel, or the
   * contract for equals() is broken.
   *
   * @param obj the object against which equality is to be checked
   * @return true if this and obj are equal
   */
  @Override
  public boolean equals(Object obj) {
    String val = value();
    return (obj instanceof ValueLabel) && (val == null ? ((Label) obj).value() == null : val.equals(((Label) obj).value()));
  }


  /**
   * Return the hashCode of the String value providing there is one.
   * Otherwise, returns an arbitrary constant for the case of
   * null.
   */
  @Override
  public int hashCode() {
    String val = value();
    return val == null ? 3 : val.hashCode();
  }


  /**
   * Orders by value()'s lexicographic ordering.
   *
   * @param valueLabel object to compare to
   * @return result (positive if this is greater than obj)
   */
  public int compareTo(ValueLabel valueLabel) {
    return value().compareTo(valueLabel.value());
  }


  /**
   * Returns a factory that makes Labels of the appropriate sort.
   *
   * @return the LabelFactory
   */
  public abstract LabelFactory labelFactory();


  private static final long serialVersionUID = -1413303679077285530L;


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy