模型训练:
nohup ngram-count -text tieba.word.merged -order 4 -vocab ../words.txt -kndiscount -interpolate -lm tieba.word.4gram.lm &
结果测试:
ngram -lm tieba.word.4gram.lm -ppl ../baiduLabel300h_201811_dev.text.raw.merged
生成ppl文件:
ngram -lm tieba.word.3gram_prune_5e-8.lm -debug 2 -ppl ../baiduLabel300h_201811_dev.text.raw.merged >tieba.word.3gram_prune_5e-8.ppl
模型剪枝:
ngram -lm tieba.word.4gram.lm -prune 0.000000001 -write-lm tieba.word.4gram_prune_e-9.lm
计算最佳插值比例:
compute-best-mix lambda="0.99999, 0.00001 " tieba.word.4gram_prune_e-9.ppl baidu300.3gram.ppl
模型合并
##功能
#用于多个语言模型之间插值合并,以期望改善模型的效果
##参数
#模型插值:
# -mix-lm 用于插值的第二个ngram模型,-lm是第一个ngram模型
# -lambda 主模型(-lm对应模型)的插值比例,0~1,默认是0.5
# -mix-lm2 用于插值的第三个模型
# -mix-lambda2 用于插值的第二个模型(-mix-lm对应的模型)的比例,那么第二个模型的比例为1-lambda-mix-lambda2
# -vocab 当两个模型的词典不一样的时候,使用该参数限制词典列表,没有效果
# -limit-vocab 当两个模型的词典不一样的时候,使用该参数限制词典列表,没有效果
ngram -lm ${mainlm} -order 2 -mix-lm ${mixlm} -lambda 0.8 -write-lm ${mergelm}
kaldi中生成 arpa及fst格式语言模型
ngram-count -text ./data/kunpeng_threshold_-50.txt -order 5 -kndiscount -interpolate -lm ./data/lang_nosp_5gram/kunpeng_5gram.lm
arpa2fst --disambig-symbol=#0 --read-symbol-table=exp/chain/tdnn7q_sp/graph_eng_lm/words.txt data/lang_nosp_5gram/kunpeng_5gram.lm ./data/lang_nosp_5gram/G.fst