本文主要是介绍srilm的使用,参考别处,此为记录,方便日后查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用:
由于计算机内存的限制,将处理的文件分为小文件和大文件两种:
小文件:
词频统计:
ngram-count -text train.txt -order 3 -write train.count
模型训练:
ngram-count -read train.txt.count -order 3 -lm train.lm -interpolate -kndiscount
-read指向输入文件,为上一步的输出文件
-order与上同
-lm指向训练好的语言模型输出文件
最后两个参数为所采用的平滑方法,-interpolate为插值平滑,-kndiscount为 modified Kneser-Ney 打折法,这两个是联合使用的
计算困惑度:
ngram -ppl test.txt -order 3 -lm LM > result
-ppl为对测试集句子进行评分(logP(T),其中P(T)为所有句子的概率乘积)和计算测试集困惑度的参数
result为输出结果文件
其他参数同上。
大文件:
切分:
split -l line_num_of_file inputfile outputfiledir /outputfie_prefix
例:split -l 10000 train.txt filedir/
具体split的使用方法可以自己查询。
单个文件词频统计:
make-batch-counts file-list 1 cat counts -order 3 -sort
file-list是个文件名,这个文件存储了你分割大文件而得到的小文件的文件名;5的意识是每5个小文件用于一次ngram-count训练,获得对应的count文件;cat 是用于过滤输出的脚本名,我们这里直接输出;后面的是传给ngram-count的参数,可以自己根据需要写。
合并结果:
merge-batch-counts [ -l N ] counts [ filename-list ]
例:merge-batch-counts ./counts
将counts目录下的所有文件合并成一个文件,如果有些文件不用参与合并,可以在最后添加一个filename-list,只有在filename-list里面出现的文件才会被用于合并;-l N参数之处,一次同时合并N个文件。
训练语言模型:
make-big-lm -read ../counts/*.ngrams.gz -lm ../split.lm -order 3
用法同ngram-count
计算困惑度:
ngram -ppl filepath.txt -order 3 -lm split.lm -debug 2 > file.ppl
备注:
语料必须是分好的词,即用空格隔开,英文的书写都是用空格隔开的,但中文的书写各个字词之间并未空格,因此需要使用分词工具将文本自动分词,中文自动分词也是技术活,属于NLP范畴,常用的分词工具有:jieba、SnowNLP、pynlpir,thulac等,可以自己下载使用。
原文:https://blog.csdn.net/nsh119/article/details/81171208
这篇关于srilm的使用,参考别处,此为记录,方便日后查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!