[moses笔记]编译含有nplm的moses解码器
ACL2014的best paper Fast and Robust Neural Network Joint Models for Statistical Machine Translation在SMT中使用深度学习知识,提出了一种neural network joint model(事实上就是融合源端语言知识去做语言模型),论文实验给出的结果宣称大幅度提高了以往基于n-gram语言模型翻译系统的翻译性能。
开源机器翻译系统moses也实现并集成了上述研究成果。參见[1]中
An implementation of Devlin
 et al. (2014), a neural network language model that uses a target-side history as well as source-side context, is           implemented in Moses as
 BilingualLM. It uses NPLM as back-end (check its
 installation instructions).
只是moses自己对他命名为Bilingual Neural LM(双语神经网络语言模型)。
和其它语言模型一样,moses将其视为一个翻译特征(feature)融合到自己的解码器中。
特征的集成參见[1]。可是假设心急,只改改moses配置文件mose.ini。在训练和解码阶段,使用曾经普通的moses解码器(一般都是使用KenLM或者Srilm作为语言模型),moses解码器会报错无法识别那个特征。
參见[1], 正确做法是:
1. 安装神经网络语言模型工具(a neural network language model toolkit)nplm。
2. 在编译的时候带上參数
- --with-nplm=<root dir of the NPLM toolkit>
可是我在安装过程中遇到问题:
Unable to load Boost.Build: could not find "boost-build.jam"
-----------------------------------------------------
Attempted search from /path/to/mosesdecoder up to the root at /path/to/mosesdecoder/share/boost-build. and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: /usr/share/boost-build
開始。遇到这个问题。我一直以为是boost库安装错误。
參考[2],[3]等,对boost一阵着折腾。没有不论什么效果....
在加上我之前安装nlpm成功。并依照[1]上的方法成功训练出Bilingual
 Neural LM,我更加确定是boost库的问题。
boost版本号各种换,boost安装方法各种尝试等,一直折腾到凌晨3点半。晕。
**推荐使用[4]中方法
./bootstrap.sh
./b2 -j4 --prefix=$PWD --libdir=$PWD/lib64 --layout=system link=static install || echo FAILURE
次日,我又一次编译moses,不带nlpm參数。居然成功了。
这也就是说编译boost库是没有问题的。到这个时候,我才開始回过头来考虑是否是nlpm在和moses一起编译的时候是否有问题。
但详细是哪里出问题,仍然一无所知。
偶然地,我发现编译的时候有一个错误:
/home/xwang/11.Moses/nplm-master/src/neuralLM.h:10:23: fatal error: Eigen/Dense: No such file or directory
查看出错的地方
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Eigen这个包事实上是放在nlpm根文件夹下的3rdparty文件夹下。
在编译nlpm的时候,须要在makefile文件里指定一些依赖包的路径(boost、Eigen等)。
此处,我手动地给改掉出错的地方。将nplm的src中头文件和cpp文件手动改动Eigen头...
改动后为:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
注意。全部出错的地方都要改动。查看出错的地方:
然后带上nlpm编译,编译通过,成功。
參考:
[1] http://www.statmt.org/moses/?n=FactoredTraining.BuildingLanguageModel#ntoc38
[2] http://comments.gmane.org/gmane.comp.nlp.moses.user/6322
[3] http://comments.gmane.org/gmane.comp.nlp.moses.user/11461
[4] http://www.statmt.org/moses/?
n=Development.GetStarted
[moses笔记]编译含有nplm的moses解码器的更多相关文章
- blfs(systemv版本)学习笔记-编译安装i3-wm平铺式窗口管理器
		我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! i3-wm项目的官网:https://i3wm.org/ 首先需要lfs基础上编译安装完整的xorg服务 我的xorg服务编译安 ... 
- 如何在Eclipse CDT中编译含有多个main函数的项目
		最近在杭电ACM上做题,使用的C++工具是Eclipse,但是Eclipse CDT不能同时存在多个main函数的文件,上网也搜了很多资料,但是按他们的步骤来,还是不能实现自己想要的效果.经过一下午的 ... 
