package edu.stanford.nlp.ling; import java.io.Serializable; /** * Represents a tag for a multi token expression * Can be used to annotate individual tokens without * having nested annotations * * @author Angel Chang */ public class MultiTokenTag implements Serializable { private static final long serialVersionUID = 1; public Tag tag; public int index; public static class Tag implements Serializable { private static final long serialVersionUID = 1; public String name; public String tag; public int length; // total length of expression public Tag(String name, String tag, int length) { this.name = name; this.tag = tag; this.length = length; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Tag tag1 = (Tag) o; if (length != tag1.length) return false; if (!name.equals(tag1.name)) return false; if (!tag.equals(tag1.tag)) return false; return true; } @Override public int hashCode() { int result = name.hashCode(); result = 31 * result + tag.hashCode(); result = 31 * result + length; return result; } } public MultiTokenTag(Tag tag, int index) { this.tag = tag; this.index = index; } public boolean isStart() { return index == 0; } public boolean isEnd() { return index == tag.length - 1; } public String toString() { return tag.name + "/" + tag.tag + "(" + index + "/" + tag.length + ")"; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MultiTokenTag that = (MultiTokenTag) o; if (index != that.index) return false; if (!tag.equals(that.tag)) return false; return true; } @Override public int hashCode() { int result = tag.hashCode(); result = 31 * result + index; return result; } }