package experimental.analyzer;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Set;
import marmot.morph.Word;
public class AnalyzerReading implements Serializable {
private static final long serialVersionUID = 1L;
private String lemma_;
private AnalyzerTag tag_;
private int count_;
public AnalyzerReading(AnalyzerTag tag, String lemma) {
tag_ = tag;
lemma_ = lemma;
}
public AnalyzerReading(Word word) {
this(new AnalyzerTag(word.getPosTag(), word.getMorphTag()), word.getLemma());
}
@Override
public String toString() {
if (lemma_ == null) {
return tag_.toString();
}
return String.format("%s %s", tag_, lemma_);
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((lemma_ == null) ? 0 : lemma_.hashCode());
result = prime * result + ((tag_ == null) ? 0 : tag_.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AnalyzerReading other = (AnalyzerReading) obj;
if (lemma_ == null) {
if (other.lemma_ != null)
return false;
} else if (!lemma_.equals(other.lemma_))
return false;
if (tag_ == null) {
if (other.tag_ != null)
return false;
} else if (!tag_.equals(other.tag_))
return false;
return true;
}
public static Collection<AnalyzerTag> toTags(Collection<AnalyzerReading> readings) {
Set<AnalyzerTag> tags = new HashSet<>();
for (AnalyzerReading reading : readings) {
tags.add(reading.getTag());
}
return new LinkedList<>(tags);
}
public AnalyzerTag getTag() {
return tag_;
}
public void setCount(int count) {
count_ = count;
}
public int getCount() {
return count_;
}
}