分三种:
一是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中存储就是普通的词信息。