package edu.jhu.agiga; import java.io.Serializable; /** * Each AgigaMention object represents a single mention of an entity for * coreference resolution within a document. Annotated Gigaword does not * directly provide a unique identifier for each entity in a document. However, * AgigaDocument.assignMucStyleIdsAndRefsToMentions() can be used if such ids * are needed -- this method will set the mucId and mucRef fields as if they * were the ID and REF attributes of a MUC-7 mention. * * @author mgormley * */ public class AgigaMention implements Serializable { public static final long serialVersionUID = 1; public static final int UNASSIGNED = -1; // Agiga annotations private boolean isRepresentative; private int sentenceIdx; private int startTokenIdx; private int endTokenIdx; private int headTokenIdx; // Additional annotations for MUC style printout private int mucId; private int mucRef; public AgigaMention(boolean isRepresentative, int sentenceIdx, int startTokenIdx, int endTokenIdx, int headTokenIdx) { this.isRepresentative = isRepresentative; this.sentenceIdx = sentenceIdx; this.startTokenIdx = startTokenIdx; this.endTokenIdx = endTokenIdx; this.headTokenIdx = headTokenIdx; this.mucId = UNASSIGNED; this.mucRef = UNASSIGNED; } public boolean isRepresentative() { return isRepresentative; } public int getSentenceIdx() { return sentenceIdx; } public int getStartTokenIdx() { return startTokenIdx; } public int getEndTokenIdx() { return endTokenIdx; } public int getHeadTokenIdx() { return headTokenIdx; } public int getMucId() { return mucId; } public int getMucRef() { return mucRef; } public void setMucId(int id) { this.mucId = id; } public void setMucRef(int ref) { this.mucRef = ref; } @Override public String toString() { return "AgigaMention [endTokenId=" + endTokenIdx + ", headTokenId=" + headTokenIdx + ", id=" + mucId + ", isRepresentative=" + isRepresentative + ", ref=" + mucRef + ", sentenceId=" + sentenceIdx + ", startTokenId=" + startTokenIdx + "]"; } @Override public boolean equals(Object other) { if(other == null) return false; if(other instanceof AgigaMention) { AgigaMention o = (AgigaMention) other; return isRepresentative == o.isRepresentative && sentenceIdx == o.sentenceIdx && startTokenIdx == o.startTokenIdx && endTokenIdx == o.endTokenIdx && headTokenIdx == o.headTokenIdx && mucId == o.mucId && mucRef == o.mucRef; } return false; } @Override public int hashCode() { return Util.safeHashCode(isRepresentative, sentenceIdx, startTokenIdx, endTokenIdx, headTokenIdx, mucId, mucRef); } }