blob: cfac75896d55a097345666940e8e52f0cecb408d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.opennlp.ml.model;
/**
* Interface for maximum entropy models.
**/
public interface MaxentModel {
/**
* Evaluates a context.
*
* @param context A list of String names of the contextual predicates
* which are to be evaluated together.
* @return an array of the probabilities for each of the different
* outcomes, all of which sum to 1.
*
**/
public double[] eval(String[] context);
/**
* Evaluates a context.
*
* @param context A list of String names of the contextual predicates
* which are to be evaluated together.
* @param probs An array which is populated with the probabilities for each of the different
* outcomes, all of which sum to 1.
* @return an array of the probabilities for each of the different outcomes, all of which sum to 1.
**/
public double[] eval(String[] context, double probs[]);
/**
* Evaluates a contexts with the specified context values.
* @param context A list of String names of the contextual predicates
* which are to be evaluated together.
* @param values The values associated with each context.
* @return an array of the probabilities for each of the different outcomes, all of which sum to 1.
*/
public double[] eval(String[] context, float[] values);
/**
* Simple function to return the outcome associated with the index
* containing the highest probability in the double[].
*
* @param outcomes A <code>double[]</code> as returned by the
* <code>eval(String[] context)</code>
* method.
* @return the String name of the best outcome
**/
public String getBestOutcome(double[] outcomes);
/**
* Return a string matching all the outcome names with all the
* probabilities produced by the <code>eval(String[]
* context)</code> method.
*
* @param outcomes A <code>double[]</code> as returned by the
* <code>eval(String[] context)</code>
* method.
* @return String containing outcome names paired with the normalized
* probability (contained in the <code>double[] ocs</code>)
* for each one.
**/
public String getAllOutcomes(double[] outcomes);
/**
* Gets the String name of the outcome associated with the index
* i.
*
* @param i the index for which the name of the associated outcome is
* desired.
* @return the String name of the outcome
**/
public String getOutcome(int i);
/**
* Gets the index associated with the String name of the given
* outcome.
*
* @param outcome the String name of the outcome for which the
* index is desired
* @return the index if the given outcome label exists for this
* model, -1 if it does not.
**/
public int getIndex(String outcome);
/**
* Returns the data structures relevant to storing the model.
**/
public Object[] getDataStructures();
/** Returns the number of outcomes for this model.
* @return The number of outcomes.
**/
public int getNumOutcomes();
}