- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在理解如何运行 GIZA++ 的基础知识时遇到问题。
我通过 StackOverflow ( Is there a tutorial about giza++?) 上的讨论以及人们在那里提供的链接进行了讨论。我已经从 Moses-SMT Github 下载并编译了最新的 giza。
git clone https://github.com/moses-smt/giza-pp.git
cd giza-pp
make
编译成功后我写了一个简单的脚本用于测试。
#!/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
现在这是我运行脚本后目录的内容。
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
重点是输出缺少下面列出的(对我来说很重要的)文件。
out.ti.final
out.actual.ti.final
现在我一直在寻找 GIZA 的 Main.cpp(行:260 - 273)并且可以看到应该创建这些文件的行。
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”行,但我无法找出为什么这些文件不在输出中。
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
==========================================================
有人遇到过类似的问题吗?这是某种错误还是我做错了什么?
编辑:
现在,我已经在 Makefile
的 CFLAGS
中不使用 -DBINARY_SEARCH_FOR_TTABLE
选项重新编译了整个 GIZA++。并更改了脚本,使其不会生成并向 GIZA++ 提供同现文件。在我重新运行脚本后,输出确实包含 out.actual.ti.final
和 out.ti.final
。有人知道如何解释这种行为吗?我教过我会使用共现文件获得更好的对齐和概率估计,请问有什么需要吗?还是只是为了提高性能的速度?
最佳答案
我之前遇到过同样的问题。我认为缺少的步骤是 在位于 .\giza-pp\GIZA++-v2\的 Makefile 中,替换以下行: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
检查这个看跌期权,祝你好运
关于c++ - GIZA++ 输出缺少 *.ti.final 和 *actual.ti.final 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33305090/
我经常发现自己想要编写以下形式的通用类定义 public class Foo> 例如在这样的设置中: public interface ChangeHandler { public void
我有一些对象被放入队列中。队列中的所有对象都实现相同的基接口(interface),这也要求它们实现 IEquatable<>。 我想验证是否以正确的顺序将正确的对象放入队列中。 当我编写一个断言 C
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我有一串数字和字符 c2 = "list of 2nd C2 H2O 1 12 123" 我需要删除所有实际数字,即 1、12、123,而不是那些属于字符集的数字,即 2nd、C2、H2O。 到目前为
git repo : django tutorial 我一直在关注上述 django 项目,该项目着眼于创建人与人之间的聊天。我遇到过这部分: def message_list(request, se
gitpod GitHub 页面说 Gitpod is an open-source Kubernetes application providing prebuilt,collaborative d
这是一个示例代码,我在这里抛出一个异常,由于某种原因,它在没有 try/catch 代码块的情况下工作得很好。 我是否必须在这个方法“EntryDelete”中处理这个问题或者我必须在调用该方法的地方
我的数据集中有以下列: id |用户 ID |开始日期 |结束日期 |检查日期 我想从第一列获取check_date,找到check_date在start_date和end_date。然后计算每个 u
简而言之: 在 pytorch 中使用 adadelta 优化器时,我无法绘制 lr/epoch 曲线,因为 optimizer.param_groups[0]['lr'] 总是返回相同的值。 详细说
假设我有以下 C 代码: int* vector = (int*)malloc(5 * sizeof(int)); malloc 返回一个空指针,因为不知道要求为什么分配空间。 因此,我们将 void
在 Java 中将形状渲染为其“实际大小”的简单方法是什么?例如,我有一个直径为 1"的 pipe ,我想在屏幕上将其描绘为 1"圆的轮廓。 Graphics2D 方法 drawOval(int x,
我阅读了很多关于 Node js 的文章,试图理解事件循环及其模式/反模式。许多作者没有提到的一件事是 Node 实际上处理线程。然而,应用程序程序员当然无法访问它们,但很高兴知道它们存在以及它们何时
什么mode:shim做? 我在这个网站上搜索了一种强制闪光的方法。代码开发人员针对遇到我所面临的确切问题的某个人的问题写了这个答案: MediaElement.js - force Chrome t
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭11 年前。 Improve th
在 C++03 中,我们有模板显式实例化定义 ( template class Foo ),它强制模板类的实例化。 在 C++11 中,我们有模板显式实例化声明 ( extern template c
我有一个相当复杂的联接的执行计划,它显示在表上执行索引查找,“实际行数”读数约为 70,000,而实际上表中总共只有约 600 行(估计行数仅为 127)。 请注意,所有统计信息都是最新的,并且查询的
我的学校作业涉及编写一个简单的网络爬虫来爬行维基百科。该作业规定我不能使用任何外部库,因此我一直在使用 java.net.URL 类。基于official tutorial以及我的教授给出的一些代码:
您好,我是集成测试新手。我的断言状态面临一些困难。 这是错误 java.lang.AssertionError: Status Expected :204 Actual :404 这是测试代码
我刚刚习惯 Subversion,并且有一个关于版本控制的基本问题。 我已在我的网络中托管的服务器“S”上创建了 SVN 存储库。假设我从网络中的另一台计算机“A”“导入”代码、文件、目录等,它会添加
我没能弄清楚 Spark SQL 连接操作实际上是如何工作的。我已阅读pretty massive explanation ,但它并没有阐明一些问题。 示例 例如,您有两个数据库表保存在 Spark
我是一名优秀的程序员,十分优秀!