Emotions and Music 2

2022. 6. 28. 22:37Project/감정분석과 노래 추천

728x90
반응형

회의록

유튜브 비디오 데이터를 이용한 프로젝트를 구상했지만 데이터가 너무 무거워서 보류하고 새로운 주제를 다시 생각함

▶ 주제 브레인스토밍

■ thumbnail 자동생성기

 유튭 댓글 악플 판별기

 안면 감정분석기

 youtube댓글과 캡처이미지를 활용하여 출연자 등장빈도 정보 제공 서비스

 교차편집

 시 써주기

 마음치유글귀 생성서비스(nlp) → 캘리그라피로 생성(cv) ★

 소설 요약(nlp) → 대표이미지 생성(cv) ★

 상황설명 → 감정분석(nlp) → 글귀 ,영상,노래 추천 ★

  • 모델개발 범위 : 감정분석 + 위로 글귀 자동생성
  • 영상 및 노래 추천 youtube api로 구현
  • 데이터를 어디서? : 감정분석 / 글귀 자동생성
  • 어떤 모델? : koBERT
  • 웹 구현?

▶ 추가적인 아이디어

■ 상황설명 : 감정분석 ( NLP )

■ 글씨를 손글씨 ( GAN )

■ 위 두가지로 진행하고 글귀 자동생성은 나중에 고려

▶ 데이터

■ 네이트판...?

■ AI hub 데이터

■ 영화 댓글

■ 노래가사 -> Train 데이터로 사용해보면 어떨까?

▶ 모델

KNU 감정사전

KoBERT

코드

멜론에서 멜론DJ > #테마장르 > 사랑과 이별,위로에서 플레이리스트 들고오기

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
import pymysql
import warnings # 경고창 무시
import time
warnings.filterwarnings('ignore')

conn = pymysql.connect(user    = '',
                       passwd  = '',
                       port    = 0000,
                       db      = 'Music',
                       charset = 'utf8')

cur = conn.cursor()

url = "https://www.melon.com/"

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.implicitly_wait(3)
driver.maximize_window()

driver.get(url)
driver.implicitly_wait(5)

# 멜론 DJ 클릭
driver.find_element_by_xpath('//*[@id="gnb_menu"]/ul[1]/li[4]/a/span[2]').click()
driver.implicitly_wait(5)

# #테마장르 클릭
driver.find_element_by_xpath('//*[@id="gnb_menu"]/ul[1]/li[4]/div/ul/li[3]/a/span').click()
driver.implicitly_wait(5)
thema_url = driver.current_url
# 테마를 차례대로 클릭
for i in [5, 7, 14]:
    driver.find_element_by_xpath(f'//*[@id="tab1"]/li[{i}]/a').click()
    playlist_url = driver.current_url
    driver.implicitly_wait(5)
    num = int(input("가지고 오고싶은 플레이리스트 수 : "))
    # 첫번째 곡 부터 클릭후 노래 정보 가져오기 
    for j in range(1, num+1):
        driver.find_element_by_xpath(f'//*[@id="djPlylstList"]/div/ul/li[{j}]/div[2]/div[1]/a[2]').click()
        driver.implicitly_wait(5)
        time.sleep(3)
        driver.find_element_by_xpath(f'//*[@id="pageObjNavgation"]/div/span/a[{x}]').click()
        url = driver.current_url
        driver.get(url)
        driver.implicitly_wait(5)
        time.sleep(3)
        for z in range(1, len(driver.find_elements_by_tag_name("tr"))):
            driver.find_element_by_xpath(f'//*[@id="frm"]/div/table/tbody/tr[{z}]/td[4]/div/a').click()
            driver.implicitly_wait(5)
            artist_name = driver.find_element_by_class_name("artist_name").text                
            song_name = driver.find_element_by_class_name("song_name").text
            lyric = driver.find_element_by_class_name("lyric").text
            music = (artist_name, song_name, lyric)
            cur.execute('INSERT IGNORE INTO music (artist_name, song_name, lyrics) VALUES (%s ,%s, %s)', music)
            conn.commit()
            driver.back()
            driver.implicitly_wait(5)
        if int(driver.find_element_by_class_name("sum").text[1:-1]) % 50 != 0:
            page = int(driver.find_element_by_class_name("sum").text[1:-1]) // 50 + 1
        else:
            page = int(driver.find_element_by_class_name("sum").text[1:-1]) // 50
        for x in range(1, page):
            driver.find_element_by_xpath(f'//*[@id="pageObjNavgation"]/div/span/a[{x}]').click()
            url = driver.current_url
            driver.get(url)
            driver.implicitly_wait(5)
            time.sleep(3)
            for y in range(1, len(driver.find_elements_by_tag_name("tr"))):
                driver.find_element_by_xpath(f'//*[@id="frm"]/div/table/tbody/tr[{y}]/td[4]/div/a').click()
                driver.implicitly_wait(5)
                artist_name = driver.find_element_by_class_name("artist_name").text                
                song_name = driver.find_element_by_class_name("song_name").text
                lyric = driver.find_element_by_class_name("lyric").text
                music = (artist_name, song_name, lyric)
                cur.execute('INSERT IGNORE INTO music (artist_name, song_name, lyrics) VALUES (%s ,%s, %s)', music)
                conn.commit()
                driver.back()
                driver.implicitly_wait(5)
                time.sleep(3)
        driver.get(playlist_url)
    driver.get(thema_url)

driver.quit()

참고 자료

http://www.aitimes.com/news/articleView.html?idxno=141511

728x90
반응형

'Project > 감정분석과 노래 추천' 카테고리의 다른 글

Emotions and Music 6  (0) 2022.07.03
Emotions and Music 5  (0) 2022.07.03
Emotions and Music 4  (0) 2022.07.03
Emotions and Music 3  (0) 2022.06.28
Emotions and Music 1  (0) 2022.06.28