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

最新文章

  1. svn上传工程之后下载,打开下载之后的工程缺少文件
  2. VIM配置
  3. JS常用的function集合
  4. 转:[版本控管]TortoiseSVN 使用,抓出兇手,使用 Blame 查看每一行最後修改的人是誰
  5. ie 7/8不支持trim的属性的解决方案
  6. c# MVC在WEB.Config中配置MIME
  7. 安装Ubuntu 15.10后要做的事
  8. 【Unity3D实战】摇摆直升机开发实战(一)
  9. Scala中的数组
  10. HDOJ2026首字母变大写
  11. 关于ASIHTTPRequest连续请求,并发连续,间隔时间很小崩溃问题
  12. jsp验证码 (通过单击验证码或超链接换验证码)
  13. 洛谷P3402 【模板】可持久化并查集(可持久化线段树,线段树)
  14. AngularJS1.X学习笔记10-自定义指令(下)
  15. QT汇总
  16. 使用HttpClient和Jsoup实现一个简单爬虫
  17. dubbo 图片服务器(FastDFS) redis solr ActiveMQ等简单配置使用
  18. 193 Valid Phone Numbers
  19. KVM镜像image 转换 调整
  20. Tomcat日志、项目中的log4j日志、e.printStackTrace()——我的日志最后到底跑哪去了?

热门文章

  1. BZOJ 2818 Gcd(莫比乌斯反演)
  2. BZOJ 2084 [Poi2010]Antisymmetry(manacher)
  3. 【枚举】【尺取法】hdu6103 Kirinriki
  4. 【分类讨论】【spfa】【BFS】Codeforces Round #416 (Div. 2) D. Vladik and Favorite Game
  5. 【动态规划】【单调队列】tyvj1305 最大子序和
  6. [转] FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和XmlWebApplicationContext简介
  7. [转]Hibernate中Session的get和load
  8. (转)Servlet
  9. HDU 4632 Palindrome subsequence (2013多校4 1001 DP)
  10. VS2010 C++ 创建COM组件