N-граммы Докладчик: Федоренко Денис, 327 гр. Содержание Определение Примеры прикладных задач Создание языковой модели n-грамм • Подсчет вероятности n-грамм • Устранение разреженности обучающего корпуса o Add-one Smoothing o Witten-Bell Discounting o Good-Turing Discounting o Katz’s Backoff o Deleted Interpolation Оценка языковой модели n-грамм с помощью энтропии Определение N-грамма (англ. N-gram) — подпоследовательность из N элементов некоторой последовательности. Рассмотрим последовательности слов. Юниграммы cat, dog, horse, ... Биграммы little cat, big dog, strong horse, ... Триграммы little cat eats, big dog barks, strong horse runs, ... Примеры прикладных задач Распознавание речи. Некоторые различные по написанию слова произносятся одинаково. Задача — выбрать в контексте правильное слово. Генерация текстов заданной тематики. Пример: Яндекс.Рефераты. Поиск семантических ошибок. He is trying to fine out - с точки зрения синтаксиса верно, с точки зрения семантики — нет. He is trying to find out – верно. trying to find out встречается в английских текстах гораздо чаще, чем trying to fine out, значит при наличии статистики можно найти и устранить ошибку подобного рода Создание языковой модели nграмм • Для решения перечисленных прикладных задач, нужно создать языковую модель Nграмм. • Для создания модели необходимо: 1. Посчитать вероятности n-грамм в обучающем корпусе. 2. Устранить проблему разреженности корпуса с помощью одного из методов сглаживания. 3. Оценить качество полученной языковой модели n-грамм с помощью энтропии. Подсчет вероятности N-грамм (1) • • • В обучающем корпусе те или иные nграммы встречаются с разной частотой. Для каждой n-граммы мы можем посчитать, сколько раз она встретилась в корпусе. На основе полученных данных можно построить вероятностную модель, которая затем может быть использована для оценки вероятности n-грамм в некотором тестовом корпусе. Подсчет вероятности N-грамм (2) Рассмотрим пример. Пусть корпус состоит из одного предложения: They picnicked by the pool, then lay back on the grass and looked at the stars Выделим n-граммы. • Юниграммы: They, picknicked, by, … • Биграммы: They picnicked, picknicked by, by the, … • Триграммы They picknicked by, picknicked by the, by the pool, … Подсчет вероятности N-грамм (3) • • • • Теперь можно посчитать n-граммы. Все выделенные би- и три- граммы встречаются в корпусе по одному разу. Все юниграммы, за исключением слова the, также встречаются единожды. Слово the встречается трижды. Теперь, когда известно, сколько раз встречается каждая n-грамма, можно построить вероятностную модель n-грамм. В случае юниграмм, вероятность слова u может быть вычислена по формуле: Число вхождений слова u C (u ) P(u ) 1 в обучающем корпусе wordCorpus • Например, для слова the вероятность будет равна 3/16 (т.к. в корпусе 16 слов, 3 из которых – слово the). They picnicked by the pool, then lay back on the grass and looked at the stars Подсчет вероятности N-грамм (4) • Для n-грамм, где n>1, вероятность считается несколько иначе. • Рассмотрим случай биграмм: пусть необходимо вычислить вероятность биграммы the pool. Если рассматривать каждое слово биграммы как некоторое событие, то вероятность совокупности событий может быть вычислена по формуле: P(the pool ) P(the) P( pool | the) , где C (the pool ) P( pool | the) C (the) • Таким образом, вероятность биграммы the pool: 3 1 1 * 16 3 16 Подсчет вероятности N-грамм (5) • Теперь рассмотрим подсчет вероятности произвольной nграммы (или предложения длины n). • Расширяя случай биграмм, получаем формулу вероятности для n-грамм: P ( w1n ) P ( w1 ) P ( w2 | w1 ) P ( w3 | w12 )...P ( wn | w1n 1 ) • Вычислить вероятность по такой формуле непросто, поэтому вводится упрощение – использовать историю фиксированной длины, т.е. P ( wn | w1n 1 ) P ( wn | wnn1N 1 ) • Таким образом, вычисление вероятности предложения сводится к вычислению условной вероятности N-грамм, из которых состоит это предложение: n 1 n N 1 P ( wn | w C ( wnn1N 1wn ) ) C ( wnn1N 1 ) Подсчет вероятности N-грамм (6) Пример: посчитать вероятность предложения I want to eat British food. Устранение разреженности корпуса (1) Проблема простой (unsmoothed) языковой модели nграмм: у некоторых n-грамм вероятность может быть сильно занижена (либо вовсе равна нулю), хотя в действительности (в тестовом корпусе) эти n-граммы могут встречаться довольно часто. Причина: ограниченность обучающего корпуса и его специфика. Решение: за счет понижения вероятности некоторых n-грамм, повысить вероятность тех n-грамм, которые не встречались (либо встречались достаточно редко) в обучающем корпусе. Устранение разреженности корпуса (2) В докладе рассмотрены следующие методы устранения разреженности: • Add-One Smoothing (Laplace Smoothing) • Witten-Bell Discounting • Good-Turing Discounting • Backoff • Deleted Interpolation Устранение разреженности корпуса (3) В алгоритмах устранения разреженности используются следующие понятия: • Типы (types) – различные слова (последовательности слов) в тексте. • Токены (tokens) – все слова (последовательности слов) в тексте. They picnicked by the pool, then lay back on the grass and looked at the stars – 14 типов, 16 токенов Add-one smoothing (1) Baseline: прибавить к количеству n-грамм единицу. N c (ci 1) N V * i ci 1 p N V * i Ci – кол-во n-грамм типа i, N – число токенов в корпусе, V – число типов в корпусе Тогда в случае биграмм: C ( wn 1wn ) 1 * p ( wn | wn 1 ) C ( wn 1 ) V Add-one smoothing (2) Add-one smoothing (3) * c dc c discounting value – используется для оценки сглаживания Уменьшение в 8 раз! / = Add-one smoothing (4) • Метод провоцирует сильную погрешность в вычислениях (так, на предыдущем слайде было показано, что для слова Chinese кол-во биграмм сократилось в 8 раз). • Тесты показали, что unsmoothed-модель часто показывает более точные результаты. • Следовательно, метод интересен только с теоретической точки зрения. Witten-Bell Discounting (1) • Основан на простой идее: использовать данные об nграммах, встречающихся в обучающем корпусе, для оценки вероятности отсутствующих n-грамм. • Идея метода взята из алгоритмов сжатия: рассматриваются два типа событий - “встретили новый символ (тип)” и “встретили символ (токен)”. • Формула вероятности для всех отсутствующих n-грамм (т.е. вероятность встретить в тестовом корпусе n-грамму, которой не было в обучающем корпусе): T p N T i:ci 0 * i N – число токенов в обучающем корпусе, T – число типов, которые уже встречались в обучающем корпусе Witten-Bell Discounting (2) Для случая биграмм справедливы формулы: T ( wx ) p ( wi | wx ) N ( wx ) T ( wx ) i:c ( wx wi ) 0 * T ( wx ) p ( wi | wx ) , c( wx wi ) 0 Z ( wx )( N ( wx ) T ( wx )) * , где Z ( wx ) 1 i:c ( wx wi ) 0 c( wx wi ) p ( wi | wx ) , c( wx wi ) 0 c( wx ) T ( wx ) * Witten-Bell Discounting (3) Вычисление Z (размер словаря V равен 1616): T (w) : Z ( w) V T ( w) : Witten-Bell Discounting (4) T N , ci 0 Z N T * => ci c N , c 0 i N T i Witten-Bell Discounting (5) * c Discounting value c (значения в таблицах округлены): / = Good-Turing Discounting (1) • Идея: для n-грамм, которые встретились ноль раз (с раз), оценка пропорциональна кол-ву n-грамм, встретившихся один раз (с + 1 раз). N c 1 N 1 c (c 1) , c b:count ( b ) c Nc * • Рассмотрим пример: Пусть было поймано 18 рыб. Всего поймано разных видов – 6, причем у трех видов поймано лишь по одному представителю. Нужно найти вероятность того, что следующая рыба будет принадлежать новому виду. Всего возможных видов – 7 (6 видов уже поймано). c* N1 N1 3 1 P {c 0} 1 {N 0 7 6 1} N N0 N N 18 6 Good-Turing Discounting (2) • Возможна ситуация, когда Nc=0, из-за чего становится невозможно воспользоваться формулой c* для n-грамм встречающихся с-1 и с раз. • В этом случае Nc считается по формуле: log( N c ) a b log( c) a, b - параметры Good-Turing Discounting (3) Katz’s Backoff (1) • Основная идея: можно оценивать вероятности Nграмм с помощью вероятностей (N-k)-грамм (0<k<N). • Особенность: метод можно сочетать со smoothingалгоритмами (Witten-Bell, Good-Turing etc.) • Оценка вероятности в случае триграмм: ~ P (wi | wi 2 wi 1 ), C (wi 2 wi 1wi ) 0 Pˆ ( wi | wi 2 wi 1 ) ( wnn12 ) Pˆ (wi | wi 1 ), overwise ( wnn12 ) - коэффициент распределения остаточной вероятности Katz’s Backoff (2) • Коэффициент α необходим для корректного распределения остаточной вероятности Nграмм в соответствии с распределением вероятности (N-1)-грамм. • Если не вводить α, оценка будет ошибочной, т.к. не будет выполняться равенство: P( w n i, j | wi w j ) 1 • Вычисление α приведено в конце доклада. Deleted Interpolation Оценка вероятности вычисляется как линейная комбинация вероятностей всех (N-k)-грамм (0<=k<N), т.е. Pˆ ( wn | wn 2 wn 1 ) n 1 ~ 1 ( wn 2 ) P ( wn | wn 2 wn 1 ) n 1 ~ 2 ( wn 2 ) P ( wn | wn 1 ) n 1 ~ 3 ( wn 2 ) P ( wn ) Оценка языковой модели с помощью энтропии (1) • Энтропия – мера неопределенности. • При помощи энтропии можно определить наиболее подходящую языковую модель N-грамм для данной прикладной задачи. • Формула двоичной энтропии: H ( X ) p( x) log 2 p( x) xX • Пример: посчитать энтропию испытания, заключающегося в бросании монеты. Ответ: 1 бит, при условии, что результаты опыта равновероятны (любая сторона выпадает с вероятностью 1/2). Оценка языковой модели с помощью энтропии (2) • Энтропия цепочек слов длины n в языке L: H ( w1 ,..., wn ) p(W1n ) log 2 p(W1n ) W1n L 1 1 H ( w1 ,..., wn ) p(W1n ) log 2 p(W1n ) n n W1n L • При подсчете энтропии всего языка L, число n (длина цепочки) стремится к бесконечности, т.е. 1 H ( L) lim p(w1n ) log p(w1n ) n n • По теореме Шеннона-Макмиллана-Бреймана, можно упростить формулу: 1 H ( L) lim log p( w1n ) n n Оценка языковой модели с помощью энтропии (3) • Для сравнения различных языковых моделей используется кросс-энтропия: 1 H ( p, m) lim p( w1n ) log m( w1n ) n n m(w) – языковая модель (например, модель N-грамм) • Чем ближе значение кросс-энтропии H(p,m) к реальной энтропии H(p), тем лучше языковая модель: 1 H ( p) H ( p, m) lim log m(w1n ) n n • В нашем случае H(p) – энтропия тестового корпуса. Оценка языковой модели с помощью энтропии (4) • Есть другой метод оценки качества языковой модели, основанный на т.н. показателе связности (perplexity). • Идея: посчитать вероятность всего тестового корпуса. Более качественная модель покажет большую вероятность. • Формула perplexity: 1 PP( w ) P( w ) N 1 N 1 N • Таким образом, чем меньше perplexity, тем лучше модель. • Можно трактовать perplexity как среднее кол-во слов, которые могут идти после некоторого слова (т.е. чем больше perplexity, тем выше неоднозначность, и следовательно, тем хуже языковая модель). • Связь perplexity и двоичной энтропии: PP 2 H Оценка языковой модели с помощью энтропии (5) • В качестве примера рассмотрим значения perplexity для некоторого корпуса, полученные с помощью обученных моделей юниграмм, биграмм и триграмм: Perplexity Unigram Bigram Trigram 962 170 109 • В случае триграмм perplexity наименьшее, т.к. устранению неоднозначности способствует самая большая из всех моделей длина истории (равная 2) при вычислении условных вероятностей триграмм. Дополнение: Формулы Katz’s Backoff ~ n 1 n P ( wn | wn N 1 ), C ( wn N 1 ) 0 n 1 Pˆ ( wn | wn N 1 ) n 1 n 1 ˆ ( wn N 1 ) P( wn | wn N 2 ), overwise ~ n 1 1 P ( w | w n n N 1 ) w :c ( w ) 0 n 1 ( wn N 1 ) n 1 ˆ P ( w | w w :c( w )0 n n N 2 ) n n n n N 1 n n N 1 * n c ( w ~ n 1 n N 1 ) P ( wn | wn N 1 ) c( wnn1N 1 ) c* - smoothed-значение