//Copyright (C) 2005 Richard J. Northedge // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. //This file is based on the MaxentModel.java source file found in the //original java implementation of MaxEnt. That source file contains the following header: // Copyright (C) 2001 Jason Baldridge and Gann Bierner // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. using System; namespace BotSharp.MachineLearning { /// /// Interface for maximum entropy models. /// /// /// Jason Baldridge /// /// /// Richard J. Northedge /// /// /// based on MaxentModel.java, $Revision: 1.4 $, $Date: 2003/12/09 23:13:53 $ /// public interface IMaximumEntropyModel { /// /// Returns the number of outcomes for this model. /// /// /// The number of outcomes. /// int OutcomeCount { get; } /// /// Evaluates a context. /// /// /// A list of string names of the contextual predicates /// which are to be evaluated together. /// /// /// An array of the probabilities for each of the different /// outcomes, all of which sum to 1. /// double[] Evaluate(string[] context); /// /// Evaluates a context. /// /// /// A list of string names of the contextual predicates /// which are to be evaluated together. /// /// /// An array which is populated with the probabilities for each of the different /// outcomes, all of which sum to 1. /// /// /// an array of the probabilities for each of the different /// outcomes, all of which sum to 1. The probabilities array is returned if it is appropiately sized. /// double[] Evaluate(string[] context, double[] probabilities); /// /// Simple function to return the outcome associated with the index /// containing the highest probability in the double[]. /// /// /// A double[] as returned by the /// Evaluate(string[] context) /// method. /// /// /// the string name of the best outcome /// string GetBestOutcome(double[] outcomes); /// /// Return a string matching all the outcome names with all the /// probabilities produced by the eval(string[] /// context) method. /// /// /// A double[] as returned by the /// eval(string[] context) /// method. /// /// /// string containing outcome names paired with the normalized /// probability (contained in the double[] ocs) /// for each one. /// string GetAllOutcomes(double[] outcomes); /// /// Gets the string name of the outcome associated with the supplied index /// /// /// the index for which the name of the associated outcome is desired. /// /// /// the string name of the outcome /// string GetOutcomeName(int index); /// /// Gets the index associated with the string name of the given /// outcome. /// /// /// the string name of the outcome for which the /// index is desired /// /// /// the index if the given outcome label exists for this /// model, -1 if it does not. /// int GetOutcomeIndex(string outcome); } }