// Copyright 2013 Thomas Müller
// This file is part of MarMoT, which is licensed under GPLv3.
package experimental.morfessor;
public class Segment implements Comparable<Segment> {
private Segment segment_;
private double score_;
private Double total_score_;
private int index_;
private Scorer scorer_;
public Segment(Segment segment, int index, double score, Scorer scorer) {
segment_ = segment;
score_ = score;
index_ = index;
scorer_ = scorer;
}
@Override
public int compareTo(Segment o) {
return - Double.compare(getTotalScore(), o.getTotalScore());
}
public double getTotalScore() {
if (total_score_ == null) {
total_score_ = scorer_.score(this);
}
return total_score_;
}
public int getIndex() {
return index_;
}
public int getLength() {
int length = 0;
Segment run = this;
while (run != null) {
length += 1;
run = run.segment_;
}
return length;
}
public Segment getPreviousSegment() {
return segment_;
}
public double getScorer() {
return score_;
}
}