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

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

?? hlat.c

?? 隱馬爾科夫模型工具箱
?? C
?? 第 1 頁 / 共 2 頁
字號:
      ln = la->start;      la = (LArc *) ln->hook;   }   AddLabelList (ll, trans);   if (trace & T_TRAN) {      printf ("\n");      printf ("ac lm pr tot: %.3f %.3f %.3f %.3f\n", ac, lm, pr, tot);   }   Dispose (&gcheap, topOrder);   return trans;}/* EXPORT->LatPrune     prune lattice by removing all paths with score more than      thresh lower than the best path.*/Lattice *LatPrune (MemHeap *heap, Lattice *lat, LogDouble thresh, float arcsPerSec){   LogDouble best, limit, score;   LNode *ln, *newln;   LArc *la, *newla;   int i, nn, na;   Lattice *newlat;   LatAttachInfo (&gcheap, sizeof (FBinfo), lat);   best = LatForwBackw (lat, LATFB_MAX);   limit = best - thresh;      /* modify thresh according to arcPerSec limit */   if (arcsPerSec > 0) {#define NBIN 1000      HTime length;      int nArc, nArcLimit, bin;      int hist[NBIN];      float binWidth;      length = LatEndNode (lat)->time;      nArcLimit = length * arcsPerSec;      binWidth = thresh / NBIN;      for (i = 0; i < NBIN; ++i)         hist[i] = 0;      nArc = 0;      for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) {         score = LNodeFw (la->start) + LArcTotLike (lat, la) + LNodeBw (la->end);         bin = (best - score) / binWidth;         assert (bin >= 0);         if (bin < NBIN) {     /* keep */            ++hist[bin];            ++nArc;         }      }            if (nArc > nArcLimit) {         nArc = 0;         for (i = 0; i < NBIN; ++i) {            nArc += hist[i];            if (nArc > nArcLimit)               break;         }         thresh = i * binWidth;         limit = best - thresh;         if (trace &T_PRUN)            printf ("length %.2f nArcLimit %d beam adjusted to %f\n", length, nArcLimit, thresh);      }   }   nn = na = 0;   /* scan arcs and count survivors */   for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) {      score = LNodeFw (la->start) + LArcTotLike (lat, la) + LNodeBw (la->end);      if (score >= limit) {     /* keep */         la->score = (float) na;         ++na;      }      else                   /* remove */         la->score = -1.0;   }   /* scan nodes, count survivors and verify consistency */   for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) {      score = LNodeFw (ln) + LNodeBw (ln);      if (score >= limit) {       /* keep */         ln->n = nn;         ++nn;      }      else {                             ln->n = -1;         /* check that there are no arcs to keep attached to ln */         for (la = ln->foll; la; la = la->farc) {            if (la->score >= 0.0)               HError (8691, "LatPrune: arc score (%f) better than node score (%f)\n",                        LNodeFw (la->start) + LArcTotLike (lat, la) +                       LNodeBw (la->end), score);         }      }   }      if (trace & T_PRUN)      printf ("lattice pruned from %d/%d to %d/%d\n", lat->nn, lat->na, nn, na);   /* build new lattice from remaining nodes/arcs */   newlat = NewILattice (heap, nn, na, lat);   /* copy all the nodes we want to keep */   newln = newlat->lnodes;   for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) {      if (ln->n != -1) {         *newln = *ln;         /* init linnked lists */         newln->foll = newln->pred = NULL;         ++newln;      }   }   assert (newln == newlat->lnodes + nn);   newla = newlat->larcs;    for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) {      if (la->score >= 0.0) {     /* keep */         *newla = *la;         newla->start = newlat->lnodes + ((int) la->start->n);         newla->end = newlat->lnodes + ((int) la->end->n);                  /* insert newla into foll list */         newla->farc = newla->start->foll;         newla->start->foll = newla;         /* ...and into pred list */         newla->parc = newla->end->pred;         newla->end->pred = newla;         ++newla;      }   }   assert (newla == newlat->larcs + na);   LatDetachInfo (&gcheap, lat);   return newlat;}/* StatsInfo structure attached to all LNodes */typedef struct _StatsInfo {   LogDouble nPaths;     /* number of paths from start node */} StatsInfo;#define LNodeStats(ln)  (((StatsInfo *) (ln)->hook))/* CalcStats     calculate and output some global statistics for a lattice*/void CalcStats (Lattice *lat){   LNode **topOrder;   LNode *ln;   LArc *la;   int i, d, max_inDegree, max_outDegree, nWords;   LogDouble nPaths;   Boolean isDAG;   LNode *lnStart, *lnEnd;   Word word;   /* attach StatsInfo structre to nodes */   LatAttachInfo (&gcheap, sizeof (StatsInfo), lat);   for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln)      LNodeStats(ln)->nPaths = 0;   /* find topological order of nodes */   topOrder = (LNode **) New (&gcheap, lat->nn * sizeof(LNode *));   isDAG = LatTopSort (lat, topOrder);   lnStart = isDAG ? topOrder[0] : LatStartNode (lat);   lnEnd = isDAG ? topOrder[lat->nn-1] : LatEndNode (lat);   max_inDegree = max_outDegree = 0;   LNodeStats(lnStart)->nPaths = 1;   /* reset word counters */   for (i = 0; i< VHASHSIZE; i++)      for (word = lat->voc->wtab[i]; word != NULL; word = word->next)         word->aux = (Ptr) 0;   /* iterate over all nodes */   for (i = 0; i < lat->nn; ++i) {      ln = topOrder[i];      /* count words */      ln->word->aux = (Ptr) (((int)ln->word->aux) + 1);      /* count incoming and outgoing arcs */      d = 0;      for (la = ln->pred; la; la = la->parc)         ++d;      if (d > max_inDegree)         max_inDegree = d;      d = 0;      for (la = ln->foll; la; la = la->farc)         ++d;      if (d > max_outDegree)         max_outDegree = d;            if (isDAG) {         /* propagate nPaths forward */         nPaths = LNodeStats(ln)->nPaths;         for (la = ln->foll; la; la = la->farc)            LNodeStats(la->end)->nPaths += nPaths;      }   }   /* find number of words seen in lattice */   nWords = 0;   for (i = 0; i < VHASHSIZE; i++)      for (word = lat->voc->wtab[i]; word != NULL; word = word->next) {         if (word->aux)            ++nWords;         word->aux = (Ptr) 0;      }   nPaths = LNodeStats(topOrder[lat->nn-1])->nPaths;   printf("length[s]      %.2f\n", lnEnd->time);   printf("ArcsPerSec     %.2f\n", lat->na/lnEnd->time);   printf("nodes          %d\n", lat->nn);   printf("arcs:          %d\n", lat->na);   printf("max_inDegree   %d\n", max_inDegree);   printf("max_outDegree  %d\n", max_outDegree);   printf("nWords         %d\n", nWords);   if (isDAG)      printf("nPaths         %e.0\n", nPaths);   else      printf("nPaths         inf\n");   Dispose (&gcheap, topOrder);}/* LatSetBoundaryWords     set start and end words for use in lattices and LM*/void LatSetBoundaryWords (char *start, char *end, char  *startLM, char *endLM){   startWord = GetLabId (start ? start : "!SENT_START", TRUE);   startLMWord = GetLabId (startLM ? startLM : "<s>", TRUE);   endWord = GetLabId (end ? end : "!SENT_END", TRUE);   endLMWord = GetLabId (endLM ? endLM : "</s>", TRUE);   nullWord = GetLabId ("!NULL", TRUE);}/* FixBadLat     if final word is !NULL replace it with endWord. This happens in lattices     produced with some older decoders.*/void FixBadLat (Lattice *lat){   LNode *ln;   LArc *la;   Boolean seenSE, seenOther;   Word end;   LatCheck (lat);   end = GetWord (lat->voc, endWord, FALSE);   if (!end)      HError (8623, "HLRescore: SentEnd word (%d) not in vocabulary", endWord->name);   ln = LatEndNode (lat);   if (ln->word == end)      return;   if (ln->word && ln->word != lat->voc->nullWord)      HError (8624, "HLRescore: final word in lattice (%s) is not !NULL! or sentend",               ln->word->wordName->name);   /* now we know that we have !NULL at the end */   seenSE = seenOther = FALSE;   for (la = ln->pred; la; la = la->parc) {      if (la->start->word == end)         seenSE = TRUE;      else         seenOther = TRUE;   }   if (seenSE && seenOther)      HError (8624, "HLRescore: lattice contains both SentEnd and other words in final position");   if (!seenOther)      return;   ln->word = end;   ln->v = 1;}#ifndef NO_LAT_LM/* LatLMTrans     wrapper around HLM:LMTrans() to take start and end words into account*/static LogFloat  LatLMTrans (LModel *lm, LMState src, LabId wordId, LMState *dest){   LogFloat prob;      if (wordId == nullWord) {      dest = NULL;      return 0.0;   }   else if (wordId == startWord && src == NULL) {      /* always return P(<s>) = 1.0 at start of sentence */      wordId = startLMWord;      prob = LMTrans (lm, src, wordId, dest);      return 0.0;   }   else if (wordId == endWord) {      /* destination state of </s> transition is always NULL */      wordId = endLMWord;      prob = LMTrans (lm, src, wordId, dest);      *dest = NULL;      return prob;   }   else {      prob = LMTrans (lm, src, wordId, dest);   }   return prob;}/* FindAddSubLNode     Search for SubLNode in chain and add it if necessary*/static SubLNode *FindAddSubLNode (MemHeap *heap, LNode *ln, LMState lmstate, int *nsln){   SubLNode *subln;      for (subln = (SubLNode *) ln->hook; subln; subln = subln->next) {      if (subln->data.lmstate == lmstate)         return subln;   }   if (!subln) {      ++*nsln;      subln = New (heap, sizeof (SubLNode));      subln->data.lmstate = lmstate;      subln->foll = NULL;      subln->next = (SubLNode *) ln->hook;      ln->hook = (Ptr) subln;   }   return subln;}/* EXPORT->LatExpand     expand lattice using new (typically higher-order) language Model*/Lattice *LatExpand (MemHeap *heap, Lattice *lat, LModel *lm){   int i, nsln, nsla;   LNode *ln, *newln;   LNode **topOrder;   LArc *la, *newla;   SubLNode *startSLN, *endSLN, *sln;   SubLArc *sla;   LogFloat lmprob;   LMState dest;   Lattice *newlat;   nsln = nsla = 0;   /* The idea of this algorithm is that we will split each node and arc      in the lattice into multiple sub-nodes and sub-arcs as required      by the new LM.       N.B.We never join existing nodes, i.e. Calling LatExpand() with a      bigram on a fourgram lattice will not reduce the size of the lattice.   */   /* for each node in the lattice we keep a linked list (hung of      ln->hook) of sub-nodes (corresponding to LMStates in the new      LM). */   /* init sub-node linked lists */   for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) {      ln->hook = NULL;   }   /* create one sub-node for lattice start node with LMState = NULL */   FindAddSubLNode (&slnHeap, LatStartNode (lat), NULL, &nsln);      /* find topological order of nodes */   topOrder = (LNode **) New (&gcheap, lat->nn * sizeof(LNode *));   LatTopSort (lat, topOrder);      /* create lists of sub-nodes and sub-arcs and count them as we go along */   for (i = 0; i < lat->nn; ++i) {      ln = topOrder[i];      for (startSLN = (SubLNode *) ln->hook; startSLN; startSLN = startSLN->next) {         /* for each outgoing arc from current subLNode */         for (la = ln->foll; la; la = la->farc) {            assert (la->start == ln);            lmprob = LatLMTrans (lm, startSLN->data.lmstate, la->end->word->wordName, &dest);            endSLN = FindAddSubLNode (&slnHeap, la->end, dest, &nsln);            /* add new subLArc */            ++nsla;            sla = New (&slaHeap, sizeof (SubLArc));            sla->lmprob = lmprob;            sla->end = endSLN;            sla->la = la;            /* add to list of arcs leaving startSLN */            sla->next = startSLN->foll;            startSLN->foll = sla;         }      }   }   if (trace & T_EXP)      printf ("expanded lattice from %d/%d  to %d/%d\n", lat->nn, lat->na, nsln, nsla);      /* build new lattice from sub-node/-arc lists */   newlat = NewILattice (heap, nsln, nsla, lat);   newlat->net = CopyString (heap, lm->name);   /* create one node in new lattice for each sub node in old lattice */   newln = newlat->lnodes;   for (i = 0; i < lat->nn; ++i) {      ln = topOrder[i];      for (sln = (SubLNode *) ln->hook; sln; sln = sln->next) {         *newln = *ln;         newln->foll = newln->pred = NULL;         newln->n = 0;         newln->hook = NULL;         sln->data.newln = newln;         ++newln;      }   }   assert (newln = newlat->lnodes + newlat->nn);   /* create arcs in new lattice */   newla = newlat->larcs;   for (i = 0; i < lat->nn; ++i) {      ln = topOrder[i];      for (sln = (SubLNode *) ln->hook; sln; sln = sln->next) {         newln = sln->data.newln;         for (sla = sln->foll; sla; sla = sla->next) {            *newla = *sla->la;            newla->start = newln;            newla->end = sla->end->data.newln;            newla->lmlike = sla->lmprob;                        /* add to start node foll list */            newla->farc = newla->start->foll;            newla->start->foll = newla;            /* add to end node pred list */            newla->parc = newla->end->pred;            newla->end->pred = newla;                        ++newla;         }      }   }   assert (newla == newlat->larcs + newlat->na);   if (trace & T_MEM) {      printf("Memory State after expanding\n");      PrintAllHeapStats();   }   Dispose (&gcheap, topOrder);   ResetHeap (&slaHeap);   ResetHeap (&slnHeap);   return newlat;}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91富婆露脸刺激对白| zzijzzij亚洲日本少妇熟睡| 国产蜜臀av在线一区二区三区| 欧美午夜精品一区二区蜜桃| 亚洲人123区| 精品国产免费人成在线观看| 欧美吞精做爰啪啪高潮| 成人性视频免费网站| 日韩av电影天堂| 亚洲美女偷拍久久| 国产精品久久一级| 26uuu亚洲综合色欧美 | 色综合一个色综合亚洲| 极品少妇xxxx偷拍精品少妇| 亚洲成av人片在线观看无码| 亚洲品质自拍视频| 国产精品欧美久久久久一区二区 | 日本精品裸体写真集在线观看 | 国产精品国产三级国产普通话三级 | 国产成人综合在线| 精品亚洲欧美一区| 蜜臀国产一区二区三区在线播放| 亚洲一二三四在线| 一区二区三区中文在线| 国产精品久久久一本精品| 久久久久久一级片| 久久麻豆一区二区| 精品盗摄一区二区三区| 日韩欧美国产精品| 欧美一区二区三区白人| 欧美日高清视频| 欧美性一区二区| 欧美日韩精品欧美日韩精品 | 欧美性大战久久久久久久| 色婷婷亚洲精品| 色老综合老女人久久久| 色婷婷精品大在线视频| av成人免费在线| 色噜噜狠狠色综合欧洲selulu| 色吊一区二区三区| 欧美日韩精品一区二区天天拍小说| 日本乱码高清不卡字幕| 欧洲av一区二区嗯嗯嗯啊| 欧美日韩在线不卡| 欧美一二三在线| 久久一区二区视频| 中文字幕乱码一区二区免费| 国产欧美日韩一区二区三区在线观看 | 日本精品视频一区二区| 在线看日本不卡| 欧美日韩国产精品成人| 欧美日韩精品系列| 日韩精品专区在线影院观看| 2021中文字幕一区亚洲| 国产欧美日韩综合| 亚洲黄色片在线观看| 亚洲成人综合在线| 久久福利资源站| 风流少妇一区二区| 在线观看不卡一区| 欧美一区二区在线免费播放| 久久综合五月天婷婷伊人| 亚洲国产经典视频| 亚洲在线视频免费观看| 蜜桃av噜噜一区二区三区小说| 狠狠狠色丁香婷婷综合激情 | 免费观看一级欧美片| 捆绑紧缚一区二区三区视频 | 在线观看亚洲a| 日韩丝袜美女视频| 国产精品欧美综合在线| 亚洲第一成年网| 国产精品18久久久久久久网站| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美色图在线观看| 精品久久久久久久久久久院品网| 亚洲欧美在线观看| 日韩精品五月天| 成人aaaa免费全部观看| 欧美丰满少妇xxxbbb| 中国色在线观看另类| 天天综合日日夜夜精品| 国产综合色在线视频区| 在线国产亚洲欧美| 国产日韩欧美一区二区三区综合| 亚洲电影视频在线| www.性欧美| 日韩三级伦理片妻子的秘密按摩| 中文字幕人成不卡一区| 久久国产视频网| 在线观看免费一区| 中文字幕高清一区| 免费成人美女在线观看| 色婷婷国产精品久久包臀 | 久久久一区二区三区捆绑**| 一区二区三区四区视频精品免费| 久草在线在线精品观看| 在线亚洲免费视频| 亚洲国产成人午夜在线一区| 免费观看在线综合| 欧美日韩一区二区三区四区| 国产精品久久精品日日| 极品瑜伽女神91| 欧美酷刑日本凌虐凌虐| 最新国产成人在线观看| 国产精品亚洲人在线观看| 欧美剧在线免费观看网站 | 久久综合999| 日韩精品成人一区二区三区 | 欧美精品成人一区二区三区四区| 国产精品天天看| 国产激情精品久久久第一区二区| 欧美一区二区精品| 性久久久久久久久| 91黄色免费看| 亚洲天堂久久久久久久| 国产乱码精品一区二区三 | 久久国产免费看| 在线观看国产91| 国产精品蜜臀av| 国产91对白在线观看九色| 欧美va在线播放| 亚洲成av人**亚洲成av**| 91久久久免费一区二区| 亚洲日穴在线视频| 91在线观看视频| 综合色天天鬼久久鬼色| 成人99免费视频| 中文字幕一区二区三区精华液 | 欧美猛男gaygay网站| 洋洋av久久久久久久一区| 97精品视频在线观看自产线路二| 国产精品久久久久婷婷二区次| 高清日韩电视剧大全免费| 国产欧美1区2区3区| 成人av综合一区| 成人欧美一区二区三区视频网页| 成人av高清在线| 亚洲欧美日韩综合aⅴ视频| 91猫先生在线| 亚洲成人tv网| 欧美一卡在线观看| 韩国成人在线视频| 久久久久国产精品人| 在线亚洲一区观看| 樱花草国产18久久久久| 欧美少妇一区二区| 日本vs亚洲vs韩国一区三区二区 | 国产精品国产三级国产普通话三级 | 国产一区视频网站| www精品美女久久久tv| 国产一区二区三区在线观看精品| 精品福利一区二区三区免费视频| 韩国中文字幕2020精品| 中文字幕不卡一区| 欧美亚洲自拍偷拍| 久久精品国产亚洲a| 久久综合色鬼综合色| 国产91在线看| 亚洲国产成人porn| 精品国产欧美一区二区| 东方aⅴ免费观看久久av| 亚洲欧美日韩国产一区二区三区| 欧美日韩国产综合一区二区三区| 免播放器亚洲一区| 国产亚洲精品aa| 在线视频综合导航| 麻豆国产欧美一区二区三区| 中文字幕av一区二区三区高| 91黄色免费版| 久久精品国产亚洲高清剧情介绍 | 99精品黄色片免费大全| 亚洲高清免费在线| 久久精子c满五个校花| 色婷婷综合久色| 久久国产麻豆精品| 亚洲靠逼com| 日韩欧美在线一区二区三区| 成人免费av资源| 奇米影视在线99精品| 国产精品麻豆欧美日韩ww| 欧美精品aⅴ在线视频| 国产成人在线网站| 爽好久久久欧美精品| 国产精品福利一区| 日韩欧美激情四射| 在线亚洲一区观看| 国产麻豆精品theporn| 亚洲chinese男男1069| 国产精品免费aⅴ片在线观看| 欧美一区二区三区不卡| 色综合久久九月婷婷色综合| 国内精品写真在线观看| 亚洲午夜免费视频| 国产精品毛片无遮挡高清| 精品少妇一区二区三区| 在线精品视频免费观看| 成人av在线电影| 国产精品一区二区男女羞羞无遮挡 | 高清不卡在线观看av|