[БЕЗ_ЗВУКА] В этом видео мы поговорим про языковые модели. Сначала мы обсудим постановку задач в самом общем виде, совершенно неформальном. Затем рассмотрим частный пример постановки задачи, он нас приведет к N-граммным языковым моделям. И затем мы обсудим возможное применение языковых моделей. Итак, в самом общем виде языковые модели каким-то образом моделируют распределение вероятностей последовательностей слов так, как они идут в тексте. При этом мы можем конкретизировать, каким образом мы хотим это моделировать. Например, мы можем хотеть уметь оценивать вероятность слова при условии известных предыдущих слов. Зная такую вероятность, мы могли бы сказать, насколько ожидаемо, что какое-то конкретное слово будет после заданной последовательности в качестве продолжения текста. В частности, в N-граммных языковых моделях рассматривается вероятность встретить последовательность слов как произведение таких вот вероятностей слова при условии известных предыдущих. Здесь можно предположить, что на самом деле важны только сколько-то предыдущих слов, не все до начала текста. Например, N слов. Тогда мы можем произведение этих вероятностей примерно приблизить произведением вероятностей при условии N предыдущих слов. Такие вероятности не так-то сложно оценить, можно просто воспользоваться частотной оценкой. Рассмотрим количество ситуаций, когда слово было после именно этого набора предыдущих слов, и рассмотрим количество ситуаций, в которых был именно такой набор предыдущих слов. Ну и частное даст нам оценку этой условной вероятности. Обычно используются биграммные языковые модели или триграммные языковые модели, то есть N = 2 или N = 3. Дело в том, что языковые модели, основанные на N-граммах, имеют ряд недостатков. Прежде всего, для больших N действительно мало наблюдений. У нас слишком мало статистики, чтобы получить хорошие оценки вероятностей и хорошую модель как следствие. С другой стороны, малые N приводят к тому, что мы учитываем слишком мало слов, Слова, связанные по смыслу, бывают достаточно далеко в тексте друг от друга. Таким образом, если мы попробуем использовать языковую модель для N = 2, скорее всего, она не будет в полной мере отражать то, как строятся осмысленные тексты, даже не будет это делать достаточно похоже на правду. Ну и, кроме того, для тех слов, для которых мало статистики, такая ситуация может быть не со всеми словами, не со всеми наборами слов, идущих подряд, но для каких-то может быть такая проблема, статистики может быть мало. Вот для них получатся плохие оценки вероятностей. Но эта проблема частично решается сглаживанием, которое мы в частности обсуждали, когда говорили про байесовский классификатор. Языковые модели можно использовать для того, чтобы оценивать вероятность какого-то текста, то есть то, насколько мы ожидаем, что такой текст, в принципе, может возникнуть. Можно использовать для того, чтобы генерировать тексты. В самом деле, если у нас уже сгенерирован какой-то набор слов, то следующее слово мы просто генерируем из распределения, которое оценивается в N-граммных языковых моделях. Например, сейчас вы видите пример такого сгенерированного автоматически текста. Он действительно может быть очень похож на настоящий текст местами, но в то же время часто получается совершенно бессмысленным. Итак, мы с вами поговорили о неформальной постановке задачи языкового моделирования, узнали, что, в частности, для построения языковых моделей могут использоваться N-граммные модели, и обсудили возможное применение языковых моделей.