编程语言
首页 > 编程语言> > NetWork中NetNode的类型

NetWork中NetNode的类型

作者:互联网

/* Types of node that can appear in the network */
enum {
   n_unused,            /* Node Instance not yet assigned */
   n_hmm=2,             /* Node Instance represents HMM */
   n_word=4,            /* Node Instance represents word end (or null) */
   n_tr0=4,             /* Entry token reaches exit in t=0 */
   n_wd0=1,             /* Exit token reaches word node in t=0 */
   n_wdstart=8,         /* Temporary wdstart node */
   n_nocontext=15,      /* binary and with this to remove context ids */
   n_lcontext=16,       /* Multiplication factor for context id */
   n_rcontext=16384     /* Multiplication factor for context id */
};
typedef int NetNodeType; 

上面是NetNode的类型,其中后四个比较少见,可以暂时不考虑。

最主要的、数量最多的就是n_hmm和n_word,分别代表hmm模型节点和词节点。也决定着NetNode里的联合体info将呈现HLink还是Pron。

struct _NetNode {
   NetNodeType type;    /* Type of this node (includes context) */
   union {
      HLink  hmm;       /* HMM (physical) definition */
      Pron   pron;      /* Word represented (may == null) */
   }
   info;                /* Extra information specific to type of node */
   char    *tag;        /* Semantic tagging information */
   int nlinks;          /* Number of nodes connected to this one */
   NetLink *links;      /* Array[0..nlinks-1] of links to connected nodes */
   NetInst *inst;       /* Model Instance (if one exists, else NULL) */   
   NetNode *chain;
   int aux;
};

HLink指向hmm对象,Pron指向WordPron对象。

typedef HMMDef * HLink;

typedef struct {
   struct _HMMSet *owner;  /* owner of this model */
   short numStates;        /* includes entry and exit states */
   StateElem *svec;        /* array[2..numStates-1] of StateElem */  
   SVector dur;            /* vector of model duration params, if any */   
   SMatrix transP;         /* transition matrix (logs) */
   int tIdx;               /* Transition matrix index */
   int nUse;               /* num logical hmm's sharing this def */
   Ptr hook;               /* general hook */
} HMMDef;
typedef struct _WordPron  *Pron;

typedef struct _WordPron{   /* storage for each pronunciation */
   short pnum;     /* Pronunciation number 1..nprons */
   short nphones;  /* Number of phones in pronuciation */
   LabId *phones;  /* Array[0..nphones-1] of phones */
   LogFloat prob;  /* Log probability of pronunciation */
   LabId outSym;   /* Output symbol generated when pronunciation recognised */
   Word word;      /* Word this is a pronuciation of */
   Pron next;      /* Next pronunciation of word */
   void *aux;      /* hook for temp info */
} WordPron;

它们在识别中起不同的作用。

除此之外,还有n_tr0表明这个节点是Tee模型,就是它对应的hmm模型的第一个入口状态可以直接跳到最后一个出口状态。

n_wd0表明token传递到词边界类型。这种情况下,首先它得是hmm模型,也是type&n_hmm不为零,然后分两个情况

标签:typedef,word,NetWork,Pron,NetNode,hmm,类型,struct
来源: https://blog.csdn.net/hjx5200/article/details/117822540