由于项目需要,近期在研究language model相关内容。是SRILM 是业内知名的开源工具。本文主要记录一下如何在Ubuntu 12.04.5 环境下安装及测试SRILM工具。
一、安装依赖的软件包
1.c/c++ compiler:编译器gcc 3.4.3及以上版本
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的测试。
在Linux下安装TCL,有编译源代码的方式安装,也可以直接通过二进制压缩包进行解压缩安装,源代码下载地址 http://www.tcl.tk/software/tcltk/ 下载完成后,进入下载包解压目录下(如tcl8.x.x),依次进行如下操作:
cd unix
./configure options
make
make install
make test
当测试完成后将会有如下结果显示
Tests ended at Tue Dec 15 16:52:17 CST 2015
all.tcl: Total 116 Passed 116 Skipped 0 Failed 0
Sourced 0 Test Files.
或在命令行输入
tclsh
% exit
编译过程可参考 http://www.tcl.tk/doc/howto/compile.html
8.csh:Unix shell的一种。
9.perl: perl 脚本安装
二、SRILM安装过程:
1)下载SRILM压缩包
下载链接为http://www.speech.sri.com/projects/srilm/download.html 当前版本为1.7.1,创建安装的目录,假设安装目录为:/home/xxx/srilm-1.7.1
2) 修改Makefile文件(srilm-1.7.1目录下)
(a) 找到此行: # SRILM = /home/speech/stolcke/project/srilm/devel,另起一行输入srilm的安装路径,SRILM = /home/xxx/srilm-1.7.1
(b) 找到此行:MACHINE_TYPE := $(shell $(SRILM)/sbin/machine-type),在其前加#注释掉,并另起一行输入: MACHINE_TYPE := i686-gcc4。
注:此行告诉Makefile之后要使用/home/xxx/srilm-1.7.1/common /Makefile.machine.i686-gcc4文件中的配置。通过 uname -m 命令可以查询机器架构是i686,如果系统是 64 位的,请改为 i686-m64,同时也可能需要修改相应的 sbin/machine-type
3) 修改上述Makefile中所提到的/home/xxx/srilm-1.7.1/common /Makefile.machine.i686-gcc4文件
(a)找到此行: #GCC_FLAGS = -mtune=pentium3 -Wall -Wno-unused-variable -Wno-uninitialized,修改为 GCC_FLAGS = -mtune=generic -Wall -Wno-unused-variable -Wno-uninitialized
若CPU为AMD 64位,则可能需要修改为GCC_FLAGS = -march=athlon64 -m64 -Wreturn-type -Wimplicit
(b) 找到:TCL_INCLUDE =
TCL_LIBRARY =
修改为:
TCL_INCLUDE = -I /user/local/include
TCL_LIBRARY = -L /user/local/lib/tcl8.6
注:TCL配置须保证tcl已安装,若未安装,可添加 #NO_TCL = X
(c) 找到:GAWK = /usr/bin/awk
修改为:
GAWK = /usr/bin/awk
注:各系统中(b)(c)的步骤安装情况可能不同,查找软件的安装位置,可使用命令:which is 个gwak等
4) 编译工具
返回安装目录/home/xxx/srilm-1.7.1
在命令行输入:
gnumake World
或 make World (if the GNU version is the system default)
顺利的话,srilm就编译通过了。如果出现问题,很可能就是相应的依赖工具没有装完全。
5) 测试工具
在安装目录/home/xxx/srilm-1.7.1下,运行
gnumake test
需要等待一段时间,如果出现都是 IDENTICAL,就证明 SRILM 编译成功了。运行顺利的话,会出现如下类似结果
*** Running test select-vocab ***
7.68user 0.06system 0:06.96elapsed 111%CPU (0avgtext+0avgdata 51728maxresident)k
0inputs+1944outputs (0major+12883minor)pagefaults 0swaps
select-vocab: stdout output IDENTICAL.
select-vocab: stderr output IDENTICAL.
make[1]: Leaving directory `/home/xxx/srilm/utils/test'
6)编译优化版本
在安装目录/home/xxx/srilm-1.7.1下,运行
gnumake World OPTION=_c
gnumake cleanest OPTION=_c
其中OPTION有多种参数可选择
OPTION=_c "compact" data structures
OPTION=_s "short" count representation
OPTION=_l "long long" count representation
OPTION=_g debuggable, non-optimized code
OPTION=_p profiling executables