00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #ifndef PLSAMAP_H
00025 #define PLSAMAP_H
00026 
00027 #include "WordSubIndex.h"
00028 #include <cstdlib>
00029 #include <cmath>
00030 #include <ctime>
00031 #include <iostream>
00032 
00052 class PlsaMap {
00053 public:
00054 
00056   PlsaMap(int documents, int words, int topics);
00057   virtual ~PlsaMap(void);
00058 
00060   void printEigenValues(void);
00061 
00063   void deleteTempBuffers(void);
00064 
00066   void initialise(WordSubIndex *index);
00067 
00069   void zeroTempBuffers(void);
00070 
00072   void randomiseRealBuffers(WordSubIndex *index);
00073 
00075   void initialiseRealBuffers(WordSubIndex *index);
00076 
00078   void iterate(void);
00079 
00081   void iterate(int **index);
00082 
00084   void finalise(void);
00085 
00087   void printFile(void);
00088 
00090   void checkProbabilities(void);
00091 
00093   void operator+=(PlsaMap *x);
00094 
00096   virtual void nextElement(void) = 0;
00097 
00099   virtual void reset(void) = 0;
00100 
00102   virtual int term(void) = 0;
00103 
00105   virtual int document(void) = 0;
00106 
00108   virtual float frequency(void) = 0;
00109 
00111   float **Pwz;
00112 
00114   float **Pdz;
00115 
00117   float *Pz; 
00118 
00120   float _R;
00121 
00123   const int topics;
00124 private:
00125   const int documents;
00126   const int words;
00127 
00128 
00129   bool tempBufferState;
00130 
00131   int iterations;
00132   float Pzdwt;
00133   float Pzdwtemp, zDiff, lastzDiff;
00134   float **nPwz;
00135   float **nPdz;
00136   float *nPz, *Pzdw;
00137 };
00138 
00139 #endif