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)») в повторяющихся частях песни.