输入:data/local/lm/3gram-mincount/lm_unpruned.gz
输出:G.fst
代码语言:javascript复制local/format_data.sh
流程:
代码语言:javascript复制1. 解压lm_unpruned.gz并通过arpa2fst转换成G.fst (语言模型概率就成了图权重的一部分)
gunzip -c "$arpa_lm" |
arpa2fst --disambig-symbol=#0
--read-symbol-table=data/lang_test/words.txt - data/lang_test/G.fst
2. 对G.fst进行检查, 检查FST是否随机, 打印出两个数字,最小权重和最大权重,以告诉用户FST不随机的程度。如果一个WFST从任意状态出发的跳转的权重之➕运算为1,那就说这个WFST满足stochastic性质,在一个满足stochastic性质的图上解码,解码效率要高一些。
fstisstochastic data/lang_test/G.fst
3. 确定化(G.fst, L_disambig.fst)
fstdeterminize data/lang_test/G.fst
fstdeterminize data/lang_test/L_disambig.fst
4. 将词典L.fst和语言模型G.fst组合
fsttablecompose data/lang_test/L_disambig.fst data/lang_test/G.fst |
fstdeterminizestar >/dev/null || echo Error
fsttablecompose data/lang/L_disambig.fst data/lang_test/G.fst |
fstisstochastic || echo LG is not stochastic
备注