
词网格(word lattice),在国内亦被称作词图,本质上是一个有向无环(directed acyclic graph)图。每个词网格包含一个开始结点以及一个结束结点,分别用<s>和</s>表示,即在每个词网格中,仅存在一个入度(in-degree)为0的节点和一个出度(out-degree)为0的节点。图1为一个简单的词网格表示:
图1 信息在节点上的词网格
图2 信息在弧上的词网格
在图1中,开始节点和结束分别位于图中的最左端和最右端,每个节点与下一个节点用一有向弧连接,每个节点上存有相应的信息。比如在语音识别的结果表示上,每个节点存放当前位置上语音识别的结果,包括声学概率、语言概率等信息。有些词网格会将识别信息放在弧上,如图2所示,其实本质上与信息存放在结点上是一致的。HTK中会提供选项供用户选择其中一种表示方式。我比较倾向于采用信息在节点上(words on nodes)的表示方式,选择这种方式的最直接原因是基于节省空间的目的,因为在第二种表示方式(words on arcs)中,相同的词会被重复多次,比如图2中的“北京”、“背景”等词,这会造成大量的空间浪费,而在图1中,每个word仅需保存一次,空间需求较小。但将信息放在弧上也有优势,在解码搜索时,直接取出弧上的信息即可,而采用第一种方式,需要查看前驱结点来获得识别信息,需要一些额外的工作,因此效率没有第二种方式高,这也是“以空间换时间还是以时间换空间”思想的另一个体现。
在语音识别中,词网格是识别结果的一种比较紧凑的表示形式,可以用较少的存储空间来表示较多的识别结果。以图1的简单表示为例,就有“<s>北京欢迎你</s>”、“<s>北京换映你</s>”、“<s>背景欢迎你</s>”、“<s>背景换映你</s>”这四种结果,随着结点和弧的增多,最终的结果数量会以指数的形式增长。
