使用SRILM为大文件构建语言模型

本文介绍了一种在有限内存条件下,使用SRILM工具包处理大规模文本数据集以训练语言模型的方法。通过将原始文件分割成更小的部分,并采用批处理的方式进行计数和合并,最终成功地完成了对11GB数据集的5-gram语言模型训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件:英文wikipedia article,预处理后大小11G

系统:SUSE x64,128G内存

任务:针对该数据集建立语言模型


SRILM的安装和配置就不再赘述了,百度,52nlp,或者SRILM官网都很详细,根据自己机器来配置即可。贴个百度的吧

http://hi.baidu.com/keyever/item/8fad8918b90b8e6b3f87ce87

下面讲下训练过程中遇到的文件过大问题。http://blog.sina.com.cn/s/blog_3d37a5690100xfl1.html上说,3G的语料,训练trigram时候32G内存不够用,那我的11G训练5-gram不知道要多少内存呢

以为128G内存已经够大了,结果还是在gram-count的地方就果断段错误了。

网上查到的方法是使用linux的split命令将大文件进行切分

split -l 100000 wiki.text wikibatch/。

表示将wiki.text文件,每100000行拆分,拆分到wikibatch目录下,会自动起文件名,如aa,ab之类。开始用10w行,是想充分利用机器的大内存,可酌情拆分。

然后进入到wikibatch目录下,即拆分的目录下,运行ls > filelist命令,将所有文件名输出到filelist文件中,每行一个哦。

然后使用make-batch-counts filelist 1 cat counts -order 3

表示使用批处理计数的功能,filelist就是文件列表,1表示一次只运算一个文件,怕内存溢出。 后面的cat counts表示计数输出到counts目录,-order 3表示3-gram.

再使用merge-batch-counts counts filelist

表示将counts目录下的gz文件都合并成一个

最后使用make-big-lm -read *.gz -order 3 -lm my.lm

根据合并的count文件训练语言模型,保存为my.lm

评估:

./ngram -ppl wikiText_test -debug 1 -order 3 -lm my.lm > wikiText_test.lm.ppl_debug1

不解释了,-debug 1,说明把每个句子的log probability和perplexity都输出一下

其他的,就自己查吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值