最近学习了一下SRILM的源代码,分享一下学习笔记(最新完整版本),希望能够对大家了解SRI语言模型训练工具有些许帮助。限于本人水平,不足之处,望大家多多指教。
笔记的主要内容使用starUML及其逆向工程工具绘制,主要针对SRILM的训练(ngram-count),内含5个jpg文件:
- 类图--与ngram-count相关的主要类的静态图;
- ngram-count--从语料训练出模型的主要流程;
- lmstats.countfile--ngram-count的子流程,用于构建词汇表和统计ngram的频度
- ngram.estimate--ngram-count的子流程,在词汇表和ngram频度的基础上计算ngram条件概率以及backoff权值的过程
- ngram.read--与训练无关,分析读取ARPA格式的语言模型的过程
SRILM训练ngram的过程简单说来,可归结为以下几个步骤:
- 先建立Vocab(词汇表)类型与LMStats(用于ngram统计)类型的两个实例(即vocab和intStats,intStats中存有vocab的一个引用);
- 调用intStats的countFile函数完成(对输入语料文件中&#x