package edu.cmu.minorthird.classify.sequential; import edu.cmu.minorthird.classify.ExampleSchema; import edu.cmu.minorthird.classify.transform.InstanceTransform; import edu.cmu.minorthird.classify.transform.LeaveOneOutDictTransformLearner; /** * * @author William Cohen */ public class LeaveOneOutDictVersion implements BatchSegmenterLearner { private String[] featurePattern; private BatchSegmenterLearner innerLearner; private String distanceNames; public LeaveOneOutDictVersion(String[] featurePattern, BatchSegmenterLearner innerLearner, String distanceNames) { this.featurePattern = featurePattern; this.innerLearner = innerLearner; this.distanceNames = distanceNames; } public LeaveOneOutDictVersion(BatchSegmenterLearner innerLearner, String distanceNames) { this(LeaveOneOutDictTransformLearner.DEFAULT_PATTERN,innerLearner,distanceNames); } public LeaveOneOutDictVersion(BatchSegmenterLearner innerLearner) { this(LeaveOneOutDictTransformLearner.DEFAULT_PATTERN,innerLearner,"Jaccard"); } @Override public void setSchema(ExampleSchema schema) { ; } @Override public Segmenter batchTrain(SegmentDataset dataset) { LeaveOneOutDictTransformLearner transformLearner = new LeaveOneOutDictTransformLearner(featurePattern, distanceNames); InstanceTransform transform = transformLearner.batchTrain(dataset); SegmentTransform segmentTransform = new SegmentTransform(transform); SegmentDataset transformedDataset = segmentTransform.transform(dataset); //new ViewerFrame("transformedDataset", new SmartVanillaViewer(transformedDataset)); Segmenter segmenter = innerLearner.batchTrain( transformedDataset ); return new TransformingSegmenter( transform, segmenter ); } }