srilm是著名的约翰霍普金斯夏季研讨会(Johns Hopkins Summer Workshop)的产物,诞生于1995年,由SRI实验室的Andreas Stolcke负责开发维护。
srilm支持语言模型的估计和评测。估计是从训练数据(训练集)中得到一个模型,包括最大似然估计及相应的平滑算法;而评测则是从测试集中计算其困惑度。
其中,-vocab train.dict中 train.dict为词典文件,每行一个词,格式如下:
-text train.txt 中 train.txt为语料库文件,每行中的词用空格隔开,表示分词结果,格式如下:
-order 最大的n元模型,3表示unigram,bigram,trigram
-write train.count 统计文件写到train.count中
-unk 表示没有在词典中的词用<unk>表示
train.count中的内容如下(每行格式为:ngram 词频):
其中,-read train.count 读取上一步生成的统计文件
-lm train.lm 生成最高为trigram的语言模型train.lm
-interpolate 利用差值算法
生成的语言模型train.lm为ARPA格式的语言模型,如下:
上面的两个步骤可以直接生成,如下:
上面已经生成了语言模型train.lm,利用它来测试数据的困惑度
测试数据的格式同语料数据,每个句子内部用空格隔开表示分词。
结果如下:
参考 :
这个错误提示是指使用modified KneserNey平滑算法时,某个阶数的count-of-counts为0,导致了discount estimator的错误。解决该问题的方法有以下几种:
检查输入的语料是否符合要求:该错误可能是因为输入的语料不完整或不符合要求导致的。建议检查语料文件的格式是否正确,是否包含足够数量和多样性的句子。
检查词汇表文件是否正确:该错误可能是由于词汇表文件中包含错误的单词或单词数量不足所致。建议检查词汇表文件的格式和内容是否正确,并确认其中包含所有语料中使用到的单词。
调整平滑算法:如果以上两种方法都无法解决问题,可以考虑调整平滑算法。尝试使用其他平滑算法,或者调整平滑算法的参数,如调整interpolation的参数值。
增加语料数量:如果以上方法都无法解决问题,可以考虑增加语料的数量,这有助于改善模型的训练效果,并提高模型的鲁棒性。
总之,该错误可能是由于语料、词汇表、平滑算法等方面的问题导致的,可以针对具体情况逐一排查并解决。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)