Примечания к N-граммам

искусственный интеллект NLP WeChat

 Эта статья изначально написана Луо Чжоуяном, пожалуйста, укажите автора и источник для перепечатки.

Стэнфордский классический учебник по НЛПSpeech and Language ProcessingЗаметки о чтении N-грамм.

Модель, вычисляющая вероятности для последовательности слов, называетсяЯзыковые модели,в,n-gramявляется самым простым. Одинn-gramдлинаNПоследовательность слов, состоящая из:

  • N=2, тогда2-gram(bigram)
  • N=3, тогда3-gram(trigram)

простой пример

Есть задача посчитатьP(w\vert h), то есть с учетом историиhрассчитатьwВероятность. Предположениеh=its\ water\ is\ so\ transparent\ that, мы хотим посчитать следующее словоtheвероятность, то есть:

P(the\ \vert\ its\ water\ is\ so\ transparent\ that)

Возможный способ:В большом корпусе статистикаits\ water\ is\ so\ transparent\ thatколичество вхождений, а затем считатьits\ water\ is\ so\ transparent\ that\ theколичество раз, второе делится на первое,который:

P(the\ \vert\ its\ water\ is\ so\ transparent\ that)=\frac{C(\ its\ water\ is\ so\ transparent\ that\ the)}{C(\ its\ water\ is\ so\ transparent\ that)}

Такой подход работает во многих случаях. Но в некоторых случаях все же возникают следующие проблемы:

  • Некоторые слова имеют нулевое ожидаемое появление.

Возникает аналогичная проблема: если мы хотим знатьсовместная вероятность,НапримерP(its\ water\ is\ so\ transparent), то мы можем преобразовать задачу в следующую: «Во всех последовательностях из 5 словits water is so transparentСколько раз оно появлялось? "

Чтобы решить эту проблему, нам нужен лучший способ оценкиwна основеhвероятность , или вероятность всей последовательности.

Мы берем длинуNПоследовательность выражается какw_1,w_2,\dots,w_n, просто выраженный какw_1^n,Так:

P(w_1^n) = P(w_1)P(w_2\vert w_1)P(w_3\vert w_1^2)\dots P(w_n\vert w_1^{n-1}) = \prod_{k=1}^nP(w_k\vert w_1^{k-1})

вышеПравило цепиповерхностьсовместная вероятностьиУсловная возможностьотношения между.

Но вышеупомянутое умножение также приносит проблемы:

  • Для очень длинных последовательностей, вычислительно затратных
  • Если какая-либо из них имеет вероятность 0, то вся совместная вероятность становится равной 0

N-Grams

n-gramВместо расчета вероятности слова на основе всей истории он заменяет всю историю несколькими историческими словами.

заbigramмодели, мы только вычисляемP(w_n\vert w_{n-1})то есть то естьP(w_n\vert w_1^{n-1})выродился вP(w_n\vert w_{n-1}),который:

P(w_n\vert w_1^{n-1})\approx P(w_n\vert w_{n-1})

этоВероятность слова основана только на нескольких предыдущих словахпредположим, что его зовутМарковское предположение.

Поэтому для обычногоn-gramМодель, следующее слово основано на условной вероятности всех предыдущих слов, может быть упрощена до:

P(w_n\vert w_1^{n-1})\approx P(w_n\vert w_{n-N+1}^{n-1})

назадbigramМодель, совместная вероятность всей нашей последовательности, может быть упрощена до:

P(w_1^n)\approx \prod_{k=1}^nP(w_k\vert w_{k-1})

Итак, как мы оцениваем этиbigramилиn-gramвероятность? Интуитивно понятный способОценка максимального правдоподобия (оценка максимального правдоподобия или MLE).

Конкретный метод состоит в том, чтобы выбрать ожидание, подсчитать его и затем нормализовать.

или сbigramНапример,

P(w_n\vert w_{n-1})=\frac{C(w_{n-1}w_n)}{\sum_wC(w_{n-1}w)}

Знаменательвсе сw_{n-1}общее количество слов, начинающихся с, то есть можно упростить до **w_{n-1}Количество вхождений**! который:

P(w_n\vert w_{n-1})=\frac{C(w_{n-1}w_n)}{C(w_{n-1})}

В реальной обработке мы обычно добавляем к каждому предложениюначальный тегиконечный тег,Например<s>и</s>.

<s>заключается в том, чтобы дать контекст первому слову,</s>заключается в создании более реалистичного распределения вероятностей.

We need the end-symbol to make the bigram grammer a true probability distribution. Without an end-symbol, the sentence probabilities for all sentences of given length would sum to one.

Практические вопросы и советы

Есть также некоторые практические проблемы и решения.

существуетNОтносительно большойn-gramмодель, например4-gramили5-gram, для первых нескольких слов в предложении у нас недостаточно длинных исторических слов, тогда наш подход состоит в том, чтобы создать несколько псевдослов.

Например, в3-gramв, для предложенийI love cake., мы сначала обрабатываем<s>I love cake.</s>, то как вычислить условную вероятность «P(I)» для первого слова? Ответ заключается в использовании псевдослов,P(I|<s><s>).

Кроме того, мы обычно используемлогарифмическая вероятностьВместо упомянутой выше вероятности, поскольку логарифмическая вероятность дает два преимущества:

  • Логарифмирование может преобразовать непрерывное умножение в накопление, что может ускорить вычисления.
  • Может предотвратить числовое переполнение
p_1\times p_2\times p_3\times p_4=\exp(p_1+p_2+p_3+p_4)

Оцените языковые модели

При разделении набора данных обычная практика состоит в том, чтобы разделить обучающий набор на следующие три части:

.
|-data_set
    |----training_set(80%)
    |----dev_set     (10%)
    |----test_set    (10%)

Среди них обучающий набор используется для обучения модели, проверочный набор используется для настройки параметров модели, а тестовый набор используется для оценки производительности модели.

Обычно используется метод оценкинедоумение.

для тестового набораW=w_1w_2\dots w_N, недоумение рассчитывается следующим образом:

PP(W)=P(w_1w_2\dots w_N)^{-\frac{1}{N}}=\sqrt[N]{\frac{1}{P(w_1w_2\dots w_N)}}

По цепному правилу имеем

PP(W)=\sqrt[N]{\prod_{i=1}^N \frac{1}{P(w_i\vert w_1\dots w_{i-1})}}

В частности, дляbigram, приведенную выше формулу можно упростить как

PP(W)=\sqrt[N]{\prod_{i=1}^N \frac{1}{P(w_i\vert w_{i-1})}}

свяжитесь со мной

  • WeChat: луочжоуян0528
  • Почта:stupidme.me.lzy@gmail.com
  • Публичный номер: тупыммедотме