Emotions and Music 3

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

728x90
반응형

회의록

▶ 데이터 수집 관련

■ 데이터 추가 수집

-  노래가사로는 데이터가 부족하다고 판단 감정이 풍부한 문학작품을 이용하면 어떨까?

 

문학광장 문장 – 생활 속 작은 여유로움 "문장"

생활 속 작은 여유로움 "문장"

munjang.or.kr

 

브런치 키워드: 감성 에세이

특정 주제의 키워드로 글을 모아보세요!

brunch.co.kr

- 브런치는 너무 감성적이지 않을까...? 라고 판단하고 추후 데이터 부족하다고 판단하면 추가 수집 보류!

- 문학작품을 Train Data로 이용하고 노래가사를 Test Data로 이용

- 문학작품은 너무 길기 때문에 한 문장씩 받아오기

▶ Model 관련

KoBERT

 

[Python, KoBERT] 다중 감정 분류 모델 구현하기 (huggingface로 이전 방법 O)

1. BERT, KoBERT란?  구글에서 2018년에 공개한 BERT는 등장과 동시에 수많은 NLP 태스크에서 최고 성능을 보여주면서 NLP의 한 획을 그은 모델로 평가받고 있다. 양방향성을 지향하고 있기 때문이다.(B:

hoit1302.tistory.com

■ Word2Vec 과 LSTM 유사도 분석 : 라벨링

 

원문보기 - ScienceON

 

scienceon.kisti.re.kr

Project Framework

▶ Project 흐름도 초안

▶ Model Pipeline 초안

- 어떻게 입력된 상황을 노래가사와 매칭을 시킬 수 있을까?

  • 모델 2개를 연결해 대분류( 큰 감정들 ) -> 소분류 ( 세부 감정 ) 느낌으로 두번 분류를 진행?
  • LSTM : 2개 모델을 각각 만들기 ( 상황 - 노래 )
  • 코사인유사도 사용

코드

- 문학광장에서 수필 데이터 크롤링

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import pymysql
import warnings # 경고창 무시
import time
import re
warnings.filterwarnings('ignore')


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

cur = conn.cursor()


driver = webdriver.Chrome(ChromeDriverManager().install())
driver.implicitly_wait(3)
driver.maximize_window()
driver.implicitly_wait(3)
st = []
for i in range(42, 300):
    url = f'https://teen.munjang.or.kr/archives/category/write/life/page/{i}'
    driver.implicitly_wait(3)
    driver.get(url)

    html = driver.page_source 
    soup = BeautifulSoup(html, 'html.parser')
    temp = [i['id'] for i in soup.select('#main > article[id]')]
    for t in temp:
        if "추천해요" in [i.text for i in soup.select(f'#{t} > div > div.post_content > div.post_title > a')][0]:
            continue
        if [i.text for i in soup.select(f'#{t} > div > div.post_content > div.post_title > p')] == [] and [i.text for i in soup.select(f'#{t} > div > div.post_content > div.post_title > a > span')] != ['[공지] ']:
            driver.find_element_by_xpath(f'//*[@id="{t}"]/div/div[2]/div[1]/a').click()
            driver.implicitly_wait(30)
            sentence = driver.find_element_by_class_name("entry-content").text.split("\n")
            time.sleep(5)
            for s in sentence:
                s = s.strip()
                s = re.sub(r'[^가-힣A-Za-z0-9\.\,\!\?\s]', '', s)
                s = re.sub('  +', " ", s)
                if len(s) <= 25:
                    continue
                cur.execute('INSERT IGNORE INTO essay (sentences) VALUES (%s)', s)
                conn.commit()
        else: continue
 
        driver.back()
    print(f'{i}페이지 끝')
driver.quit()

참고

 

[Git] Github으로 협업하기 ( 토이 팀프로젝트 시나리오, 브랜치 전략 )

이 글은 팀프로젝트를 할 때 처음 Git, Github을 사용해서 협업하는 분들을 대상으로 합니다. 작업하는 과정에서 있을 수 있을 법한 일들을 시나리오로 만들었습니다. 상황 A, B, C 3명이 팀을 이뤄 

victorydntmd.tistory.com

 

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 2  (0) 2022.06.28
Emotions and Music 1  (0) 2022.06.28