package edu.cmu.minorthird.classify.sequential; import java.util.Iterator; import java.util.TreeSet; import edu.cmu.minorthird.classify.ExampleSchema; /** * @author William Cohen */ public class Segmentation { private TreeSet<Segment> segments = new TreeSet<Segment>(); private ExampleSchema schema; public Segmentation(ExampleSchema schema) { this.schema = schema; } public void add(Segment seg) { segments.add(seg); } public boolean contains(Segment seg) { return segments.contains(seg); } public Iterator<Segment> iterator() { return segments.iterator(); } public int size() { return segments.size(); } public String className(Segment seg) { String name = schema.getClassName(seg.y); return ExampleSchema.NEG_CLASS_NAME.equals(name) ? null : name; } @Override public String toString() { return "[Segmentation: "+segments+"]"; } static public class Segment implements Comparable<Segment> { public final int lo,hi,y; public Segment(int lo,int hi,int y) { this.lo=lo; this.hi=hi; this.y=y; } @Override public int compareTo(Segment b) { int cmp = lo - b.lo; if (cmp!=0) return cmp; cmp = hi - b.hi; if (cmp!=0) return cmp; return y - b.y; } @Override public String toString() { return "[Segment "+lo+".."+hi+";"+y+"]"; } } }