星星博客 »  > 

HTK中vocab的节点种类

分三种:

一是nullWord,它是不发音的,也就是nullWord->pron==NULL,nullWord->nprons==0;它的wordName->name为“!NULL”;

另一个是subLatWord,特殊的子结构节点;

这两个节点都是比较特殊。其他大量的普通字典项保存在wtab中。它是一个哈希表。

typedef struct {
   int nwords;          /* total number of words */
   int nprons;          /* total number of prons */
   Word nullWord;       /* dummy null word/node */
   Word subLatWord;     /* special word for HNet subLats */
   Word *wtab;          /* hash table for DictEntry's */
   MemHeap heap;        /* storage for dictionary */
   MemHeap wordHeap;    /* for DictEntry structs  */
   MemHeap pronHeap;    /* for WordPron structs   */
   MemHeap phonesHeap;  /* for arrays of phones   */
} Vocab;

看上面是字典Vocab的结构代码,nwords和nprons两个int变量,如果发音字典包含多音字,那么这俩值是不同的,或者有的词缺发音信息,也会造成不相等。

nullWord对应Lattice中的!NULL节点,而subLatWord对应的是Lattice中子网络结构。wtab中存储就是普通的词信息。

相关文章