Example #1
0
   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);
}