亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lmodel.c

?? 隱馬爾科夫模型工具箱
?? C
?? 第 1 頁 / 共 5 頁
字號:
   ptype = lm->probType;   if (FRead(&cneCnt,sizeof(int32),1,src)!=1)      HError(15450,"LoadUltraNGrams: Unable to read CNEntry count");   if (mustSwap) SwapInt32(&cneCnt);   if (FRead(&seCnt,sizeof(int32),1,src)!=1)      HError(15450,"LoadUltraNGrams: Unable to read SEntry count");   if (mustSwap) SwapInt32(&seCnt);   if (trace&T_LOAD)      printf("Loading %d NEntry(s)\n",cneCnt);   cneBuf = (CNEntry *) New(&gstack,cneCnt*sizeof(NEntry));   if (FRead(cneBuf,sizeof(CNEntry),cneCnt,src)!=cneCnt)      HError(15450,"LoadUltraNGrams: Unable to read CNEntry array");   if (mustSwap) {      for (cne=cneBuf,i=0; i<cneCnt; i++,cne++) SWAP_CE(cne);   }   if (trace&T_LOAD)      printf("Loading %d SEntry(s)\n",seCnt);   /* create and read SMEntry block */   smeBuf = (SMEntry *) New(lm->heap,seCnt*sizeof(SMEntry));   for (sme=smeBuf,i=0; i<seCnt; i++,sme++) {      if (FRead(&se,sizeof(SEntry),1,src)!=1)	 HError(15450,"LoadUltraNGrams: Unable to read SEntry (%d)",i);      if (mustSwap) SWAP_SE((&se));#ifdef LM_COMPACT      sme->prob = se.prob;#else      prob = PROB_SHORT_TO_LOG(se.prob);      sme->prob = (ptype==LMP_FLOAT) ? LOG10_TO_FLT(prob) : prob * scale;#endif      sme->ndx = se.word;   }   /* create table of pointers to SMEntry arrays */   smeTab = (SMEntry **) New(&gstack,cneCnt*sizeof(SMEntry *));   for (sme=smeBuf,j=0; j<cneCnt; j++) {     smeTab[j] = (cneBuf[j].nse==0) ? NULL : (SMEntry *) sme;     sme += cneBuf[j].nse;   }   /* create and sort lookup index array */   cneTab = (int *) New(&gstack,sizeof(int)*cneCnt);   for (i=0; i<cneCnt; i++) cneTab[i] = i;   qs_cneBuf = cneBuf;   qsort(cneTab,cneCnt,sizeof(int),nep_cmp);   feBuf = (FLEntry *) New(lm->heap,cneCnt*sizeof(FLEntry));   parent = &lm->root;   CNE2FE(cneTab[0],parent);   parent->nfe = 0;   parent->fea = cfe = feBuf;   parent->parent = 0;   for (i=0; i<NSIZE-1; i++) context[i] = cneBuf[cneTab[1]].word[i];   for (i=1; i<cneCnt; i++) {      cne = cneBuf+cneTab[i];      for (newCTX=FALSE,j=1; j<NSIZE-1; j++) {	 if (context[j]!=cne->word[j]) {	    newCTX=TRUE; break;	 }      }      if (newCTX) {	 for (parent=&lm->root,j=NSIZE-2; j>0; j--) {	    if ((idx=cne->word[j])==0) continue;	    if ((parent = FindFE(parent->fea,0,parent->nfe,idx))==NULL) {	       HError(15450,"LoadUltraNGrams: Items not in order %d",i);	    }	 }	 parent->fea = cfe; parent->nfe = 0;	 for (j=0; j<NSIZE-1; j++) context[j] = cne->word[j];      }      parent->nfe++; CNE2FE(cneTab[i],cfe); cfe++;   }   Dispose(&gstack,cneBuf);}static int WriteNEntry(FILE *f, BackOffLM *lm, int lev, FLEntry **feBuf,		       FLEntry **feTab, int *fetCount){   int i,total;   CNEntry ne;   float scale,bowt;   LMProbType ptype;   FLEntry *fe,*tgtFE;   Boolean mustSwap = (vaxOrder && !natWriteOrder);   if (lev==lm->nSize)      return 0;   ptype = lm->probType;   scale = 1.0/(lm->gScale*LN10);   tgtFE = feBuf[lev-1];   total = 0;   INIT_CNE(ne);   for (i=1; i<lev; i++) ne.word[lev-i] = feBuf[i]->ndx;   for (fe = tgtFE->fea, i=0; i<tgtFE->nfe; i++, fe++) {      if (fe->nse==0)	 continue;      feTab[(*fetCount)++] = fe;      ne.word[0] = fe->ndx;      ne.nse = fe->nse;      bowt = (ptype==LMP_FLOAT) ? FLT_TO_LOG10(fe->bowt) : fe->bowt*scale;  /* convert to LOG10 */      ne.bowt = BOWT_LOG_TO_SHORT(bowt);   /* compress LOG10 to short */      if (mustSwap) {	 SWAP_CE((&ne));	 fwrite(&ne,sizeof(CNEntry),1,f);	 SWAP_CE((&ne));      } else {	 fwrite(&ne,sizeof(CNEntry),1,f);      }      total++;   }   if (++lev < lm->nSize) {      for (fe = tgtFE->fea, i=0; i<tgtFE->nfe; i++, fe++) {	 feBuf[lev-1] = fe;	 total += WriteNEntry(f,lm,lev,feBuf,feTab,fetCount);      }   }   return total;}static int WriteSEntry(FILE *f,BackOffLM *lm,FLEntry **feTab, int fetCount){   SEntry se;   SMEntry *sme;   FLEntry *fe;   int i,j,total = 0;   float scale,prob;   LMProbType ptype;   Boolean mustSwap = (vaxOrder && !natWriteOrder);   ptype = lm->probType;   scale = 1.0/(lm->gScale*LN10);   total = 0;   for (i=0; i<fetCount; i++) {      fe = feTab[i];      for (sme=fe->sea,j=0; j<fe->nse; j++,sme++) {	 prob = (ptype==LMP_FLOAT) ? FLT_TO_LOG10(sme->prob) : sme->prob*scale;	 se.prob = PROB_LOG_TO_SHORT(prob);   /* LOG10 -> short */	 se.word = sme->ndx;	 if (mustSwap) {	    SWAP_SE((&se));	    fwrite(&se,sizeof(SEntry),1,f);	    SWAP_SE((&se));	 } else {	    fwrite(&se,sizeof(SEntry),1,f);	 }	 total++;      }   }   return total;}static void CountEntries(int lev, int nSize, FLEntry *tgtFE, int *nfe, int *nse){   int i;   FLEntry *fe;   *nse += tgtFE->nse;   if (lev < nSize)      *nfe += tgtFE->nfe;      for (fe = tgtFE->fea, i=0; i<tgtFE->nfe; i++, fe++)	 CountEntries(lev+1,nSize,fe,nfe,nse);}static void SaveUltraNGrams(FILE *f, BackOffLM *lm){   int n,neCnt,seCnt,fetCount;   CNEntry ne;   FLEntry *feBuf[LM_NSIZE], **feTab;   Boolean mustSwap = (vaxOrder && !natWriteOrder);   fprintf(f,"\n\\N-grams:\n");   neCnt = seCnt = 0;   CountEntries(1,lm->nSize,&lm->root,&neCnt,&seCnt);   neCnt++;   if (mustSwap) {      SwapInt32(&neCnt);      fwrite(&neCnt,sizeof(int32),1,f);      SwapInt32(&neCnt);   } else {      fwrite(&neCnt,sizeof(int32),1,f);   }   if (mustSwap) {      SwapInt32(&seCnt);      fwrite(&seCnt,sizeof(int32),1,f);      SwapInt32(&seCnt);   } else {      fwrite(&seCnt,sizeof(int32),1,f);   }   INIT_CNE(ne);                         /* write the root entry */   ne.nse = lm->root.nse;   if (mustSwap) {      SWAP_CE((&ne));      fwrite(&ne,sizeof(CNEntry),1,f);      SWAP_CE((&ne));   } else {      fwrite(&ne,sizeof(CNEntry),1,f);   }   feTab = (FLEntry **) New(&gstack,neCnt*sizeof(FLEntry *));   fetCount = 0;   feTab[fetCount++] = &lm->root;   if (lm->nSize > 1) {      feBuf[0] = &lm->root;      WriteNEntry(f,lm,1,feBuf,feTab,&fetCount);      if (trace&T_SAVE) {	 printf("saved %d CNEntry(s), (%d)\n",fetCount,neCnt); fflush(stdout);      }   }   n = WriteSEntry(f,lm,feTab,fetCount);   if (trace&T_SAVE) {      printf("saved %d SEntry(s), (%d)\n",n,seCnt); fflush(stdout);   }   Dispose(&gstack,feTab);}#endif  /* ULTRA_LM *//*------------------------- LM loading -------------------------*/#define READ_FLOAT(src,x,bin) { \   char buf[100]; \   if (!ReadFloat(src,x,1,bin)) \      HError(15490,"ReadFloat: Float expected at %s",SrcPosition(*src,buf)); \}/* EXPORT-> StoreFEA: move fea array into permanent location */void StoreFEA(FLEntry *fe, MemHeap *heap){   FLEntry *febuf;   if (fe==NULL)      return;   if (fe->nfe==0) {      fe->fea = NULL;   } else {      qsort(fe->fea, fe->nfe, sizeof(FLEntry), CmpFE);      febuf = (FLEntry *) New(heap,fe->nfe*sizeof(FLEntry));      fe->fea = memcpy(febuf, fe->fea, fe->nfe*sizeof(FLEntry));   }}/* EXPORT-> StoreSEA: move fea array into permanent location */void StoreSEA(FLEntry *fe, MemHeap *heap){   SMEntry *sebuf;   if (fe==NULL)      return;   if (fe->nse==0) {      fe->sea = NULL;   } else {      qsort(fe->sea, fe->nse, sizeof(SMEntry), CmpSE);      sebuf = (SMEntry *) New(heap,fe->nse*sizeof(SMEntry));      fe->sea = memcpy(sebuf, fe->sea, fe->nse*sizeof(SMEntry));   }}/* LoadUnigram: read the unigram part of a file */static int LoadUnigram(Source *src, BackOffLM *lm, int *itran){   char word[256];   int i,tndx,nItem;   float bowt,prob,scale;   LM_Id ndx;   SMEntry *se;   FLEntry *fe;   NameId wdid;   LMProbType ptype;   Boolean has_bowt;   nItem = 0;   scale = lm->gScale*LN10;   ptype = lm->probType;   lm->root.sea = se = lm->se_buff; lm->root.nse = 0;   lm->root.fea = fe = lm->fe_buff; lm->root.nfe = 0;   lm->root.bowt = 0.0;   lm->root.parent = 0;   SyncStr(src,"\\1-grams:");   for (i=1; i<=lm->gInfo[1].nEntry; i++){      READ_FLOAT(src,&prob,FALSE);      if (!GetSrcString(src,word,htkEsc))	 HError(15413,"LoadUnigram: Unable to read unigram %d",i);      SkipWhiteSpace(src);      if (!src->wasNewline) {            /* process backoff weight */	 READ_FLOAT(src,&bowt,FALSE);	 has_bowt = TRUE;      } else {	 has_bowt = FALSE;      }      if (itran!=NULL) {	 if ((wdid = GetNameId(lm->htab,word,FALSE))==NULL) {	    itran[i] = -1;	    continue;	 }	 if ((tndx = LM_INDEX(wdid)) > 0)	    HError(15450,"LoadUnigram: Duplicate unigram %s",word);	 ndx = itran[i] = -tndx;  /* indices pre-assigned as negative */      } else {	 wdid = GetNameId(lm->htab,word,TRUE);	 ndx = i;      }      nItem++;      lm->binMap[ndx] = wdid; /* This is where the wordlist is built */      se->ndx = LM_INDEX(wdid) = ndx;      switch(ptype) {         case LMP_FLOAT :	   se->prob = LOG10_TO_FLT(prob); break;         case LMP_LOG :#ifdef LM_COMPACT	   se->prob = Prob2Shrt(prob); break;#else	   se->prob = prob * scale; break;#endif         default:	   if (prob < 0.0)	      HError(15450,"LoadUnigram: Negative probability (%.4f) for unigram %d",		     prob,i);	   se->prob = prob; break;      }      se++; lm->root.nse++;      if (has_bowt) {         /* process backoff weight */	 fe->ndx = ndx;	 fe->nse = 0; fe->sea = NULL;	 fe->nfe = 0; fe->fea = NULL;	 switch(ptype) {	    case LMP_FLOAT :	      fe->bowt = LOG10_TO_FLT(bowt); break;	    case LMP_LOG :	      fe->bowt = bowt*scale; break;	    default :	      fe->bowt = bowt; break;	 }	 fe++; lm->root.nfe++;      }   }   if (itran!=NULL && nItem!=lm->vocSize) {      /* create dummy entries for unseen unigrams */      for (i=1; i<=lm->vocSize; i++) {	 if ((tndx = LM_INDEX(lm->binMap[i])) > 0)	    continue;	 LM_INDEX(lm->binMap[i]) = -tndx;	 se->ndx = -tndx; se->prob = 0.0;	 se++; lm->root.nse++;      }   }   StoreFEA(&(lm->root),lm->heap);   StoreSEA(&(lm->root),lm->heap);   /* check unigram consistency */   for (se=lm->root.sea, i=0; i<lm->root.nse; i++, se++) {      if (se->ndx!=i+1)	 HError(15450, "LoadUnigram: Mismatched unigram index %d should be %d", se->ndx, i+1);   }   return nItem;}#define TRINDEX(itran,i) (itran==NULL) ? i : itran[i]/* LoadNGram: read n-gram (N>1) from file f */static int LoadNGram(Source *src, int nSize, BackOffLM *lm, int *itran){   LM_Id ndx=0;   NGramInfo *gi;   LMProbType ptype;   Byte fsize, flags;   SMEntry *se=NULL;   FLEntry *feptr=NULL, *fe=NULL;   float prob,bowt,scale;   int i,j,k,num_fe,num_se; /*,n*/   char *s,lnBuf[256],word[256];   Boolean has_bowt, hasOOV, newCTX, isBin=FALSE;   NameId wdid[LM_NSIZE], keyid[LM_NSIZE];   if (nSize==1) {      return LoadUnigram(src,lm,itran);   }   scale = lm->gScale*LN10;   ptype = lm->probType;   gi = lm->gInfo+nSize;   if (gi->fmt==LMF_BINARY || gi->fmt==LMF_TEXT)      isBin = (gi->fmt==LMF_BINARY);   else      HError(15450,"LoadNGram: Unknown LM file format (%d)\n",gi->fmt);   if (trace&T_LOAD) {      printf("Loading %d %d-grams (%s)\n",	     lm->gInfo[nSize].nEntry,nSize,isBin ? "bin":"text");      fflush(stdout);   }   num_fe = num_se = 0;   keyid[0] = NULL; /* Previous context */   sprintf(lnBuf, "\\%d-grams:",nSize); SyncStr(src,lnBuf);   for (i=0; i<lm->gInfo[nSize].nEntry; i++) {      has_bowt = FALSE; hasOOV = FALSE;      if (isBin) {  /* binary model */	 fsize = (Byte) GetCh(src);	 flags = (Byte) GetCh(src);	 READ_FLOAT(src,&prob,TRUE);	 for (j=0; j<nSize; j++) {	    if (flags&INT_LMID) {	       UInt a;	       ReadInt(src,(int *)&a,1,TRUE);	       ndx = (LM_Id) a;	    } else {	       UShort a;	       ReadShort(src,(short *)&a,1,TRUE);	       ndx = (LM_Id) a;	    }	    if (itran!=NULL && itran[ndx]<0) {	       hasOOV = TRUE;	    } else {	       if (itran!=NULL) ndx = itran[ndx];	       if ((ndx > 0) && (ndx <=lm->vocSize))		  wdid[j] = lm->binMap[ndx];	       else		  HError(15450,"LoadNGram: LM index out of bounds (%d)", ndx);	    }	 }	 if (flags&HAS_BOWT) {	    READ_FLOAT(src,&bowt,TRUE);	    has_bowt = TRUE;	 }      } else { 	/* text model */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本电影亚洲天堂一区| 久久97超碰色| 亚洲日本青草视频在线怡红院 | 亚洲永久免费视频| 亚洲综合区在线| 丝袜亚洲另类欧美| 久久成人羞羞网站| 国产一区二区三区综合| 成人少妇影院yyyy| 欧美亚洲国产一区二区三区 | 国产一区二区三区免费| 激情文学综合网| 不卡av在线免费观看| 在线免费观看视频一区| 欧美一级艳片视频免费观看| 精品欧美黑人一区二区三区| 欧美国产激情二区三区| 亚洲欧美国产77777| 日韩精品久久理论片| 国产毛片精品视频| 色综合久久久久网| 欧美一二三在线| 久久综合狠狠综合久久激情| 成人免费在线播放视频| 亚洲免费av高清| 久久成人av少妇免费| 91在线精品秘密一区二区| 91国产视频在线观看| 日韩女优av电影在线观看| 亚洲欧洲三级电影| 午夜不卡av免费| 粉嫩一区二区三区性色av| 欧美日韩免费高清一区色橹橹| 欧美日韩视频一区二区| 国产欧美一区二区精品忘忧草 | 91久久精品一区二区| 精品国产一区二区精华| 自拍偷拍欧美精品| 精品亚洲成a人| 欧美亚日韩国产aⅴ精品中极品| 中文字幕av一区二区三区免费看| 午夜伊人狠狠久久| 波多野结衣中文字幕一区二区三区| 91日韩在线专区| 久久久久久久精| 免费视频最近日韩| 欧美丝袜自拍制服另类| 国产精品毛片久久久久久| 久久97超碰色| 色天天综合久久久久综合片| 一区二区国产盗摄色噜噜| 欧美性三三影院| 日本成人在线电影网| 精品国产91乱码一区二区三区 | 精品一区二区三区视频在线观看 | 51午夜精品国产| 久久丁香综合五月国产三级网站| 久久久天堂av| 99天天综合性| 三级在线观看一区二区| 久久久久国产精品厨房| 97久久精品人人做人人爽50路| 亚洲最色的网站| 欧美变态tickle挠乳网站| 成人午夜碰碰视频| 香蕉影视欧美成人| 国产午夜精品一区二区三区嫩草| 色婷婷综合五月| 精品亚洲欧美一区| 国产精品久久网站| 欧美一卡在线观看| jvid福利写真一区二区三区| 亚洲国产综合视频在线观看| 久久影院午夜片一区| 在线精品视频一区二区| 狠狠色综合色综合网络| 亚洲免费观看视频| 精品国产电影一区二区| 在线视频欧美精品| 国产精品香蕉一区二区三区| 亚洲最色的网站| 中文字幕av一区二区三区| 欧美一级日韩一级| 在线免费观看日本欧美| 国产在线一区二区| 日韩精品1区2区3区| 中文字幕日本不卡| 久久久久久久精| 日韩欧美电影一区| 欧美无人高清视频在线观看| 国产成人av资源| 蜜桃久久久久久| 亚洲综合另类小说| 亚洲欧洲国产日本综合| 欧美精品一区二区三区高清aⅴ| 欧美色网站导航| 91影院在线观看| 粉嫩av一区二区三区在线播放| 日韩黄色一级片| 五月激情综合色| 一区二区三区四区在线| 国产精品欧美一区二区三区| 久久午夜色播影院免费高清| 欧美一级黄色大片| 亚洲自拍与偷拍| 在线观看日韩电影| 成人h动漫精品| 极品少妇xxxx精品少妇偷拍 | 欧美日韩高清一区| 色婷婷精品大在线视频| 不卡视频一二三| 不卡一二三区首页| www.欧美日韩| 99视频精品免费视频| 国产精品1区2区| 国产成人在线观看免费网站| 精品一区二区在线看| 久久99精品一区二区三区三区| 奇米在线7777在线精品| 欧美a级理论片| 美国欧美日韩国产在线播放| 午夜久久久影院| 亚洲v日本v欧美v久久精品| 欧美视频一区在线| 日本高清不卡视频| www.亚洲国产| 91在线高清观看| 欧美伊人久久久久久午夜久久久久| 成人免费视频一区二区| 激情深爱一区二区| 懂色av一区二区夜夜嗨| 不卡一区中文字幕| 一本大道久久a久久综合| 在线看国产一区二区| 欧美日韩国产三级| 538prom精品视频线放| 精品福利二区三区| 国产精品视频免费看| 亚洲午夜久久久| 蜜桃免费网站一区二区三区| 国产一区在线视频| 99久久精品费精品国产一区二区 | 国产久卡久卡久卡久卡视频精品| 精品一区二区三区香蕉蜜桃 | 91丨porny丨蝌蚪视频| 欧美揉bbbbb揉bbbbb| 日韩欧美自拍偷拍| 中文字幕乱码日本亚洲一区二区| ●精品国产综合乱码久久久久| 亚洲一区视频在线| 激情六月婷婷久久| 色综合久久天天| 欧美精品一区二区三区蜜桃视频| 国产精品盗摄一区二区三区| 视频在线观看国产精品| 国产一区二区成人久久免费影院| 99久久夜色精品国产网站| 欧美日韩美女一区二区| 国产亚洲综合性久久久影院| 亚洲综合区在线| 国产成人自拍网| 欧美理论片在线| 国产精品网站在线观看| 五月婷婷欧美视频| av在线一区二区三区| 91精品国产91热久久久做人人| 国产午夜精品一区二区| 日韩电影一区二区三区四区| 成人午夜激情视频| 欧美大肚乱孕交hd孕妇| 亚洲影视资源网| 国产成人亚洲综合色影视| 69堂亚洲精品首页| 亚洲欧洲综合另类| 国产成人av一区二区三区在线观看| 欧美日韩精品免费观看视频| 国产精品日韩成人| 国产一区二区网址| 日韩一区二区三区在线视频| 一片黄亚洲嫩模| 成人一区二区三区| 亚洲精品一区二区三区99| 午夜精品久久久久久久99樱桃 | 国产精品538一区二区在线| 欧美揉bbbbb揉bbbbb| 亚洲精选在线视频| 成人精品国产一区二区4080| 欧美精品一区男女天堂| 日本成人在线看| 91精品国产色综合久久不卡电影| 一区二区三区色| 在线观看一区日韩| 亚洲人成小说网站色在线| 国产美女久久久久| 久久亚洲一区二区三区明星换脸 | 成人欧美一区二区三区在线播放| 国产美女精品人人做人人爽| 久久综合五月天婷婷伊人| 另类小说图片综合网| 欧美一区2区视频在线观看|