今天看了语言模型的加载,终于搞明白了,是按照树型结构。
举例:
LM table 如下(省略概率值,只列出了短语):
1-gram
a
b
c
2-grams
a b
a c
c b
b a
c a
3-grams
c b a
加载到内存后形成三个树对象:
a----b----c
|---c
b---- a
|---c
c-----a
注意:树对象的个数和1-gram的个数应该一样,每个树节点都有score 和backoff score,所以一共9种组合,正好把示例的LM全部覆盖。
结论:最省内存,搜索速度快