InitWMap(); InitGBase(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(EXIT_SUCCESS); SetConfParms();
Language *ReadLangModel(Vocab *vocab,char *filename, float scale,float pen,float ngram) { Language *lang; FILE *file; char buf[256],*ptr; int i,flags; lang=qalloc(sizeof(Language),1,"Language:ReadLanguage:lang"); lang->type = l_invalid; lang->vocab = vocab; lang->scale = scale; lang->pen = pen; lang->name = qalloc(1,strlen(filename)+1,"Language:ReadLanguage:lang->name"); strcpy(lang->name,filename); LockSymTable(vocab->wdst); if ((file=fopen(filename,"r"))==NULL) HError(LANG_ERR+1,"Cannot open file %s to read language",filename); fgets(buf,256,file); /* Get string (max 256 chars) from file */ for (ptr=buf;*ptr;*ptr++=toupper(*ptr)); /* Get LM identifier */ while(isspace(*(--ptr))) *ptr=0; /* Remove whitespaces */ for (ptr=buf;isspace(*ptr);*ptr++=0); for (i=1;i<l_invalid;i++) { /* Check to see which lm key the */ if (!strcmp(ptr,lmIdentifier[i])) /* string <ptr> corresponds to */ lang->type=i; } if (lang->type==l_invalid) HError(LANG_ERR+1,"Do not recognise LM type %s",ptr); switch(lang->type) /* Now call corresponding <Read> function */ { case l_ngram: flags=ReadNGram(lang,file); break; case l_interpolate: flags=ReadInterpolate(lang,file); break; case l_mylm: flags=ReadMyLangModel(lang,file); break; /* Add new LM types here */ /* flags=Read????(lang,file); */ case l_srilm: flags=ReadSriLM(lang,file); break; default: HError(LANG_ERR+2,"No read function for LM type %d",lang->type); break; } fclose(file); lang->flags=flags; return(lang); }