首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自Giza++的不良结果和评价

来自Giza++的不良结果和评价
EN

Stack Overflow用户
提问于 2012-08-29 14:59:53
回答 1查看 429关注 0票数 4

我曾尝试在window上使用giza++ (使用Cygwin编译器)。我使用了以下代码:

//假设源语言为法语,目标语言为英语

代码语言:javascript
复制
plain2snt.out  FrenchCorpus.f  EnglishCorpus.e

mkcls  -c30  -n20  -pFrenchCorpus.f  -VFrenchCorpus.f.vcb.classes  opt
mkcls  -c30  -n20  -pEnglishCorpus.e  -VEnglishCorpus.e.vcb.classes  opt
snt2cooc.out  FrenchCorpus.f.vcb  EnglishCorpus.e.vcb  FrenchCorpus.f_EnglishCorpus.e.snt >courpuscooc.cooc

GIZA++  -S  FrenchCorpus.f.vcb  -T EnglishCorpus.e.vcb -C FrenchCorpus.f_EnglishCorpus.e.snt  -m1 100  -m2 30  -mh 30  -m3 30  -m4 30  -m5 30  -p1 o.95  -CoocurrenceFile  courpuscooc.cooc -o     dictionary

但是在从giza++获得输出文件并评估输出后,我观察到结果太糟糕了。

我的评估结果是:

召回= 0.0889

精度= 0.0990

F_MEASURE = 0.0937

AER = 0.9035

有谁知道原因吗?可能是因为我忘记了一些参数,或者我应该更改其中的一些参数?

换句话说:

首先,我想通过海量数据训练giza++,然后用小语料库测试它,并将其结果与期望的对齐(黄金标准)进行比较,但我在web上找不到任何文档或有用的页面。

你能介绍一些有用的文档吗?

因此,我用小的语料库(447句)运行它,并将结果与期望的alignment.do进行比较,您认为这是正确的方式吗?

另外,我修改了我的代码如下,得到了更好的结果,但它仍然不是很好:

GIZA++ -S testlowsf.f.vcb -T testlowde.e.vcb -C testlowsf.f_testlowde.e.snt -m1 5 -m2 0 -mh 5 -m3 5 -m4 0 -CoocurrenceFile inputcooc.cooc -o dictionary -model1dumpfrequency 1 -model4smoothfactor 0.4 -nodumps 0 -nsmooth 4 1 0.999 yes yes

评估结果:

//假设A是GIZA++的结果,G是黄金标准。在A和G文件中,As和Gs是S链接。Ap和Gp在A和G文件中是p链接。

召回= As相交Gs/Gs = 0.6295

精度= Ap交集Gp/A = 0.1090

FMEASURE =(2*精度*召回)/(召回+精度)= 0.1859

AER =1- ((As相交Gs + Ap相交Gp)/(A + S)) = 0.7425

你知道原因吗?

EN

回答 1

Stack Overflow用户

发布于 2012-08-30 18:45:09

你从哪里得到这些参数的?model1的100次迭代?!好吧,如果你真的设法运行了这个,我强烈怀疑你有一个非常小的并行语料库。如果是这样,您应该考虑在训练中添加更多并行数据。那么你是如何计算召回率和查准率的呢?

编辑:

少于500个句子,你不太可能得到任何合理的表现。通常的方法不是找到一个更大的(未对齐的)平行语料库,在这两个语料库上一起运行GIZA++,然后评估您有手动对齐的小部分。检查EuroparlMultiUN,这些都是免费提供的语料库,两者都包含相对大量的英法平行数据。有关准备数据的说明可以在网站上找到。

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

https://stackoverflow.com/questions/12172422

复制
相关文章

相似问题

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