Вы когда-нибудь задумывались, как работает автоматический ответ Gmail? Или как ваш WhatsApp предлагает следующее слово при отправке текстовых сообщений? Или даже как мы можем создавать музыкальные ноты? Общий способ создания последовательности текста - обучить модель предсказывать следующее слово / символ с учетом всех предыдущих слов / символов. Такая модель называется статистической языковой моделью. Что такое статистическая языковая модель? Статистическая языковая модель - это распределение вероятностей по последовательностям обученных слов.

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

Цепь Маркова основана на принципе «без памяти». Другими словами, следующий этап процесса зависит только от предыдущего состояния, а не от последовательности состояний. Это простое предположение упрощает расчет условной вероятности и позволяет применять этот алгоритм в ряде сценариев.

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

Вероятностная модель для создания текста / естественного языка (простой и эффективный способ создания нового текста)

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

Выведем математически:

Пусть случайный процесс есть, {Xm, m = 0,1,2, ⋯}.

Этот процесс является цепью Маркова, только если,

для всех m, j, i, i0, i1, ⋯ im − 1

Для конечного числа состояний S = {0, 1, 2, ⋯, r} это называется конечной цепью Маркова.

P (Xm + 1 = j | Xm = i) здесь представляет вероятности перехода для перехода из одного состояния в другое. Здесь мы предполагаем, что вероятности перехода не зависят от времени.

Это означает, что P (Xm + 1 = j | Xm = i) не зависит от значения «m». Таким образом, мы можем резюмировать,

Итак, это уравнение представляет собой цепь Маркова.

Теперь давайте разберемся, что такое цепи Маркова на примере.

Простая погодная модель:

Вероятности погодных условий (смоделированных как дождливые или солнечные) с учетом погоды в предыдущий день могут быть представлены в виде матрицы перехода:

P=⬇️

Матрица P представляет модель погоды, в которой за солнечным днем ​​с вероятностью 90% последует еще один солнечный день, а за дождливым днем ​​с вероятностью 50% последует еще один дождливый день. Столбцы могут быть помечены как «солнечный» и «дождливый», а строки могут быть помечены в том же порядке. (P) ij - это вероятность того, что, если данный день относится к типу I, за ним последует день типа j.

Предсказание погоды

Цепь Маркова в Python

Чтобы запустить это, я буду использовать Python.

А теперь приступим к кодированию!

Символьная языковая модель (см. Этот блокнот)

Сделайте базовую установку python и скачайте отсюда

Практикуйтесь на Jupyter Notebook, запустив pip install jupyter на cmd. См. Это для базовой установки

Предвидение о цепях Маркова

Давайте посмотрим на следующий текст:

text = "искусство искусство искусство искусство искусство искусство искусство искусство"

Можно сказать следующее:

Когда текущее слово - «искусство», следующее слово будет «искусство» в 100% случаев.

Когда текущим словом является «искусство», следующее слово будет «артистическим» в 75% случаев, а в остальном (25%) случаев это будет новая строка.

Вот и все! Мы определили цепь Маркова.

Исходя из этого определения вероятностей, теперь мы можем помочь пользователям в написании похожего текста или автономно генерировать совершенно новые тексты.

  • Начнем с «искусства».
  • Генератор знает вероятности возможных следующих слов после «arts»: 75% «arty», 25% newline.
  • Если мы пишем клавиатуру с автоматическим предложением, теперь мы можем разместить «артистический» заметно, а что-то вроде «ввод» - менее заметным.
  • Если мы создаем текстовый генератор, мы выбираем следующее слово случайным образом. Либо полностью случайным образом (50% arty, 50% newline), либо пропорционально (arty имеет в 3 раза больше шансов, чем newline). Здесь мы используем второй подход, так как он генерирует текст, более близкий к оригиналу.
  • Допустим, у нас получилось «искусство». Сгенерированная строка теперь называется «арт-арт».
  • Затем мы берем последнее слово («искусство») и повторяем это слово.
  • Вероятности для «искусства» просты (100% «искусство»). Если мы пишем клавиатуру с автоматическим предложением, мы даже можем вставлять «арты», не спрашивая пользователя (если это тот домен, в котором мы находимся).
  • Теперь у нас есть «искусство - искусство».
  • И так неоднократно.

Вы можете прочитать здесь

Реальные приложения цепей Маркова

⦿PageRank: алгоритм, используемый поиском Google для ранжирования веб-страниц в результатах поиска. где каждая веб-страница может быть состоянием, а ссылки или ссылки между этими страницами можно рассматривать как переходы с вероятностями. Таким образом, независимо от вашего поиска шанс попасть на определенную веб-страницу имеет фиксированную вероятность.

⦿Предсказание ввода слова: используется для предсказания предстоящих слов. Как Gmail и WhatsApp, используемые в автозаполнении и предложениях.

⦿Генератор текста: он генерирует фиктивные тексты или создает большие эссе и собирает речи. Слишком часто используется при генерации имен, которые вы видите в сети.

многое другое...

вы также можете прочитать об этом: http://ieee.msit.in/blogs/4/character-based-language-model