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