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

文件:英文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都输出一下

其他的,就自己查吧。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值