- blfs(systemd版本)学习笔记-编译安装配置dhcpcd
		我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! dhcpcd项目地址:http://www.linuxfromscratch.org/blfs/view/stable-syst ... 
- JVM笔记——编译期的优化
		一.编译过程 解析和填充符号表的过程 插入注解处理器的注解处理过程 语义分析与字节码生成过程 二.解析和填充符号表 解析包含两个过程:词法分析和语法分析 (一)词法分析 将源代码的字符流转变成标记(T ... 
- blfs(systemd版本)学习笔记-编译安装openssh软件包
		我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! openssh项目地址:http://www.linuxfromscratch.org/blfs/view/stable/pos ... 
- blfs(systemd版本)学习笔记-编译安装sudo并创建普通用户配置sudo权限
		我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! blfs书中sudo的安装配置章节:http://www.linuxfromscratch.org/blfs/view/stab ... 
- blfs(systemv版本)学习笔记-编译安装ligtdm显示管理器
		我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! ligtdm带有显示管理器和登录器,参照我的笔记安装xorg和i3后安装lightdm,就可以组成一个简易的桌面环境了 下面是l ... 
- blfs(systemv版本)学习笔记-编译安装配置dhcpcd
		我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! dhcpcd项目地址:http://www.linuxfromscratch.org/blfs/view/8.3/basicne ... 
- blfs(systemv版本)学习笔记-编译安装openssh软件包
		我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! openssh项目地址:http://www.linuxfromscratch.org/blfs/view/8.3/postlf ... 
随机推荐
- 1. ECMAScript 6 简介--ES6
			1. ECMAScript 和 JavaScript 的关系 国际标准化组织ECMA 制定了语言 ECMAScript, 该标准针对 Javascript 语言制定, 不叫Javascript 原因有 ... 
- 【AC自动机】【状压dp】【滚动数组】hdu6086 Rikka with String
			给你m个01串,问你有多少个长度为2L的01串,满足前半段倒置取反后等于后半段,并且包含所有的m个01串. 考虑单词完全在中线前面或者后面的情况,直接将单词及其倒置取反插入AC自动机,AC自动机每个结 ... 
- [转]json+JSONObject+JSONArray 结合使用
			JSONObject与JSONArray的区别简述: 区别在于JSONObject是一个{}包裹起来的一个对象(Object),而JSONArray则是[]包裹起来的一个数组(Array),说白点就是 ... 
- 如何还原phpstorm默认设置
			我不知道phpstorm有没有这个功能,反正我是没找到. 首先,找到phpstorm的配置文件,一般在C:\Users\Administrator 每个人的都可能不一样. 如果phpstorm打开的话 ... 
- 《SQL Server企业级平台管理实践》读书笔记
			http://www.cnblogs.com/zhijianliutang/category/277162.html 
- EASYUI DATAGRID加合计
			想达到的效果(计算当前展示的20条的合计数量(一言难尽)): 参考http://www.jb51.net/article/85645.htm(万分感谢该文的作者) 相关代码: function onL ... 
- JS isNaN()函数
			1.作用 isNaN() 函数用于检查其参数是否是非数字值. 2.JS <script> document.write(isNaN(123)); document.write(isNaN( ... 
- 关于单例模式的N种实现方式
			在开发中经常用到单例模式,单例模式也算是设计模式中最容易理解,也是最容易手写代码的模式,所以也常作为面试题来考.所以想总结一下单例模式的理论知识,方便同学们面试使用. 单例模式实现的方式只有两种类型, ... 
- WordPress < 3.6.1 PHP 对象注入漏洞
			0x00 背景 当我读到一篇关于Joomla的“PHP对象注射”的漏洞blog后,我挖深了一点就发现Stefan Esser大神在2010年黑帽大会的文章: http://media.blackhat ... 
- OSG 中文解决方案  【转】
			概述 本文只限于 windows 环境下. OSG 在 windows 下对中文支持已经非常的好了,但是可能很多人并不知道如何去正确的使用.为了解决这些常见的问题,还有一些基础知识的普及.特此把 OS ... 
