machine-translation - giza++ 短语表中的计数是什么意思?

标签 machine-translation moses giza++

我一直在官方网站(和pdf手册)中搜索giza++短语表输出中数字的含义: http://www.statmt.org/moses/?n=FactoredTraining.ScorePhrases

这就是我的想法。

假设这是短语表中的一行

načiniti na koji ||| way in which ||| 0.833333 * 0.33333 * ||| * ||| 12 3 1

这意味着:

e = "načiniti na koji"
f = "way in which"

count(e) = 12
count(f) = 3
count(e, f) = 1

p(f|e) = count(f, e) / count(e) = 1/12 = 0.833333
p(e|f) = count(f, e) / count(f) = 1/3 = 0.333333

这些都很有道理。

但是,如果我使用文本编辑器进行文本搜索,我会得到:

count("načiniti na koji") = 4
count("way in which") = 9

即完全不同的数字。

另一个奇怪的事情是:

osnivanje i ||| the ||| 0.000124085 * 1 * ||| 0-0 ||| 8059 1 1

所以,考虑到官网的解释,

count("the) = 1,

count("osnivanje i") = 8059.

一种解释可能是它可能恰恰相反。

但是,实际的 count("the") 是 21466。

还有其他一些教程/手册可以更好地阐明 giza++ 输出文件的内容吗?

最佳答案

所以,我发现它应该是这样的:

  • Giza 贯穿平行语料库

  • 每当两个短语对齐时,它们就会被刷新到文本文件中,我们将其命名为 f_phrases

那么符号可以是:

e - 外国吉萨成员

f - 英语吉萨成员

完成后,f_phrases会以两种方式排序,这样我们就得到了两个表文件

  1. extract.o.sorted

对进行排序,以便某个外国短语 (e) 的所有英文翻译都彼此相邻,例如

analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      analysis and
analiza i      and
analiza i      evaluation and
analiza i      the analysis and
analiza i      through evaluation and

因此我们得出结论

count(e) = count("analiza i") = 17

然后,对对进行排序,以便某个本地短语 (f) 的所有外语翻译都彼此相邻,例如

  • extract.inv.sorted
  • analysis and              Analysis and
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    analysis and              analiza i
    

    我们看到count(f) = count("analysis and") = 14

    考虑到它是同一个表,只是以其他方式排序,我们看到 count("analysis and", "analiza i") = count("analiza i", "analysis and") = 17

    结果短语表如下所示:

    analiza i|||analysis and|||     14      |||             17|||               13
    
    e       ||| f        ||| count(f) ||| count(e)   ||| count(e, f) = count(f, e)
    

    计算条件概率时,将使用相反的顺序,就像短语表中的顺序一样:

    p(e|f) = p(e, f) / p(f) phrase translation probability 
    p(f|e) = p(f, e) / p(e) inverse phrase translation probability 
    

    关于machine-translation - giza++ 短语表中的计数是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46284455/

    相关文章:

    machine-learning - 吉萨++的糟糕结果和评估

    javascript - 谷歌翻译 iframe 解决方法

    python - 如何保存 Python NLTK 对齐模型供以后使用?

    translation - 翻译语言的服务器端软件?

    python - 使用相同来源的余弦相似度和完全不同的结果

    c++ - 摩西中对 `gzopen' 的 undefined reference

    regex - ($pre =~/\./&& $pre =~/\p{IsAlpha}/) 在 Moses Tokenizer 中是什么意思?

    python - Moses v1.0 多语言ini文件