/* Copyright (C) 2003 Univ. of Massachusetts Amherst, Computer Science Dept.
This file is part of "MALLET" (MAchine Learning for LanguagE Toolkit).
http://www.cs.umass.edu/~mccallum/mallet
This software is provided under the terms of the Common Public License,
version 1.0, as published by http://www.opensource.org. For further
information, see the file `LICENSE' included with this distribution. */
package cc.mallet.grmm.util;
import cc.mallet.pipe.Pipe;
import cc.mallet.types.*;
/**
* *
* Created: Fri Jan 02 23:27:04 2004
*
* @author <a href="mailto:casutton@cs.umass.edu">Charles Sutton</a>
* @version 1.0
*/
public class SliceLabelsSequence extends Pipe {
int slice;
public SliceLabelsSequence(int k) {
super (null, new LabelAlphabet ());
slice = k;
} // SliceLabelsSequence constructor
public Instance pipe (Instance carrier) {
LabelsSequence lbls = (LabelsSequence) carrier.getTarget ();
LabelAlphabet dict = (LabelAlphabet) getTargetAlphabet ();
if (dict == null) {
throw new IllegalArgumentException ("dict is null");
}
LabelSequence ls = sliceLabelsSequence (lbls, dict, slice);
carrier.setTarget (ls);
return carrier;
}
public static LabelSequence sliceLabelsSequence (LabelsSequence lbls, int slice)
{
return sliceLabelsSequence (lbls, lbls.getLabels (0).get (0).getLabelAlphabet (), slice);
}
public static LabelSequence sliceLabelsSequence (LabelsSequence lbls, LabelAlphabet dict, int slice)
{
Label[] labels = new Label [lbls.size()];
for (int t = 0; t < lbls.size(); t++) {
Label l = lbls.getLabels (t).get (slice);
labels [t] = dict.lookupLabel (l.getEntry ());
}
LabelSequence ls = new LabelSequence (labels);
return ls;
}
} // SliceLabelsSequence