Пишем Чехова на цепях Маркова: готовая библиотека

Многократно ускоряем разработку.

Пишем Чехова на цепях Маркова: готовая библиотека

В нашем прошлом проекте мы генерировали текст на цепях Маркова вручную — сами составляли пары, выбирали нужные слова и следили за предложениями. Так было нужно для понимания того, как работают цепи в принципе. Но это плохая практика для продуктового разработчика: такой алгоритм сложно поддерживать и мы не знаем, насколько хорошо мы его реализовали. Могли реализовать плохо. 

Сегодня сделаем то же самое, но как настоящие программисты — используем готовую библиотеку markovify, вместо того чтобы писать код самим и с нуля. 

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

Что делаем

Мы повторим наш прошлый проект на готовой библиотеке — посмотрим, станет ли код проще и проверим, что она умеет. Логика такая:

  1. Устанавливаем библиотеку.
  2. Подключаем её к нашей программе.
  3. Пишем код, используя новые возможности.
  4. Смотрим на результат и сравниваем с тем, что было раньше.

Установка markovify

Для установки запускаем терминал и пишем такую команду:

pip install markovify
Пишем Чехова на цепях Маркова: готовая библиотека

Теперь мы можем использовать эту библиотеку в наших проектах.

Подключение библиотеки

Подключаем библиотеку, как это обычно делается в питоне — командой import прямо в коде программы:

import markovify

С этого момента мы можем дальше в коде использовать все команды оттуда — программа сама найдёт библиотеку у нас на компьютере, возьмёт нужные функции и выполнит, что в них написано.

Переписываем код

Чтобы получить то же самое, что и в прошлом проекте, нам понадобится всего 5 строк кода, не считая комментариев:

# подключаем библиотеку
import markovify

# отправляем в переменную всё содержимое текстового файла
text = open('che.txt', encoding='utf8').read()

# сразу обрабатываем весь текст одной командой
# на этом этапе библиотека уже взяла корпус, нашла все пары, построила связи между словами и выяснила вероятности появления новых слов
text_model = markovify.Text(text)

# выводим 30 предложений
for i in range(30):
    print(text_model.make_sentence())

Всё дело в том, что мы одной командой markovify.Text() получаем сразу многое:

  • отфильтрованный корпус;
  • цепочки пар слов с вероятностями появления того или иного слова;
  • связи между парами. 

В общем, одна команда позволяет нам сразу построить все связи между словами, чтобы потом на их основе строить предложения с помощью метода .make_sentence(). Этот метод берёт всю цепочку и строит на её основе одно предложение. Библиотека знает, что предложение должно начинаться с большой буквы и заканчиваться точкой — нам не нужно прописывать это отдельно. Всё, что нам нужно, — указать, сколько предложений надо придумать. 

Было — стало

Сравните код из первого проекта с ручной обработкой цепи и код с этой библиотекой, который делает то же самое. Итоговый код раза в четыре короче (если не в пять). А умеет он гораздо больше, потому что библиотека markovify умеет не только строить цепочки, но и считать вероятности, а также многие другие вещи.

В этом — вся сила библиотек: они экономят время и силы на разработку, а результат может получиться даже лучше.

Было:

Пишем Чехова на цепях Маркова: готовая библиотека

Стало:

Пишем Чехова на цепях Маркова: готовая библиотека

Проверяем результат

Запускаем программу и ставим вывод 5 предложений. Результат такой:

🤖 И что значит самый рассказ?

— Сегодня едва ли это удобно, — сказал Орлов. — Я хочу мира, тишины, хочу тепла, вот этого моря, вашей близости.

— А, может, хотите конституции?

— Это все пустяки! — говорил он. — Когда же мне, наконец, сказать! — говорила Маша с письмами и визитными карточками на подносе.

Осмотрев больницу, Андрей Ефимыч всё понял.

Пишем Чехова на цепях Маркова: готовая библиотека

Получилось гораздо лучше, чем в первом проекте. Это связано с тем, что внутри библиотеки есть много связей и настроек, которые позволяют создавать стройный текст. Конечно, до результатов GPT3 нашей программе ещё далеко, но мы уже можем получать более-менее привычный и понятный текст, используя всего 5 строк кода.

Что дальше

Сделаем программу, которая будет создавать заголовки к нашим статьям. Когда сделаем — перенастроим её так, чтобы она сама ещё и статьи писала. Без шуток, так и сделаем.

Редактура:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Генератор статей для Кода
Генератор статей для Кода

Почти настоящие статьи на цепях Маркова

medium
Как подключить комментарии к сайту
Как подключить комментарии к сайту

Приключение на 4 минуты.

easy
Ваш собственный орфокорректор с автозаменой
Ваш собственный орфокорректор с автозаменой

Проект недели.

hard
Делаем своего первого чат-бота
Делаем своего первого чат-бота

Суперпростой способ создать бота, не зная программирования.

easy
Фулстек-проект: устанавливаем виртуальную среду lamp для запуска файлов в Докере
Фулстек-проект: устанавливаем виртуальную среду lamp для запуска файлов в Докере

Это сильно упрощает работу над сайтами, если сервера пока нет

hard
[1] + [2] – [3] = 9. Да как так-то?
[1] + [2] – [3] = 9. Да как так-то?

Объясняем, как работает JavaScript

medium
Делаем свой планировщик задач
Делаем свой планировщик задач

Bootstrap + TodoList = Trello

hard
Создаём статичный сайт на Hugo
Создаём статичный сайт на Hugo

Превращаем простой текст в полноценный сайт.

medium
Что означает ошибка TypeError: Object prototype may only be an Object or null
Что означает ошибка TypeError: Object prototype may only be an Object or null

Иногда нужно добавить «ничего», чтобы всё сработало

easy
Что нужно поставить на компьютер, чтобы делать сайты
Что нужно поставить на компьютер, чтобы делать сайты

Устанавливаем MAMP за 10 минут

medium
easy