1.Обзор

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

Сердар Ортач - один из самых известных поп-исполнителей в Турции. Он успешный музыкант. Я использовал Serdar Ortaç для моего примера глубокого обучения. Потому что у него много музыки и много текстов. Эта ситуация очень хороша для генерации лирики.

2. Мотивация

Насколько я смотрю из интернета, такой работы с использованием этой техники нет. Когда я выложу эту работу на GitHub, я думаю, она вдохновит многих людей. Используя LSTM, музыкальный рынок может разрешить новые исследования.

Давайте начнем!!!

3. Подготовка набора данных

3.1 Получение данных с веб-сайта

У меня нет набора данных в Интернете. Вот почему мне пришлось собирать данные из Интернета. Я использовал библиотеку BeautifulSoup для сканирования данных текстов песен.

# import libraries
import urllib.request
from bs4 import BeautifulSoup
import time

Во-первых, я импортировал соответствующие библиотеки для загрузки песен Сердара Ортача. На сайте 5 подстраниц.

# specify the url
quote_pages = ['https://sarki.alternatifim.com/sarkici/serdar-ortac/sayfa-1',
'https://sarki.alternatifim.com/sarkici/serdar-ortac/sayfa-2',
'https://sarki.alternatifim.com/sarkici/serdar-ortac/sayfa-3',
'https://sarki.alternatifim.com/sarkici/serdar-ortac/sayfa-4',
'https://sarki.alternatifim.com/sarkici/serdar-ortac/sayfa-5',
]
lyrics_href = []
for i in quote_pages:    
    # query the website and return the html to the variable ‘page’
    page = urllib.request.urlopen(i)
# parse the html using beautiful soup and store in variable `soup`
    soup = BeautifulSoup(page, 'html.parser')
# Take out the <div> of name and get its value
    url_box = soup.find('div', attrs={'class': 'sarkisozu'}).find_all('a')
for a in url_box:
        if "/sarkici/serdar-ortac/" in str(a):
            lyrics_href.append( a['href'])

Во-вторых, у меня есть ссылки на тексты песен, и я объединяю эти ссылки с основным URL-адресом, например
https://sarki.alternatifim.com/sarkici/serdar-ortac/aciları-bitiremedim.

main_url = "https://sarki.alternatifim.com"
url = main_url + lyrics_href[1]
url # --> 'https://sarki.alternatifim.com/sarkici/serdar-ortac/acilari-bitiremedim'

В-третьих, я получил все песни из созданных URL-адресов с помощью BeautifulSoup.

# query the website and return the html to the variable ‘page’
page = urllib.request.urlopen(url)
# parse the html using beautiful soup and store in variable `soup`
soup = BeautifulSoup(page, 'html.parser')
# Take out the <div> of name and get its value
url_box = soup.find('div', attrs={'class': 'sarkisozu'})
song = url_box.get_text().replace(".","").strip().split("\n")
song = [e for e in song if e!='' ] # remove blank character
song = [[song[i],lyrics_href[1]] for i in range(len(song)) if i!=len(song)-1]
#song --> [['Artık aşka acelem yok', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Çok bekler miyim?', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Seni içtim bir seferde', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Çok özler miyim?', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Ayrılık bu son nefeste', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Yakalar beni', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Yanlız ölmem bu seferde', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Korkma vur beni', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Acıları bitiremedim', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Gururuma yediremedim', '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Sana bu son sözüm son kararım',
  '/sarkici/serdar-ortac/acilari-bitiremedim'],
 ['Yine de seni bende bitiremedim ',
  '/sarkici/serdar-ortac/acilari-bitiremedim']]

Наконец, я создал собственную базу данных и импортировал песни в CSV-файл.

song_big_dataset=[]
for j in range(len(lyrics_href)):
    url = main_url + lyrics_href[j]
    # query the website and return the html to the variable ‘page’
    page = urllib.request.urlopen(url)
# parse the html using beautiful soup and store in variable `soup`
    soup = BeautifulSoup(page, 'html.parser')
# Take out the <div> of name and get its value
    url_box = soup.find('div', attrs={'class': 'sarkisozu'})
    song = url_box.get_text().replace(".","").strip().split("\n")
    song = [e for e in song if e!='' or e.find("eval(")!=-1 ] # remove blank character
    for i in range(len(song)):
        if i!=len(song)-1:
            song_big_dataset.append([song[i],lyrics_href[j]])
#print(len(song_big_dataset)) --> 4251
csvData = song_big_dataset
with open('songAll.csv', 'w') as csvFile:
    writer = csv.writer(csvFile)
    writer.writerows(csvData)
csvFile.close()

3.2 Предварительная обработка данных

После того, как я создал набор данных, мне пришлось проверить набор данных. Когда я проверил данные, я увидел некоторые неточности и вещи, которые нужно было исправить.

  • Лирика на иностранном языке

  • Ненужное слово «[reklamı gizle/скрыть рекламу]»

  • Другие ненужные слова («x2», «x 2», «2x», «(x2)») в повторяющихся частях песни.