v. Ничего страшного. В этом случае u и v можно заменить звездочками. Тогда параметр q( N|*, *) будет обозначать вероятность того, что тег N (су- ществительное) встречается в абсолютном начале предложения, а пара- метр q( N|*, А) будет соответствовать вероятности того, что тег N (сущест- вительное) идет в предложении вторым после тега А (прилагательное).
Концы предложений тоже необходимо учитывать, поэтому последним тегом можно считать слово STOP. Оно обозначает, что за ним тегов уже нет — предложение закончилось. Тогда для нашей системы необходимо также почитать параметры q( STOP|u, v) — вероятности того, что последо- вательность тегов u, v — последняя в предложении.
Конечно, полученные значения вероятностей будут приблизительные. Их можно улучшить с помощью методов сглаживания, о которых будет рассказано в седьмой главе этой книги.
После того, как на основе корпуса посчитаны значения всех парамет- ров, наша триграммная скрытая Марковская модель готова. С ее помощью можно оценивать вероятности соответствия предложения и цепочки тегов. Делать это можно по следующей формуле:
р(x1, …xn, y1,…yn+1) = ∏𝑛+1 𝑞(𝑦i|𝑦i−2, 𝑦i−1) ∏𝑛 𝑠(𝑥i|𝑦i)
i=1 i=1
Слева — совместная вероятность последовательности словоформ и последовательности тегов. Справа — произведение двух множителей. Первый множитель — это произведение n + 1 параметра, вероятностей появления каждого тега уi после двух предшествующих ему тегов. Тег yn+1 соответствует слову STOP. Второй множитель — произведение парамет- ров, отвечающих за соответствие тех или иных словоформ различным те- гам.
Эта формула появилась не случайно, у нее есть объяснение и вывод, но мы не будем перегружать эту книгу обилием математических подроб- ностей. Любопытный читатель может прочитать об этой формуле в спе- циализированных учебниках. Кроме того, некоторые дополнительные по- яснения приводятся в статистической части седьмой главы данной книги, посвященной машинному переводу.
Рассмотрим на примере, как работает эта формула. Какова вероят- ность того, что предложению Пришел добрый пёс соответствует цепочка тегов VNN (глагол, существительное, существительное). Да, мы созна- тельно рассмотрим пример с ошибкой: VNN, а не VAN (глагол, прилага- тельное, существительное).
Рассчитаем эту вероятность по формуле, не забыв поставить послед- ним тегом слово STOP:
р(Пришел, добрый, пёс, V, N, N, STOP) = q(V |*, *) × q(N |*, V) × q(N
|V, N) × q(STOP |N, N) × s(Пришел|V) × s(добрый|N) × s(пёс|N)
Теперь нам остается посчитать эти вероятности для всех других по- следовательностей тегов (AVN, NVV, AAN и пр.), а затем выбрать наибо- лее вероятный вариант. Но если у нас 20 тегов, то для предложения из трех слов это будет 203 = 800 вариантов. А для предложения из 10 слов — 2010 = 10240000000000 вариантов. Слишком много.
Тут на помощь приходит динамическое программирование, а точнее
|