
Aujourd'hui, nous allons essayer de former notre propre réseau de neurones pour écrire des paroles de chansons. L'échantillon de formation sera constitué des textes du groupe Hands Up. Rien ne vous empêche d'échanger des données pour les textes de vos groupes préférés. Pour extraire des données de sites Web, nous utilisons Python3 (module BeautifulSoup).
La tâche consistera à télécharger des données (textes) à partir de sites Web, puis à former le réseau neuronal en fonction de ceux-ci.
En fait, vous pouvez diviser le travail en 2 étapes:
Étape 1: déchargez et enregistrez les paroles dans un format pratique.
Étape 2: formez votre propre réseau de neurones.
Pour que les trolls et les amateurs recherchent le sens secret, je dirai tout de suite:
- Je ne suis pas membre de Hands Up.
- Cet article n'est une publicité pour aucun groupe.
- Je n'ai pas reçu un sou pour elle.
- Je n'approuverai pas les commentaires, qui ont essentiellement pour seul effet d'agacer l'auteur, sur les fautes de frappe. Bien sûr, j'essaie de tout faire sans erreur, malheureusement, je ne suis pas un locuteur natif de la langue russe et parfois je ne remarque rien, veuillez être gentil et écrire à ce sujet de manière personnelle. Aux autres, avec mes plaisanteries drôles, je propose une promenade dans les bois.
Étape 1
Environnement virtuel pour le projet (virtualenv).
REPO
#start virtualenv -p python3 my_song #
#run source my_song/bin/activate
#install modules pip install -r requirements.txt
Déchargement et sauvegarde des paroles du site Web au format * .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'
L'étape suivante consiste à translittérer le texte dans la version latine (le modèle fonctionne mieux pour l'alphabet latin que pour l'alphabet cyrillique).
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') ' ' '''
Étape 2
from textgenrnn import textgenrnn textgen = textgenrnn() textgen.train_from_file('trans.csv', num_epochs=1) # created file textgenrnn_weights.hdf5
Et c'est tout! Il était facile et pratique à utiliser (textgenrnn) [ https://github.com/minimaxir/textgenrnn ], les textes ne sont toujours pas réalistes, mais vous devez modifier les paramètres du modèle vous-même.

L'avantage de textgenrnn est que vous n'avez pas besoin de traiter n'importe quel type de traitement de données, chargez simplement un ensemble de données texte et asseyez-vous avec une tasse de café tout en regardant votre formation de modèle.
# textgen_2 = textgenrnn('textgenrnn_weights.hdf5') textgen_2.generate(3, temperature=1.0) textgen_2.generate_to_file('lyrics.txt')
Et ensuite?
Maintenant, après avoir appris à créer textgenrnn pour créer des textes, vous pouvez faire beaucoup en utilisant ces connaissances:
- Créez un article Wikipedia.
- Messages sur les réseaux sociaux.
- Nouvelles.
Liste des sources utilisées:
https://github.com/minimaxir/textgenrnn
https://towardsdatascience.com/ai-generates-taylor-swifts-song-lyrics-6fd92a03ef7e