All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cc.mallet.pipe.TargetRememberLastLabel Maven / Gradle / Ivy

Go to download

MALLET is a Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.

The newest version!
/* 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.pipe;

import cc.mallet.types.*;

/**
 * For each position in the target, remember the last non-background
 *  label.  Assumes that the target of piped instances is a LabelSequence.
 *  Replaces the target with a LabelsSequence where row 0 is the original
 *  labels, and row 1 is the last label.
 *
 * @author Charles Sutton
 * @version $Id: TargetRememberLastLabel.java,v 1.1 2007/10/22 21:37:39 mccallum Exp $ 
 */
public class TargetRememberLastLabel extends Pipe {

  private String backgroundLabel;

	private boolean offset;

  public TargetRememberLastLabel () {
    this ("O", true);
  }

	/** offset determines how the memory and base sequences will be
	 * aligned.  If true, they'll be aligned like this:
	 * 
	 *  MEM   O  O  S  S  S  E  L
	 *  BASE  O  S  S  O  E  L  O
	 * 
* otherwise, they'll be aligned like this: *
	 *  MEM   O  S  S  S  E  E  L
	 *  BASE  O  S  S  O  E  L  O
	 * 
*/ public TargetRememberLastLabel (String backgroundLabel, boolean offset) { this.backgroundLabel = backgroundLabel; this.offset = offset; } public Instance pipe(Instance carrier) { LabelSequence lblseq = (LabelSequence) carrier.getTarget (); Labels[] lbls = new Labels [lblseq.size()]; Label lastLabel = lblseq.getLabelAtPosition(0); for (int i = 0; i < lblseq.size(); i++) { Label thisLabel = lblseq.getLabelAtPosition (i); if (offset) lbls [i] = new Labels (new Label[] { thisLabel, lastLabel }); if (!thisLabel.toString().equals (backgroundLabel)) lastLabel = thisLabel; if (!offset) lbls [i] = new Labels (new Label[] { thisLabel, lastLabel }); } carrier.setTarget (new LabelsSequence (lbls)); return carrier; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy