• 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

  • 相关阅读:
    500 多个 Linux 命令文档搜索
    C++ 字符串基本操作
    串的模式匹配算法
    查看、启动、关闭防火墙
    天润融通面试
    LeetCode 169. 求众数
    【面试题】人人车一次面试总结
    一个完整的 JS 身份证校验代码
    oracle多表查询
    百度地图的Icon
  • 原文地址:https://www.cnblogs.com/shanguanghui/p/3655808.html
Copyright © 2020-2023  润新知