Tulis lagu Anda dalam 10 menit (modul textgenrnn Python3)


Hari ini kami akan mencoba melatih jaringan saraf kami sendiri untuk menulis lirik lagu. Sampel pelatihan akan menjadi teks-teks dari kelompok Hands Up. Tidak ada yang mencegah Anda bertukar data untuk teks grup favorit Anda. Untuk mengekstrak data dari situs web, kami menggunakan Python3 (modul BeautifulSoup).


Tugasnya adalah untuk mengunduh data (teks) dari situs web dan kemudian melatih jaringan saraf berdasarkan pada mereka.


Bahkan, Anda dapat membagi pekerjaan menjadi 2 tahap:
Tahap 1: bongkar dan simpan lirik dalam format yang nyaman.
Tahap 2: latih jaringan saraf Anda sendiri.


Kepada para troll dan amatir untuk mencari makna rahasia yang akan kukatakan segera


  • Saya bukan anggota Hands Up.
  • Artikel ini bukan iklan untuk grup mana pun.
  • Saya tidak mendapatkan satu sen untuknya.
  • Saya tidak akan menyetujui komentar, yang intinya hanya mengganggu penulis, tentang kesalahan ketik. Tentu saja saya mencoba melakukan semuanya tanpa kesalahan, sayangnya, saya bukan penutur asli bahasa Rusia dan kadang-kadang saya tidak melihat sesuatu, mohon berbaik hati dan menulis tentang hal itu secara pribadi. Bagi yang lain, dengan olok-olok tidak lucu saya, saya mengusulkan berjalan-jalan di hutan.

Tahap 1


Lingkungan virtual untuk proyek (virtualenv).
REPO


#start virtualenv -p python3 my_song # 

 #run source my_song/bin/activate 

 #install modules pip install -r requirements.txt 

Membongkar dan menyimpan lirik dari situs web di simpan dalam 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' 

Langkah selanjutnya adalah mentransliterasikan teks ke dalam versi Latin (model ini berfungsi lebih baik untuk alfabet Latin daripada alfabet Cyrillic).


 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') '      ' ''' 

Tahap 2


 from textgenrnn import textgenrnn textgen = textgenrnn() textgen.train_from_file('trans.csv', num_epochs=1) # created file textgenrnn_weights.hdf5 

Dan itu saja! Mudah dan nyaman digunakan (textgenrnn) [ https://github.com/minimaxir/textgenrnn ], teksnya masih tidak realistis, tetapi Anda harus mengubah parameter model sendiri.



Keuntungan dari textgenrnn adalah Anda tidak perlu berurusan dengan segala jenis pemrosesan data, cukup memuat satu set data teks dan duduk dengan secangkir kopi sambil menonton model pelatihan Anda.


 #      textgen_2 = textgenrnn('textgenrnn_weights.hdf5') textgen_2.generate(3, temperature=1.0) textgen_2.generate_to_file('lyrics.txt') 

Apa selanjutnya


Sekarang, setelah Anda belajar cara membuat textgenrnn untuk membuat teks, Anda dapat melakukan banyak hal menggunakan pengetahuan ini:


  • Buat artikel Wikipedia.
  • Posting di jejaring sosial.
  • Berita

Daftar sumber yang digunakan:


https://github.com/minimaxir/textgenrnn
https://towardsdatascience.com/ai-generates-taylor-swifts-song-lyrics-6fd92a03ef7e

Source: https://habr.com/ru/post/id464973/


All Articles