Рубрики
Без рубрики

Получите вашу первую разработку, создавая эти проекты! # 2: Генератор лирики цепи Маркова

Привет, мои друзья! Вы можете знать, что это «Получить вашу первую разработку, создавая эти проекты» I … Помечено новичками, Python, карьерой.

Привет, мои друзья! Вы можете знать, что это «получить вашу первую разработку, создавая эти проекты» (я не знаю, почему я дал ей такое длинное имя), но если нет, – проверьте эту статью.

TLDR: Следуйте по этим учебным пособиям (все они поставляются с коротким видео), строят на вершине проектов и становятся разработчиком. Это как гарантированный способ получить оплату коду. И это самое крутое чувство когда-либо.

Этот генератор лирики цепи Маркова является одним из моих любимых проектов. По сути, он использует тип модели прогнозирования (называемая цепочкой Маркова) для создания собственной версии лирики вашего любимого художника. Они в конечном итоге иногда очень веселые, потому что они звучат похожи на художник, но просто … не совсем. АИ генерировали вещи совершенно мое чувство юмора, поэтому я буквально проводил часы смеяться над ответами. Позвони мне Хромо, я смею тебя.

Цепь Маркова является самым простым видом модели прогнозирования – она использует только предыдущее состояние для прогнозирования следующего. В нашем случае он использует только предыдущее слово для прогнозирования следующего слова в лирике.

Нырять прямо в код из github здесь или смотрите в 2:20 Учебное пособие видео здесь .

Я чувствую, что это один из тех блогов рецептов, где вы должны прочитать бессмысленную ерунду, прежде чем добраться до реального рецепта. Извини за это. Давайте начнем с этим.

Шаг 1: Установка зависимостей

Python3 – Скачать здесь

Re – Библиотека Regex Python. Мы будем использовать это при сосредоточении веб-сайта, чтобы найти ссылки на лирику

Pip Install Re.

Урлыб – URL-библиотека. Мы используем эту библиотеку, чтобы соскрести HTML выключить страницу и прочитать его в строку.

Пип Установите Урлыб

Отметайте – Эта библиотека может генерировать для нас цепочку Маркова.

Установка PIP Markify

Шаг 2: Создайте файл для Markify для чтения из

Мы собираемся поместить все лирику художника в один файл для насмешка для чтения.

originalLyrics = open('lyrics.txt', 'w')

Шаг 3: Скрепите ссылки на лирику

Вот, мы мог бы Вручную введите все лирику в файл или используйте платный API. Но этот путь веселее.

Мы будем использовать Azlyrics, чтобы соскрести лирику своего художника и поместить их в lyrics.txt Отказ

Первое, что нам нужно сделать, здесь перейдите на страницу художника на Azlyrics и найдите каждую ссылку на странице, которая ссылается на песню. Посмотрите на страницу Coldplay на Azlyrics, чтобы увидеть, что я имею в виду (мы будем использовать Coldplay в этом руководстве. Я не знаю почему.)

Используйте Урлыб Библиотека Чтобы запросить HTML с страницы художника и преобразовать его в строку, используя чтение, поэтому мы можем легко найти ее для ссылок.

url = "https://www.azlyrics.com/c/coldplay.html"
artistHtml = urllib.request.urlopen(url)
artistHtmlStr = str(artistHtml.read())
To find the links on the page, we'll be using the re library we imported which will find all a link.

links = re.findall('href="([^"]+)"', artistHtmlStr)

Теперь у вас есть список под названием Ссылки Который содержит все ссылки на странице исполнителя! Попробуйте печатать ссылки, чтобы увидеть, что произойдет.

print(links)

Обратите внимание на что-нибудь? Если вы просматриваете ссылки, вы увидите, что у вас есть все ссылки на страницы лирики (Great!), Но и на другие страницы, такие как контактные страницы и даже файлы CSS. Еще одна вещь, которую вы должны заметить, это то, что все лирики ссылки имеют строку лирика/Coldplay в них.

Теперь мы должны отфильтровать эти ссылки, чтобы мы получили только лирические страницы. Инициируйте другой список, который проведет только лирические ссылки.

songLinks = []

Мы будем петь через Ссылки Список, выбирая все, что содержит строку лирика/Coldplay и добавить их в SongLinks список.

Все еще со мной?

for x in links:
    if "lyrics/coldplay" in x:
        songLinks.append(x)

Печать SongLinks за пределами цикла, чтобы увидеть, с чем вы заканчиваете. Отлично – только песни лирики! Однако у нас все еще есть другая проблема. Ссылки не имеют полного URL, только конец. И у них есть .. в них. Перед добавлением ссылок на массив SongLinks нам нужно добавить начало URL на ссылку и заменить .. с пустой строкой. Обновите ваше заявление, чтобы выглядеть так.

for x in links:
    if "lyrics/coldplay" in x:
        x = x.replace("..", "")
        x = "https://www.azlyrics.com/" + x
        songLinks.append(x)

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

Шаг 4: Скрепите лирику из лирики Ссылки

Следующим шагом является получение HTML из каждой ссылки SongLinks Список, найдите фактическую лирику и ничего больше, и сохраните его в файл, который мы создали на шаге 1. Хорошо, пойдем.

Во-первых, нам нужно будет повторять наши SongLinks Список и Scrape HTML, преобразуя его в строку. Мы уже сделали это для страницы художника на шаге 2.

for x in songLinks:
    songHtml = urllib.request.urlopen(x)
    songHtmlStr = str(songHtml.read())

