package chipmunk.segmenter; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class TwoPhaseSegmenter extends Segmenter { private static final long serialVersionUID = 1L; private Segmenter segmenter_; public TwoPhaseSegmenter(Segmenter segmenter) { segmenter_ = segmenter; } @Override public SegmentationReading segment(Word word) { Segmenter segmenter = new RulebasedSegmenter(); SegmentationReading reading = segmenter.segment(word); List<String> segments = new LinkedList<String>(); List<String> tags = new LinkedList<String>(); Iterator<String> segment_it = reading.getSegments().iterator(); Iterator<String> tags_it = reading.getTags().iterator(); while (segment_it.hasNext()) { String segment = segment_it.next(); String tag = tags_it.next(); if (tag == TagSet.ALPHA) { SegmentationReading new_reading = segmenter_.segment(new Word(segment)); segments.addAll(new_reading.getSegments()); tags.addAll(new_reading.getTags()); } else { segments.add(segment); tags.add(tag); } } return new SegmentationReading(segments, tags); } }