通过reranking(重排序)测试lm(语言模型)性能
来源:互联网 发布:淘宝物流几天自动收货 编辑:程序博客网 时间:2024/04/29 06:13
代码在文尾共享
一. 系统说明
在常见语言模型测评指标是困惑度,它为语言模型性能优劣提供一个参考指标。但机器翻译的实际使用中,困惑度上的差异并不一定能很好地改善翻译性能。因此本文提出将待测试的语言模型通过使用reranking(重排序)的方式结合到系统之中,来对语言模型的性能进行测试。
为了方便各类语言模型不同的接口,本系统采用线下的方式,只要你的语言模型能够将将句子打分输出成每句话一行的格式,就能够使用本系统对其性能进行测试。
本系统在机器翻译的部分使用了有东北大学自然语言处理实验室推出的NiuTrans系统,在这里向其表示感谢。
二. 所需数据
1. 训练模型所需:
翻译模型源语文件
翻译模型目标语文件
翻译模型词对齐文件
语言模型训练语料文件
基线系统权重调优的开发集
reranking时权重调优的开发集
2. 测试语言模型性能所需:
测试集源语文件
测试集参考译文文件
三. 操作过程
————————-安装阶段————————-
1. 执行install.sh脚本:安装NiuTrans系统,并编译其中的rerank程序(C++编写的)。
————————-训练阶段————————-
2. 编辑do_train.sh脚本,设置相应参数:
TM_TRAIN_FILE_SRC:翻译模型源语文件
TM_TRAIN_FILE_TGT:翻译模型目标语文件
TM_TRAIN_FILE_ALI:翻译模型词对齐文件
LM_TRAIN_FILE:语言模型训练语料文件
LM_TRAIN_NGRAM:语言模型元数
DEV_FOR_BASELINE:基线系统权重调优的开发集
DEV_FOR_RERANKING:reranking时权重调优的开发集
DEV_FOR_BASELINE_NREF:基线系统开发集参考译文个数
DEV_FOR_RERANKING_NREF:reranking开发集参考译文个数
保存编辑
3. 执行do_train.sh脚本,该脚本执行的操作如下:
训练翻译模型
生成以下目标文件:
model.phrase文件夹
/model.phrase/phrase.translation.table
/model.phrase/me.reordering.table
/model.phrase/msd.reordering.table
/model.phrase/train-model.log
/model.phrase/NiuTrans.phrase.train.model.config
训练语言模型
生成以下目标文件:
lm文件夹
/lm/lm.vocab
/lm/lm.trie.data
生成所需config文件
生成以下目标文件:
NiuTrans.phrase.user.config
对基线系统进行权重调优
生成以下目标文件:
mert-model.log
修改以下目标文件:
NiuTrans.phrase.user.config
从用于reranking的开发集中抽取源语句子
生成以下目标文件:
reranking开发集.src(在reranking开发集文件的目录中)
对抽取出来的源语句子进行解码,生成nbest
生成以下目标文件:
nbest.out
从生成的nbest中抽取译文
生成以下目标文件:
nbest.out.tgt
统计译文中单词个数
生成以下目标文件:
nbest.out.tgt.wordNum
设置所有目标语句子参与权重调优(有这个参数是为了支持只是用某些句子进行调优,如疑问句)
生成以下目标文件:
nbest.out.tgt.mark
————————-语言模型打分阶段(一)————————-
4. 对nbest的译文使用待测试的语言模型进行打分(格式为每行一个句子的打分)
————————-reranking的权重调优阶段————————-
5. 编辑do_mert_for_rerank.sh脚本,设置相应参数:
SCORE_FILE:待测试的语言模型的打分文件
DEV_FOR_RERANKING:reranking时权重调优的开发集
DEV_FOR_RERANKING_NREF:reranking开发集参考译文个数
保存编辑
6. 执行do_mert_for_rerank.sh脚本,该脚本执行的操作如下:
向旧的nbest中增加新的特征,也就是待测试的语言模型打分/句中单词数
生成以下目标文件:
nbest.out.addF
对reranking部分进行权重调优
生成以下目标文件:
nbest.out.addF.rerank
baseline.config.tuned(在mert_for_rerank文件夹中)
baseline.config.tuned.rerank(在mert_for_rerank文件夹中)
niutransserver.mert.result.txt(在mert_for_rerank文件夹中)
————————-测试阶段————————-
7. 编辑do_test.sh脚本,设置相应参数:
TEST_FILE:测试集源语文件
保存编辑
8. 执行do_test.sh脚本,该脚本执行的操作如下:
对测试集句子进行解码,生成nbest
生成以下目标文件:
test.nbest.out
从生成的nbest中抽取译文
生成以下目标文件:
test.nbest.out.tgt
统计译文中单词个数
生成以下目标文件:
test.nbest.out.tgt.wordNum
设置所有目标语句子参与权重调优(有这个参数是为了支持只是用某些句子进行调优,如疑问句)
生成以下目标文件:
test.nbest.out.tgt.mark
————————-语言模型打分阶段(二)————————-
9. 对测试集nbest的译文使用待测试的语言模型进行打分(格式为每行一个句子的打分)
————————-测试后的reranking阶段————————-
10. 编辑do_rerank.sh脚本,设置相应参数:
SCORE_FILE:待测试的语言模型的打分文件
REFERENCE_FILE:测试集参考译文文件
REFERENCE_FILE_NREF:测试集参考译文个数
保存编辑
11. 执行do_rerank.sh脚本,该脚本执行的操作如下:
向旧的nbest中增加新的特征,也就是待测试的语言模型打分/句中单词数
生成以下目标文件:
test.nbest.out.addF
使用调优过的reranking权重对解码出的nbest进行重新排序
生成以下目标文件:
test.nbest.out.addF.rerank
从基线的nbest中抽出1best
生成以下目标文件:
test.1best.out
从reranking后的nbest中抽出1best
生成以下目标文件:
test.1best.out.rerank
计算测试集在基线上的bleu值
计算测试集在reranking后的bleu值
通过比较这两个bleu值来判断该语言模型是否对原系统又补充作用。
注:以上文件若无特殊声明均以NiuTrans根目录下的work目录为一级目录表示
系统实现代码http://pan.baidu.com/s/1miyiCWw ,欢迎大家进行测试并提出宝贵意见。
该博文永久更新网址转移到个人小站:通过reranking(重排序)测试lm(语言模型)性能
- 通过reranking(重排序)测试lm(语言模型)性能
- 语音识别中的声学模型(AM)和语言模型(LM)
- 相机模型与标定(九)--LM算法
- 计数排序(性能测试)
- 性能测试用户模型(二):用户模型图
- 性能测试学习之二 ——性能测试模型(PV计算模型)
- 性能测试中的测试模型设计(图)
- 插入排序(性能的简单测试)
- 最大堆排序(性能测试)
- 快速排序(C性能测试)
- 深入理解java内存模型(二)重排序
- Java内存模型FAQ(四)重排序意味着什么?
- Java内存模型FAQ(四)重排序意味着什么?
- jVM内存模型(二、重排序与同步)
- mediawiki(LM智库)使用手册
- 相机模型与标定(七)--LM算法在相机标定中的使用
- 【内存模型】重排序
- 关于性能测试模型的探讨(转)
- Java Thread(线程)案例详解sleep和wait的区别
- Python比较字符串cmp
- 对小程序的理解以及开发过程中的一些体会
- Linux内核配置、编译及Makefile简述
- 职工信息管理系统(未完成)
- 通过reranking(重排序)测试lm(语言模型)性能
- 广宇精灵古怪令沃美祖师老怀大慰
- 使用springMVC的详细步骤
- 广宇进入大雷音寺寻找沃美遗迹
- Spring学习笔记 关于spring 2.x中dependency-check标签与Spring3中的实现方式
- 鲁能携手沃美影城首度进军天津市场
- Python字符串分割命令split
- 【日记】新工作狂
- Windows下搜索设置