SRILM使用之ngram-class

ngram-class主要是用来对训练语料的词进行聚类,聚类的依据是基于类的语言模型的困惑度最低。目前仅支持基于类的2gram模型。当然ngarm-class同样会生成ngram-count需要的计数文件和ngram需要的类扩展文件,来训练和使用基于类的N-gram语言模型。

-help

输出帮助信息

-version

输出版本信息

-debug    level

输出调试信息,level为0表示不输出调试信息,为了更好跟踪聚类情况,可将level设为2。

输入选项

-vocab    vocab_file

读取词典文件vocab_file。如果计数文件中或者训练文件中,如果出现了词典vocab_file之外的词(OOV),则这些词会被替换为<unk>。

-tolower

把词典中的词都变成小写(对英文)

-counts    counts_file

读取计数文件counts_file。其中计数文件包含了1阶和2阶计数。

-text    text_file

读取训练文件text_file来生成计数文件或语言模型。

聚类

-numclasses    C

设置需要聚类的数目C。

-full

执行全贪婪聚类算法,复杂度为O(V^3),其中V为词典中词条数目。

-incremental

执行渐进式贪婪聚类算法,复杂度为O(V*C^2),其中V为词典中词条数目,C为聚类数目。此为默认选项。

-maxwordsperclass    M

设置每个聚类中最多的词条数M,默认是无限制的。

-interact

在聚类完成时,提供交互界面,供人工来添加额外的聚类。

-noclass-vocab    noclass-vocab_file

读取不需要聚类的词条文件noclass-vocab_file。虽然noclass-vocab_file不会聚类,但还是会影响模型的困惑度。

-read    class_file

读取原始的聚类文件class_file,它需要满足classes-format的格式。

输出选项

-class-counts    class-counts_file

输出基于类的计数文件class-counts_file,格式同N-gram计数文件一样,可使用ngram-count来生成基于类的语言模型。

-classes    classes_file

输出聚类完之后classes_file,每个类包含的成员词条和它们的概率。在使用ngram时,选项-classes使用的就是classes_file。

-save    S

在聚类时,每隔S次迭代,就保存一次计数文件或聚类文件。

Tips

1.基于类的语言模型可在一定程度上缓解数据稀疏问题。
2.使用一般包括三步,比如:

step1: ngram-class -text train -numclasses 10 -class-counts CLASS_COUNTS_FILE -classes CLASS_FILE

step2: ngram-count -read CLASS_COUNTS_FILE -lm LM.ARPA -gt3min 1 -cdiscount 0.1

step3: ngram -lm LM.ARPA -classes CLASS_FILE -ppl test -debug 2

猜你喜欢

转载自blog.csdn.net/GavinLiu1990/article/details/81707788