2013年12月10日星期二

Mr.Mira

1) 下载

git clone https://github.com/kho/mr-mira.git

2) 安装
2.1) autoreconf -ifv
错误: 提示autoconf版本出错需要2.65以上版本, 而当前autoconf为2.63.
方法: 修改configure.ac文件第一行, 将AC_PREREQ(2.65)改为AC_PREREQ(2.63)

2.2)./configure --with-boost=/..../boost_1_53_0
错误: 提示一个boost::program_options...的错误
方法: 重新安装boost: ./bootstrap.sh -prefix=/.../boost_1_53_0
                                ./bjam install

错误: checking for glog... configure: error: Package requirements (libglog >= 0.3) were not met:

No package 'libglog' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables glog_CFLAGS
and glog_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
方法: 安装glog, 设置glog_CFLAGS和glog_LIBS环境变量
         export glog_CFLAGS=-I/../glog/include
         export glog_LIBS=/../glog/lib/libglog.a
2.3) make


3) 使用
由于没有make install, 所以在使用的时候需要做如下修改scripts/run-mira-qsub.bash:
SUBMIT=`which qsub-mr.bash`
MAPPER=`which kbest_mirav5`
REDUCER=`which mr_mira_reduce`
-->
SUBMIT=/.../mr-mira/scripts/qsub-mr.bash
MAPPER=/.../mr-mira/mira/kbest_mirav5

REDUCER=/.../mr-mira/mira/mr_mira_reduce

[ ! -e "$OUTPUT" ] || { log "$OUTPUT already exists"; exit 1; }
-->
#[ ! -e "$OUTPUT" ] || { log "$OUTPUT already exists"; exit 1; }
注释掉此行. 通常我更喜欢将stderr, stdout重定向输出放入到$OUTPUT目录下. 如果$OUTPUT已存在, 该行代码将出错; 如果$OUTPUT不存在, 又无法重定向stderr, stdout. 因此注释掉此行代码.


QSUB_OPTS=(-q wide -l pmem=4g,walltime=2:00:00)
-->
if [ "x$PMEM" = x ]; then
    PMEM=4g
fi

QSUB_OPTS=(-q wide -l pmem=$PMEM,walltime=2:00:00)

添加一个PMEM参数用来控制申请内存大小.

run-mira-qsub.bash将多个作业提交到集群上跑.
run-mira-serial.bash是在单机上只开一个进程跑, 暂不支持多线程跑..

关于input文件的格式, 每个句子格式如下:

source ref rest
其中source指 source
      ref 如果有多个, 用 ||| 隔开
      rest暂可以不提供
见http://aclweb.org/anthology//P/P13/P13-4034.pdf