Log in Help
Print
Homereleasesgate-5.1-beta2-build3402-ALLpluginsMachine_Learningsrcgatecreoleml 〉 MLEngine.java
 
/*
 *  Copyright (c) 1998-2005, The University of Sheffield.
 *
 *  This file is part of GATE (see http://gate.ac.uk/), and is free
 *  software, licenced under the GNU Library General Public License,
 *  Version 2, June 1991 (in the distribution as file licence.html,
 *  and also available at http://gate.ac.uk/gate/licence.html).
 *
 *  Valentin Tablan 21/11/2002
 *
 *  $Id: MLEngine.java 6491 2005-01-11 13:51:38 +0000 (Tue, 11 Jan 2005) ian $
 *
 */
package gate.creole.ml;

import java.util.List;

import org.jdom.Element;

import gate.ProcessingResource;
import gate.creole.ExecutionException;
import gate.util.GateException;

/**
 * This interface is used for wrappers to Machine Learning engines.
 * All classes implementing this interface should have a public constructor
 * that takes no parameters.
 */
public interface MLEngine {

  /**
   * Sets the options from an XML JDom element.
   * @param options the JDom element containing the options from the
   * configuration.
   */
  public void setOptions(Element options);

  /**
   * Adds a new training instance to the dataset.
   * @param attributes the list of attributes describing the instance. The
   * elements in the list are String values that need to be interpreted
   * according to the dataset definition: for nominal attributes the values will
   * used as they are; for numeric attributes the values will be converted to
   * double.
   */
  public void addTrainingInstance(List attributes)throws ExecutionException;

  /**
   * Sets the definition for the dataset used.
   * @param definition
   */
  public void setDatasetDefinition(DatasetDefintion definition);

  /**
   * Classifies a new instance.
   * @param attributes the list of attributes describing the instance. The
   * elements in the list are Object values that need to be interpreted
   * according to the dataset definition. The value for the class element will
   * be arbitrary.
   * @return a String value for nominal and boolean attributes and a Double
   * value for numeric attributes.
   */
  public Object classifyInstance(List attributes)throws ExecutionException;

  /**
   * Like classify instances, but take a list of instances instead of a single
   * instance, and return a list of results (one for each instance) instead of
   * a single result.
   *
   * @param instances A list of lists of attributes describing the instance. The
   * value for all of the class elements will be arbitrary.
   * @return A list of values predicted for the class attribute, which will be
   * Strings when the class in nominal or boolean, and a Double values
   * otherwise.
   * @throws ExecutionException
   */
  public List batchClassifyInstances(List instances) throws ExecutionException;

  /**
   * This method will be called after an engine is created and has its dataset
   * and options set. This allows the ML engine to initialise itself in
   * preparation of being used.
   *
   * @throws GateException
   */
  public void init() throws GateException;

  /**
   * Registers the PR using the engine with the engine itself.
   * @param pr the processing resource that owns this engine.
   */
  public void setOwnerPR(ProcessingResource pr);

  /**
   * Cleans up any resources allocated by the Engine when it is destroyed.
   * (Generally this is most likely to be needed by those wrappers that
   * call native code.)
   */
  public void cleanUp();
}