
Hoje vamos tentar treinar nossa própria rede neural para escrever letras de músicas. A amostra de treinamento será o texto do grupo Hands Up. Nada impede que você troque dados pelos textos de seus grupos favoritos. Para extrair dados de sites, usamos Python3 (módulo BeautifulSoup).
A tarefa será fazer o download de dados (textos) de sites e treinar a rede neural com base neles.
De fato, você pode dividir o trabalho em duas etapas:
Etapa 1: descarregue e salve a letra em um formato conveniente.
Etapa 2: treine sua própria rede neural.
Aos trolls e amadores que procurem o significado secreto, direi imediatamente:
- Eu não sou um membro da Hands Up.
- Este artigo não é um anúncio para nenhum grupo.
- Eu não recebi um centavo por ela.
- Não aprovarei os comentários, que têm a essência de apenas irritar o autor, sobre erros de digitação. É claro que tento fazer tudo sem erros, infelizmente, não sou falante nativo do idioma russo e, às vezes, não percebo algo, por favor, seja gentil e escreva sobre isso no PM. Para outros, com minhas brincadeiras sem graça, proponho um passeio na floresta.
Etapa 1
Ambiente virtual para o projeto (virtualenv).
REPO
#start virtualenv -p python3 my_song #
#run source my_song/bin/activate
#install modules pip install -r requirements.txt
Descarregar e salvar as letras do site em salvar no formato * .csv.
#-*- coding: utf-8 -*- import urllib.request from bs4 import BeautifulSoup import pandas as pd URL = 'http://txtmusic.ru/index.php?s=%D0%F3%EA%E8+%C2%E2%E5%F0%F5%21' # page = urllib.request.urlopen(URL) soup = BeautifulSoup(page) li = soup.body.findAll('li') # <li> URL URLS = ['http://txtmusic.ru/'+laget('href') for l in li] df = pd.DataFrame(columns=['name', 'text']) list_of_names = [] list_of_text = [] ind=0 BIG = "" for URL in URLS: page = urllib.request.urlopen(URL) soup = BeautifulSoup(page) article = soup.body.findAll('article') # ( rticle) text = str(article[0]).split('\n')[8] text = text.split('<br/>') text = [t for t in text if t!=''] text = " ".join(text) name= str(article[0].h1).split(" - ")[1].rstrip("</h1>") list_of_text.append(text) list_of_names.append(name) df.name = list_of_names df.text = list_of_text df.to_csv('songs.csv') # 'songs.csv'
O próximo passo é transliterar o texto para a versão latina (o modelo funciona melhor para o alfabeto latino do que para o alfabeto cirílico).
import pandas as pd df = pd.read_csv('songs.csv') df = df[['name','text']] df.text = df.text.apply(lambda x: cyrtranslit.to_latin(x, 'ru')) df.text.to_csv('trans.csv') ''' cyrtranslit.to_latin(' ', 'ru') 'Moyo sudno na vozdushnoj podushke polno ugrej' cyrtranslit.to_cyrillic('Moyo sudno na vozdushnoj podushke polno ugrej') ' ' '''
Etapa 2
from textgenrnn import textgenrnn textgen = textgenrnn() textgen.train_from_file('trans.csv', num_epochs=1) # created file textgenrnn_weights.hdf5
E isso é tudo! Era fácil e conveniente de usar (textgenrnn) [ https://github.com/minimaxir/textgenrnn ], os textos ainda não são realistas, mas você deve alterar os parâmetros do modelo.

A vantagem do textgenrnn é que você não precisa lidar com nenhum tipo de processamento de dados, basta carregar um conjunto de dados de texto e sentar com uma xícara de café enquanto assiste ao treinamento do modelo.
# textgen_2 = textgenrnn('textgenrnn_weights.hdf5') textgen_2.generate(3, temperature=1.0) textgen_2.generate_to_file('lyrics.txt')
O que vem a seguir?
Agora, depois de aprender como criar textgenrnn para criar textos, você pode fazer muito usando este conhecimento:
- Crie um artigo da Wikipedia.
- Publicações nas redes sociais.
- Notícias.
Lista de fontes utilizadas:
https://github.com/minimaxir/textgenrnn
https://towardsdatascience.com/ai-generates-taylor-swifts-song-lyrics-6fd92a03ef7e