Если мы распечатаем songhtmlstrster Здесь мы получим все на странице песни. Мы не хотим этого, или наше представление о прогнозе будет принимать больше текста, чем только лирика. Это будет похоже на «Да, детка», свяжитесь с нами, присоединяйтесь к рассылке. Поэтому нам нужно найти, где лирика на странице, и разделить нашу строку, чтобы мы добавляем только лирику в файл.

Посмотрите на страницу лирики на Azlyrics и щелкните правой кнопкой мыши часть, где есть лирики. Когда вы нажимаете проверять (или Осмотрите элемент в зависимости от вашего браузера), вы увидите, что лирика начинается после отказа от ответственности («Содержание любых сторонних …») и заканчивается в конечном теге . Поэтому нам нужно разделить нашу строку дважды – один раз, чтобы получить все HTML после отказа от ответственности, и в другой раз, чтобы получить все HTML перед .

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

Чтобы разделить нашу лирику после отказа от ответственности, мы проходим два аргумента – текст отказа от ответственности и 1 Потому что мы только хотим разделить струну дважды, а не в каждый случай отказа от ответственности.

split = songHtmlStr.split('content by any third-party lyrics provider is prohibited by our licensing agreement. Sorry about that. -->',1)

Затем мы разделим новую строку, splithtml , в случае , опять же только разделить один раз, и первый элемент в списке будет нашей лирикой!

split_html = split[1]
    split = split_html.split('
‘,1) lyrics = split[0]

Попробуйте печатать это лирика Список – вы увидите, что у нас есть все соскобные лирики! Тем не менее, у нас есть другая проблема. Мы подняли все дополнительные биты, такие как и \ N что мы не хотим. Используйте «Заменить методы», чтобы заменить каждое из них пустыми строками или все, что вам нравится. Я использовал эти в видео, но они не идеальны – вы можете написать свои!

lyrics = lyrics.replace('\\', '')
lyrics = lyrics.replace('\nn', '\n')
lyrics = lyrics.replace('', '')
lyrics = lyrics.replace('', '')
lyrics = lyrics.replace('[Chorus]', '')

Теперь все, что нам нужно сделать, это написать эти лирику в файл, который мы открыли ранее! Как только мы закончили проходить через петлю, мы закроем файл – нам больше не нужно ничего писать ему.

Вот что должно выглядеть целое для цикла.

for x in songLinks:
    songHtml = urllib.request.urlopen(x)
    songHtmlStr = str(songHtml.read()) 
    split = songHtmlStr.split('content by any third-party lyrics provider is prohibited by our licensing agreement. Sorry about that. -->',1)
    splitHtml = split[1]
    split = splitHtml.split('
‘,1) lyrics = split[0] lyrics = lyrics.replace(‘
‘, ‘\n’) lyrics = lyrics.replace(‘\\’, ”) lyrics = lyrics.replace(‘\nn’, ‘\n’) lyrics = lyrics.replace(‘‘, ”) lyrics = lyrics.replace(‘‘, ”) lyrics = lyrics.replace(‘[Chorus]’, ”) originalLyrics.write(lyrics) originalLyrics.close()

Шаг 5: генерировать новую лирику

Этот шаг – это то, где происходит волшебство, но это также самая легкая часть. Питона Отметайте Все делает для нас! Нам нужно создать две переменные – один, который может хранить новые сгенерированные тексты песен и одну строкуемую переменную, которая Markify может прочитать из. Чтобы создать эту строку, мы собираемся читать () нашем lyrics.txt Файл, который мы создали и заполнены текстами. На этот раз мы откроем его в режиме только для чтения (‘R’).

generatedlyrics = ()
file = open('lyrics.txt', 'r')
text = file.read()

Мы передадим нашу переменную текста, чтобы узнать о том, чтобы генерировать модель на маркеровке. Это супер легко:

markovifyTextModel = markovify.Text(text)

Теперь все, что нам нужно сделать, это использовать, что Markify Model для создания предложения. Есть сотни вещей, которые вы можете сделать с этой моделью, но мы будем использовать Make_sentence, метод Markovify, который просто предсказывает одно предложение.

generatedlyrics = markovifyTextModel.make_sentence()

Распечатать генерируемыерики, и вы увидите, что некоторые предсказанные Coldplay Lyrics! Это может быть абсолютно смешным, а иногда довольно болезненным … Моим один в видео – «Я взял мой сын».

Верхний наконечник: Вы можете захотеть поставить все шаги в разные файлы или функции или прокомментировать весь код перед шагом 5. Вам не нужно создавать новый lyrics.txt Файл каждый раз.

Теперь твоя очередь!

Чтобы действительно максимально использовать из этих учебников, попробуйте построить что-то сверху этого проекта. Вот некоторые идеи:

  • Попробуйте много разных художников
  • Сделайте это в твиттер бот – я на самом деле создал один для Светодиод Zeppelin Данное назад, но теперь это неактивно
  • Создание функций, поэтому вам не нужно запускать скребок каждый раз
  • Используйте фильтр вместо замены ( https://www.tuTorialspoint.com/lambda-and-filter-in-python-examples Несомненно
  • Попросите пользователю, какой художник они хотели бы в начале
  • Сделать график
  • Создайте более одного предложения – ознакомьтесь с тем, что еще Markify может сделать!
  • Используйте ту же технику, чтобы соскрести другие сайты и создавать цепи Маркова для сценариев или речей

И там у тебя это есть! Забавный, интересный, впечатляющий проект, который вы можете показать работодателям. ДМ мне в Twitter Или прокомментируйте здесь, когда вы построите его, и позвольте мне увидеть некоторые из ваших результатов!

Оригинал: “https://dev.to/catmcgeecode/get-your-first-dev-job-by-building-these-projects-2-markov-chain-lyrics-generator-1kib”