/* -*- mode: c++ -*- 
*/
/* 

    GIFT, a flexible content based image retrieval system.
    Copyright (C) 1998, 1999, 2000 CUI, University of Geneva

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program 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 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

*/
// -*- mode: c++ -*-
#ifndef _CWEIGHTEDFEATURE
#define _CWEIGHTEDFEATURE

#include <functional>
#include "TID.h"


/** STOP! we can do this with standard weighting functions.
    It would mean we add rocchio. */

/** This class contains a feature which is associated with
    two probabilistic weights:

    the probability that the feature is IMPORTANT in a given
        query context (positive or negative

    the probability that a feature is WANTED by the user. 

    
*/
class CWeightedFeature{
 public:
  /** the ID of the feature, as it would be used for queries */
  TID mFeatureID;
  /** the number of documents looked at which have */
  double mCountPresentPositive;
  /** the probability that a feature is not wanted */
  double mCountAbsentNegative;
  /** an a-priori weight (probably log of inverse frequency of feature) */
  double mAPrioriWeight;
  /** the number of documents looked at 
      (necessary for getting at probabilities
   */

  /** a default constructor which just sets the starting values.
   */
  CWeightedFeature(TID inFeatureID=0,
		   double inProbabilities=1,
		   double inAPrioriWeight=1);
};

/** for sorting weighted features, sort by the feature-id */ 
class CSortByFeatureID_WFe:public binary_function<CWeightedFeature.html">CWeightedFeature,CWeightedFeature.html">CWeightedFeature,bool>{
  //
 public:
  bool operator()(const CWeightedFeature& l,
		  const CWeightedFeature& t)const;
  
};

#endif

Documentation generated by muellerw@pc7170 on Fre Sep 29 14:43:08 CEST 2000