00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #define SHIFT_BETA 1
00024 #define SHIFT_ONE 2
00025 #define SHIFT_ZERO 3
00026 #define SHIFT_ONE_BETA 4
00027 #define LINEAR_WB 5
00028 #define LINEAR_GT 6
00029 #define MIXTURE 7
00030 #define MOD_SHIFT_BETA 8
00031
00032
00033 class interplm:public ngramtable{
00034
00035 int lms;
00036
00037 double epsilon;
00038
00039 int unismooth;
00040
00041 int prune_singletons;
00042
00043 int prune_top_singletons;
00044
00045 public:
00046
00047 int backoff;
00048
00049 interplm(char* ngtfile,int depth=0,TABLETYPE tt=FULL);
00050
00051 int prunesingletons(int flag=-1){
00052 return (flag==-1?prune_singletons:prune_singletons=flag);
00053 }
00054
00055 int prunetopsingletons(int flag=-1){
00056 return (flag==-1?prune_top_singletons:prune_top_singletons=flag);
00057 }
00058
00059 void gencorrcounts();
00060
00061 void gensuccstat();
00062
00063 virtual int dub(){return dict->dub();}
00064
00065 virtual int dub(int value){ return (dict->dub(value)); }
00066
00067 int setusmooth(int v=0){return unismooth=v;}
00068
00069 double setepsilon(double v=1.0){return epsilon=v;}
00070
00071 ngramtable *unitbl;
00072
00073 void trainunigr();
00074
00075 double unigr(ngram ng);
00076
00077 double zerofreq(int lev);
00078
00079 inline int lmsize(){return lms;}
00080
00081 inline int obswrd(){return dict->size();}
00082
00083 virtual int train(){return 0;}
00084
00085 virtual void adapt(char* ngtfile, double w){}
00086
00087 virtual double prob(ngram ng,int size){return 0.0;}
00088
00089 virtual double boprob(ngram ng,int size){return 0.0;}
00090
00091 void test_ngt(ngramtable& ngt,int sz=0,int backoff=0,int checkpr=0);
00092
00093 void test_txt(char *filename,int sz=0,int backoff=0,int checkpr=0,char* outpr=NULL);
00094
00095 void test(char* filename,int sz,int backoff=0,int checkpr=0,char* outpr=NULL);
00096
00097 virtual int discount(ngram ng,int size,double& fstar,double& lambda,int cv=0){return 0;}
00098
00099 virtual int savebin(char *filename,int lmsize=2){return 0;}
00100
00101 virtual int netsize(){return 0;}
00102
00103 void lmstat(int level){stat(level);}
00104
00105 virtual ~interplm(){}
00106
00107
00108 };
00109
00110
00111
00112
00113
00114
00115
00116