首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GIZA++输出缺少*.ti.final和*actual.ti.final文件

GIZA++输出缺少*.ti.final和*actual.ti.final文件
EN

Stack Overflow用户
提问于 2015-10-23 22:39:23
回答 1查看 808关注 0票数 2

在理解如何运行GIZA++的基础上,我遇到了一些问题。

我在StackOverflow (Is there a tutorial about giza++?)上和人们在那里提供的链接上进行了讨论。我已经从摩西-SMT Github下载并编译了最新的giza。

代码语言:javascript
复制
git clone https://github.com/moses-smt/giza-pp.git
cd giza-pp
make

在成功编译之后,我编写了一个简单的脚本用于测试。

代码语言:javascript
复制
#!/bin/bash
SRC=french
TRG=english
PREFIX=out
GIZA=../giza-pp

# Cleaning from previous run ...
rm -f *.log
rm -f *.vcb
rm -f *.snt
rm -f *.vcb.classes
rm -f *.vcb.classes.cats
rm -f *.gizacfg
rm -f *.cooc
rm -f ${PREFIX}*

# Converting plain text into sentence format using the "plain2snt.out" tool ...
${GIZA}/GIZA++-v2/plain2snt.out ${SRC} ${TRG}

# Generating word clusters using the "mkcls" tool ...
${GIZA}/mkcls-v2/mkcls -p${SRC} -V${SRC}.vcb.classes
${GIZA}/mkcls-v2/mkcls -p${TRG} -V${TRG}.vcb.classes

# Generating coocurrence using the "snt2cooc" tool ...
${GIZA}/GIZA++-v2/snt2cooc.out ${SRC}.vcb ${TRG}.vcb ${SRC}_${TRG}.snt > ${SRC}_${TRG}.cooc

# Running "GIZA++" ...
${GIZA}/GIZA++-v2/GIZA++ -S ${SRC}.vcb -T ${TRG}.vcb -C ${SRC}_${TRG}.snt -CoocurrenceFile ${SRC}_${TRG}.cooc -o ${PREFIX} >> giza.log 2>&1

现在,这是我运行脚本后目录的内容。

代码语言:javascript
复制
jakub@jakub-virtual-machine:~/Master/giza-pp_test$ ls
english                   french_english.snt       out.d3.final        out.perp
english_french.snt        french.vcb               out.d4.final        out.t3.final
english.vcb               french.vcb.classes       out.D4.final        out.trn.src.vcb
english.vcb.classes       french.vcb.classes.cats  out.Decoder.config  out.trn.trg.vcb
english.vcb.classes.cats  giza.log                 out.gizacfg         out.tst.src.vcb
french                    out.a3.final             out.n3.final        out.tst.trg.vcb
french_english.cooc       out.A3.final             out.p0_3.final      run_test.sh

重点是输出缺少(对我来说很重要)下面列出的文件。

代码语言:javascript
复制
out.ti.final
out.actual.ti.final

现在,我一直在查看GIZA的Main.cpp (第260-273行),可以看到应该创建这些文件的行。

代码语言:javascript
复制
cerr << "writing Final tables to Disk \n";
  string t_inv_file = Prefix + ".ti.final" ;
  if( !FEWDUMPS)
    m1.getTTable().printProbTableInverse(t_inv_file.c_str(), m1.getEnglishVocabList(), 
                     m1.getFrenchVocabList(), 
                     m1.getETotalWCount(), 
                     m1.getFTotalWCount());
  t_inv_file = Prefix + ".actual.ti.final" ;
  if( !FEWDUMPS )
    m1.getTTable().printProbTableInverse(t_inv_file.c_str(), 
                     eTrainVcbList.getVocabList(), 
                     fTrainVcbList.getVocabList(), 
                     m1.getETotalWCount(), 
                     m1.getFTotalWCount(), true);

我还在日志中打印了"cerr“行,但我就是找不到为什么输出中没有这些文件。

代码语言:javascript
复制
jakub@jakub-virtual-machine:~/Master/giza-pp_test$ cat giza.log | tail -n 25
p0_count is 4.0073 and p1 is 5.99635; p0 is 0.400584 p1: 0.599416
Model4: TRAIN CROSS-ENTROPY 0.80096 PERPLEXITY 1.74226
Model4: (10) TRAIN VITERBI CROSS-ENTROPY 0.801289 PERPLEXITY 1.74266
Dumping alignment table (a) to file:out.a3.final
Dumping distortion table (d) to file:out.d3.final
Dumping nTable to: out.n3.final

Model4 Viterbi Iteration : 10 took: 0 seconds
H3333344444 Training Finished at: Fri Oct 23 16:24:44 2015


Entire Viterbi H3333344444 Training took: 0 seconds
==========================================================
writing Final tables to Disk 
Writing PERPLEXITY report to: out.perp
Writing source vocabulary list to : out.trn.src.vcb
Writing source vocabulary list to : out.trn.trg.vcb
Writing source vocabulary list to : out.tst.src.vcb
Writing source vocabulary list to : out.tst.trg.vcb
writing decoder configuration file to out.Decoder.config

Entire Training took: 0 seconds
Program Finished at: Fri Oct 23 16:24:44 2015

==========================================================

有没有人遇到过类似的问题?这是某种bug,还是我做错了什么?

编辑:

现在,我在Makefile中的CFLAGS中重新编译了整个GIZA++,但没有使用-DBINARY_SEARCH_FOR_TTABLE选项。并更改了脚本,使其不会生成并发文件并将其提供给GIZA++。在我重新运行脚本之后,输出确实包含out.actual.ti.finalout.ti.final。有人知道如何解释这种行为吗?我教过我使用coocurrence文件可以得到更好的对齐和概率估计,有什么需要吗?或者仅仅是为了提高性能?

EN

回答 1

Stack Overflow用户

发布于 2015-12-06 02:04:50

我以前也遇到过同样的问题。我认为缺少的步骤在位于.\giza-pp\GIZA++-v2\的生成文件中,代之以行: CFLAGS_OPT = $(CFLAGS) -O3 -funroll-loops -DNDEBUG -DWORDINDEX_WITH_4_BYTE -DBINARY_SEARCH_FOR_TTABLE -DWORDINDEX_WITH_4_BYTE

命令行: CFLAGS_OPT = $(CFLAGS) -O3 -funroll-loops -DNDEBUG -DWORDINDEX_WITH_4_BYTE -DWORDINDEX_WITH_4_BYTE

检查这个推杆,祝你好运

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33305090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档