00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef MF_MDIADAPTLM_H
00024 #define MF_MDIADAPTLM_H
00025
00026 class mdiadaptlm:public interplm{
00027
00028 int adaptlev;
00029 interplm* forelm;
00030 double zeta0;
00031 double oovscaling;
00032
00033 public:
00034
00035 mdiadaptlm(char* ngtfile,int depth=0,TABLETYPE tt=FULL);
00036
00037 normcache *cache;
00038
00039 double gis_step;
00040
00041 double zeta(ngram ng,int size);
00042
00043 int discount(ngram ng,int size,double& fstar,double& lambda,int cv=0);
00044
00045 int bodiscount(ngram ng,int size,double& fstar,double& lambda,double& bo);
00046
00047 int compute_backoff();
00048
00049 double backunig(ngram ng);
00050
00051 double foreunig(ngram ng);
00052
00053 int adapt(char* ngtfile,int alev=1,double gis_step=0.4);
00054
00055 int scalefact(char* ngtfile);
00056
00057 double scalefact(ngram ng);
00058
00059 double prob(ngram ng,int size);
00060 double prob(ngram ng,int size,double& fstar,double& lambda, double& bo);
00061
00062 double prob2(ngram ng,int size,double & fstar);
00063
00064 double txclprob(ngram ng,int size);
00065
00066 int saveASR(char *filename,int backoff,char* subdictfile=NULL);
00067 int saveMT(char *filename,int backoff,char* subdictfile=NULL,int resolution=10000000,double decay=0.999900);
00068 int saveARPA(char *filename,int backoff=0,char* subdictfile=NULL);
00069
00070 int netsize();
00071
00072 ~mdiadaptlm(){delete cache;}
00073
00074 double myround(double x){
00075 long int i=(long int)x;
00076 return (x-i)>0.500?i+1.0:(double)i;
00077 }
00078
00079 };
00080
00081
00082
00083 #endif
00084
00085
00086
00087
00088
00089