因为课程的缘故,需要和同学一起折腾一个统计机器翻译工具出来。我的工作就是翻译模型构建这一步。根据网络上的说法,我使用了GIZA++这个工具。以下内容参考了如下资源:
- 翻译系统搭建,这个资料算是比较全面的,但是在没有说明应该使用哪个版本的GIZA++和mkcls
- GIZA++实验报告,比上面文档更加详细(翻译模型这一块),也给出GIZA++的版本和一些解决方案,但是我没有使用,但是命令都是采用这些这个实验报告里面提供的命令
- ti.final等文件未生成的解决方法,Issue 29,解决方案就是采用1.0.3的giza++
- 旧的版本的giza++运行时buffer overflow,Issue 11,解决方案是修改giza++的file_spec.h
*** file_spec.h 2009/07/10 21:38:39 1.1
--- file_spec.h 2009/07/13 11:37:21
***************
*** 37,49 ****
struct tm *local;
time_t t;
char *user;
! char time_stmp[17];
char *file_spec = 0;
t = time(NULL);
local = localtime(&t);
! sprintf(time_stmp, "%02d-%02d-%02d.%02d%02d%02d.", local->tm_year,
(local->tm_mon + 1), local->tm_mday, local->tm_hour,
local->tm_min, local->tm_sec);
user = getenv("USER");
--- 37,49 ----
struct tm *local;
time_t t;
char *user;
! char time_stmp[19];
char *file_spec = 0;
t = time(NULL);
local = localtime(&t);
! sprintf(time_stmp, "%04d-%02d-%02d.%02d%02d%02d.", 1900 + local->tm_year,
(local->tm_mon + 1), local->tm_mday, local->tm_hour,
local->tm_min, local->tm_sec);
user = getenv("USER");
NOTE:
上面的步骤中漏掉了中英文的分词,这一部分的工作是后面工作的基础!!!