Что означают цифры в фразе-таблице giza++?
Я искал значение чисел в выводе таблицы фраз giza++ на официальном сайте (и в руководстве в формате pdf): 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.
Одним из объяснений может быть то, что это может быть просто наоборот.
Но реальный счет ("the") - 21466.
Существуют ли другие учебные пособия / руководства, которые лучше разъясняют содержание выходных файлов giza++?
1 ответ
Итак, я понял, что должно получиться что-то вроде этого:
Гиза бежит через параллельный корпус
всякий раз, когда две фразы выровнены, они сбрасываются в текстовый файл, назовем его f_phrases
Так что обозначения могут быть:
e - иностранный член Гизы
f - английский член гизы
После того, как это сделано, f_phrases сортируется двумя способами, и вот как мы получаем два файла таблицы
- 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