zoukankan      html  css  js  c++  java
  • ubuntu 编译安装 srilm

    Ubuntu 64bit系统下SRILM的配置

    依赖软件包(先进行):

    1.c/c++ compiler:编译器gcc 3.4.3及以上版本,我的是gcc 4.4

    2.GNU make:构建和管理工程的工具,解释Makefile里的指令,描述了整个工程所有文件的编译顺序和编译规则。这里是为了控制SRILM的编译和安装。

    3.GNU gawk:GNU所做的awk程序语言。对于文字资料的修改,对比,抽取等处理,使用c或passcal等不方便且费时,awk能够以很短的程序完成。这里是处理SRILM里的一些脚本文件。

      sudo apt-get install gawk

    4.GNU gzip:使用c语言编写的一种解压缩软件。这里是为了使SRILM能够处理.Z和.GZ后缀的压缩文件。

    5.bzip2:数据压缩软件,压缩效率更高。这里是使SRILM能处理.bz2后缀的压缩文件。

    6.P7zip:数据压缩软件。这里是使SRILM能处理7-zip的压缩文件。

      sudo apt-get install p7zip-rar

    7.Tcl可嵌入式脚本语言。用于脚本编程和测试。这里是为了SRILM的测试。最好安装tcl8.x和tcl8.x-dev。

      http://blog.csdn.net/zqt520/article/details/7342171

    如果在安装tk的时候出现这个错误则说明缺少相应文件,安装即可:

      安装过程:

        先输入:sudo apt-cache search x11-dev

        再输入:sudo apt-get install libghc-x11-dev

    8.csh:Unix shell的一种。(这个很重要,安装过程中有个问题困扰了很久,最后发现是csh没有安装的原因)。

    http://blog.sina.com.cn/s/blog_78699cbf010169vi.html

    安装过程:

    一.下载SRILM.tgz压缩包

    安装包服务器路径:192.168.86.24  /home/research/ghshan/test/moses/tools/srilm.tgz,把压缩包解压到该目录。我这里使用的是1.7.0版,安装目录是:/home/research/ghshan/test/moses/tools/srilm

    二.修改Makefile文件(srilm目录下)

    1.找到此行: # SRILM = /home/speech/stolcke/project/srilm/devel,另起一行输入srilm的安装路径,SRILM = /home/research/ghshan/test/moses/tools/srilm或者SRILM = $(PWD)(我使用的是前者)

    2.找到此行:MACHINE_TYPE := $(shell $(SRILM)/sbin/machine-type),在其前加#注释掉,并另起一行输入:MACHINE_TYPE := i686-m64

    因为我是64位机器(使用uname -m 可以查看),此行告诉Makefile之后要看的设置在/home/user/srilm/common /Makefile.machine.i686-m64中。

    三.把Ubuntu系统的相关设定告诉Makefile,即用编辑器修改 /home/research/ghshan/test/moses/tools/srilm/common目录下的文件:Makefile.machine.i686-gcc4

    1.找到:

    GCC_FLAGS = -mtune=althon64 -Wall -Wno-unused-variable -Wno-uninitialized(cpu型号)

    (在一台GPU云主机上 make World的时候上面这个配置一直失败,改成这样就ok了 GCC_FLAGS = -march=athlon64 -m64 -Wreturn-type -Wimplicit 

    CC = $(GCC_PATH)gcc $(GCC_FLAGS) -Wimplicit-int

    CXX = $(GCC_PATH)g++ $(GCC_FLAGS) -DINSTANTIATE_TEMPLATES

    这里是为了告诉SRILM系统使用的compiler(c和c++),符合安装情况,不需要修改。

    athlon64 -m64代表机器cpu的相关参数,注意根据情况修改,64说的是64bit机器;

    2.找到:

    # Tcl support (standard in Linux)

    TCL_INCLUDE =

    TCL_LIBRARY =

    修改为 # Tcl support (standard in Linux)

    TCL_INCLUDE = 

    TCL_LIBRARY = 

    NO_TCL = X

    上面两行标红的就是什么都不用给

    3.找到:

    GAWK = /usr/bin/awk

    修改为:GAWK = /usr/bin/gawk

     注:各系统中这些软件的安装情况可能不同,查找软件的安装位置,可使用命令:which is gcc或which is g++或which is gawk等

     1.编译srilm

           切换到/home/research/ghshan/test/moses/tools/srilm/,执行

      make World

    (如果失败则很有可能是GCC_FLAGS配置错误) 

    2.修改环境变量

    输入命令:sudo gedit /etc/profile

    找到:

    if [ "$PS1" ]; then

     if [ "$BASH" ]; then

      PS1=’u@h:w$ ‘

      if [ -f /etc/bash.bashrc ]; then

       . /etc/bash.bashrc

      fi

     else

      if [ "`id -u`" -eq 0 ]; then

       PS1=’# ‘

      else

       PS1=’$ ‘

      fi

     fi

    fi

     在其后另起一行输入:

    export PATH=/home/research/ghshan/test/moses/tools/srilm/bin/i686-m64/:/home/research/ghshan/test/moses/tools/srilm/bin/:$PATH

    3.测试   

      编译通过不等于编译成功,必须利用 SRILM 提供的测试模块进行测试,进入 SRILM 根目录

         make test

    (SRILM 从1.5.10开始,在 lm、flm、lattice文件夹下各有一个test文件夹)

    出现如下信息:

            .........

           *** Running test ngram-prune ***

    11.17user 2.35system 0:14.20elapsed 95%CPU (0avgtext+0avgdata 0maxresident)k

    0inputs+15816outputs (0major+31653minor)pagefaults 0swaps

    ngram-prune: stdout output IDENTICAL.

    ngram-prune: stderr output IDENTICAL.

    *** Running test ngram-server ***

    0.21user 0.72system 0:06.56elapsed 14%CPU (0avgtext+0avgdata 0maxresident)k

    0inputs+8outputs (0major+2559minor)pagefaults 0swaps

    ngram-server: stdout output IDENTICAL.

    ngram-server: stderr output IDENTICAL.

    *** Running test ppl-counts ***

    0.10user 0.24system 0:00.32elapsed 104%CPU (0avgtext+0avgdata 0maxresident)k

    0inputs+16outputs (0major+4724minor)pagefaults 0swaps

    ppl-counts: stdout output IDENTICAL.

    ppl-counts: stderr output IDENTICAL.

    *** Running test tagged-ngram ***

    0.00user 0.05system 0:00.11elapsed 51%CPU (0avgtext+0avgdata 0maxresident)k

    0inputs+24outputs (0major+1789minor)pagefaults 0swaps

    tagged-ngram: stdout output IDENTICAL.

    tagged-ngram: stderr output IDENTICAL.

    *** Running test vocab-aliases ***

    0.27user 0.24system 0:01.65elapsed 31%CPU (0avgtext+0avgdata 0maxresident)k

    0inputs+16outputs (0major+5845minor)pagefaults 0swaps

    vocab-aliases: stdout output IDENTICAL.

    vocab-aliases: stderr output IDENTICAL.

    需要等待一段时间,如果出现多是IDENTICAL,很少的DIFFERS,就证明srilm编译成功了!

    应用:

    进入/home/research/ghshan/test/moses/tools/srilm/lm目录

    如果没有配置/etc/profile,执行方式如下:

    ./bin/i686-m64/ngram-count -text europarl-v3b.en -order 3 -write europarl.en.count

     如果配置了,可以直接执行

    ngram-count -text europarl-v3b.en -order 3 -write europarl.en.count

    其中参数-text指向输入文件,此处为europarl-v3b.en;-order指向生成几元的n-gram,即n,此处为3元;-write指向输出文件,此处为europarl.en.count

    注意:由于srilm默认是使用空格做份分隔符,所以用于中文时需要在每个字中间加上空格;

    可参考:http://hi.baidu.com/keyever/item/8fad8918b90b8e6b3f87ce87

    以上都经过测试过

    主要参考:

    http://www.52nlp.cn/ubuntu-moses-platform-build-process-record

    http://wenku.baidu.com/link?url=Bjss8loebr1EBxmabtnz1PGFrrBj_C0qRJM-uTfbRjjVh5l7wYliWF7Fk58jf0Adrgl0dln2RoHSPuOsQfKnHbaWse9QNDiui6jt6bGNfSW

    http://blog.csdn.net/zhoubl668/article/details/7759370

  • 相关阅读:
    hdu2328 Corporate Identity
    hdu1238 Substrings
    hdu4300 Clairewd’s message
    hdu3336 Count the string
    hdu2597 Simpsons’ Hidden Talents
    poj3080 Blue Jeans
    poj2752 Seek the Name, Seek the Fame
    poj2406 Power Strings
    hust1010 The Minimum Length
    hdu1358 Period
  • 原文地址:https://www.cnblogs.com/shanguanghui/p/3655808.html
Copyright © 2011-2022 走看看