2022. 6. 28. 22:37ㆍProject/감정분석과 노래 추천
회의록
▶ 데이터 수집 관련
■ 데이터 추가 수집
- 노래가사로는 데이터가 부족하다고 판단 감정이 풍부한 문학작품을 이용하면 어떨까?
문학광장 문장 – 생활 속 작은 여유로움 "문장"
생활 속 작은 여유로움 "문장"
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
'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 |