Package cc.mallet.classify

Source Code of cc.mallet.classify.ClassifierEvaluator

package cc.mallet.classify;

import java.util.logging.Logger;

import cc.mallet.fst.TransducerEvaluator;
import cc.mallet.fst.TransducerTrainer;
import cc.mallet.optimize.Optimizable;
import cc.mallet.types.InstanceList;
import cc.mallet.util.MalletLogger;

public abstract class ClassifierEvaluator
{
  private static Logger logger = MalletLogger.getLogger(ClassifierEvaluator.class.getName());

  InstanceList[] instanceLists;
  String[] instanceListDescriptions;
 
  public ClassifierEvaluator (InstanceList[] instanceLists, String[] instanceListDescriptions) {
    this.instanceLists = instanceLists;
    this.instanceListDescriptions = instanceListDescriptions;
  }
 
  public ClassifierEvaluator (InstanceList instanceList1, String instanceListDescription1) {
    this(new InstanceList[] {instanceList1}, new String[] {instanceListDescription1});
  }
 
  public ClassifierEvaluator (InstanceList instanceList1, String instanceListDescription1,
      InstanceList instanceList2, String instanceListDescription2) {
    this(new InstanceList[] {instanceList1, instanceList2}, new String[] {instanceListDescription1, instanceListDescription2});
  }

  public ClassifierEvaluator (InstanceList instanceList1, String instanceListDescription1,
      InstanceList instanceList2, String instanceListDescription2,
      InstanceList instanceList3, String instanceListDescription3) {
    this(new InstanceList[] {instanceList1, instanceList2, instanceList3},
        new String[] {instanceListDescription1, instanceListDescription2, instanceListDescription3});
  }

 
  /**
   * Evaluates a ClassifierTrainer and its Classifier on the instance lists specified in the constructor.               .
   * <P>
   * The default implementation calls the evaluator's <TT>evaluateInstanceList</TT> on each instance list.
   *
   * @param ct The TransducerTrainer to evaluate.
   */
  public void evaluate (ClassifierTrainer ct)  {
    this.preamble(ct);
    for (int k = 0; k < instanceLists.length; k++)
      if (instanceLists[k] != null)
        evaluateInstanceList (ct, instanceLists[k], instanceListDescriptions[k]);
  }
 
  protected void preamble (ClassifierTrainer ct) {
    if (ct instanceof ClassifierTrainer.ByOptimization) {
      Optimizable opt;
      int iteration = ((ClassifierTrainer.ByOptimization)ct).getIteration();
      if ((opt = ((ClassifierTrainer.ByOptimization)ct).getOptimizer().getOptimizable()) instanceof Optimizable.ByValue)
        logger.info ("Evaluator iteration="+iteration+" cost="+((Optimizable.ByValue)opt).getValue());
      else
        logger.info ("Evaluator iteration="+iteration+" cost=NA (not Optimizable.ByValue)");
    }
  }

 
  public abstract void evaluateInstanceList (ClassifierTrainer trainer, InstanceList instances, String description);

}
TOP

Related Classes of cc.mallet.classify.ClassifierEvaluator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.