[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一阵着折腾。没有任何效果....

参考:

[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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 01:12:11

[moses笔记]编译含有nplm的moses解码器的相关文章

黑马程序员-C学习笔记-编译预处理指令

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.编译预处理指令 源代码 -> 编译预处理 -> 编译 -> 链接 -> 运行 编译预处理指令:在编译前进行解析处理的指令 特点:所有编译预处理指令都以#开头 所有编译预处理指令都不加分号 二.宏定义 1.不带参数的宏定义:  #define 宏名 值 (1)在预编译的时候所出现宏名标识的地方都会被替换成宏名后面的值 注意点:注释中的宏名不会被替换 在字符串中出现的宏名不会被替换

服务器架设笔记——编译Apache及其插件

之前一直从事Windows上的客户端软件开发,经常会处理和服务器交互相关的业务.由于希望成为一个全栈式的工程师,我对Linux上服务器相关的开发也越来越感兴趣.趁着年底自由的时间比较多,我可以对这块做些技术研究.虽然这些知识很基础也很老,但是对我这样的新人来说还是挺有意思的. 初期目标是可以让虚拟机中的服务架设成功,且实体机可以访问.服务器我选择了相对熟悉点的Ubuntu--Ubuntu Server 14.04.1 LTS 32位版本(http://releases.ubuntu.com/14

Python学习笔记-编译安装Python3.6.1 + iPython

由于系统已有2.6的python,最好不好修改系统的版本,使用编译安装 下载Python3.6.1包 wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz 安装依赖: yum -y install readline-devel 解压Python-3.6.1.tar.xz xz -d Python-3.6.1.tar.xztar -xvf Python-3.6.1.tar 编译安装,指定/usr/local/python3

服务器架设笔记——Apache模块开发基础知识

通过上节的例子,我们发现Apache插件开发的一个门槛便是学习它自成体系的一套API.虽然Apache的官网上有对这些API的详细介绍,但是空拿着一些零散的说明书,是很难快速建立起一套可以运行的系统.(转载请指明出于breaksoftware的csdn博客) 为了实现最基础的URL解析等功能,我把<Apache模块开发指南>一书粗略了翻看了两遍,以利于迅速了解Apache模块编程的相关知识.至于书中具体的知识点,我并不在此赘述.但是为了便于大家了解之后遇到的各种相关的知识点,我大致罗列几条(摘

服务器架设笔记——使用Apache插件解析简单请求

一般来说,对于一个请求,服务器都会对其进行解析,以确定请求的合法性以及行进的路径.于是本节将讲解如何获取请求的数据.(转载请指明出于breaksoftware的csdn博客) 我们使用<服务器架设笔记--编译Apache及其插件>一文中的方法创建一个Handler工程--get_request.该工程中,我们可以操作的入口函数是 static int get_request_handler(request_rec *r) { r->content_type = "text/ht

MongoDB学习笔记六:高级操作

[数据库命令]『命令的工作原理』MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询,因此,> db.runCommand({"drop" : "test"})这个drop调用实际上是这样的: db.$cmd.findOne({"drop" : "test"})当MongoDB服务器得到查询$cmd集合的请求时,会启动一套特殊的逻

Linux下编译、链接和装载

——<程序员的自我修养>读书笔记 编译过程 在Linux下使用GCC将源码编译成可执行文件的过程可以分解为4个步骤,分别是预处理(Prepressing).编译(Compilation).汇编(Assembly)和链接(Linking).一个简单的hello word程序编译过程如下: 预处理 首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp预编译成.i文件(C++为.ii).预处理命令为: gcc –E hello.c –o hello.i 预编译过程主要处理那

C语言&lt;前年笔记整理&gt;(一)C语言初识

一些操作的说明:由于本屌是学iSO出身,So我所学的c语言大多在mac系统里敲代码的. (一) 先介绍下mac的一些操作吧 ========================================一.mac系统使用 1.mac系统简单介绍 Mac 是一种类 Unix 的图形化界面操作系统,有两种开发环境:图形化 IDE 和终端Terminal.(简单的说就是苹果开发的一套操作系统) 2.Dock(停靠栏--一般在屏幕底部).Finder(我的电脑).常用软件(safari,系统偏好设置)

Ant编译提示“Unsupported major.minor version 52.0”

今天在使用Ant编译build.xml文件时报错"java.lang.UnsupportedClassVersionError:com/sun/tools/javac/Main : Unsupported major.minor version 51.0",很明显是JDK版本不一致所导致的,但是我用的JDK8,Eclipse配置貌似也都正常(Windows——Preferences——Java——Compiler(配置的为1.8)——Installed JREs(勾选的是JDK1.8的