본문 바로가기
source-code/AI

유튜브 댓글 감정 분석을 통한 주식 시장 파악 (2)

by mattew4483 2023. 8. 22.
728x90
반응형

2023.08.20 - [source-code/AI] - 유튜브 댓글 감정 분석을 통한 주식 시장 파악 (1)

 

유튜브 댓글 감정 분석을 통한 주식 시장 파악 (1)

계기이런 뉴스 기사를 봤다. https://biz.chosun.com/stock/stock_general/2023/08/16/7ZSOG4LH4RFBPIPTPL4Y4UYTZU/?utm_source=naver&utm_medium=original&utm_campaign=biz [인터뷰] “종목 추천 많으면 ‘꼭지’…투자기회, 역사에 답

23life.tistory.com

 

감정 분석 모델 학습 데이터 만들기

구현하고자 하는 모델을 다시 한번 정의해 보자.

유튜브 댓글을 입력받았을 때, 해당 댓글의 감정을 긍정/부정/중립 으로 분류한다.

 

해당 모델 학습에 필요한 train data의 형태는 다음과 같다.

x_comment y_tempeture
자연어 형태의 실제 유튜브 댓글 긍정 or 부정 or 중립 라벨 (긍정 :1 , 부정: -1, 중립 : 0)

이전 글에서 x_comment, 즉 주식 관련 유튜브 영상에 달린 댓글들을 웹 크롤링을 통해 수집했었다.

 

따라서 학습 데이터 생성을 위해 남은 일은? 

→ 각 comment에 대한 label을 달아주는 것. 손수! 일일이!

 

필요 데이터 셋 개수 파악

그렇다면 우선, 몇 개 정도의 댓글이 필요할까?

https://wikidocs.net/44249

 

10-06 네이버 영화 리뷰 감성 분류하기(Naver Movie Review Sentiment Analysis)

이번에 사용할 데이터는 네이버 영화 리뷰 데이터입니다. 총 200,000개 리뷰로 구성된 데이터로 영화 리뷰에 대한 텍스트와 해당 리뷰가 긍정인 경우 1, 부정인 경우 0을 표시…

wikidocs.net

자연어 처리를 처음 공부할 때 가장 도움이 되었던 책.

10장 - RNN을 이용한 텍스트 분류에서 우리가 하려는 감정 분석 모델에 대한 예시가 나오는데...

해당 예시들을 통해 필요 데이터셋 개수를 선정하고자 했다.

스팸 메일 분류
→ train_data : 4135개 / test_data : 1034개

네이버 영화 리뷰 감성 분류
→ train_data : 145393개 / test_data : 48852개

네이버 쇼핑 리뷰 감성 분류
→ train_data : 149931개 / test_data : 49977개

한국어 스팀 리뷰 감성 분류
→ train_data : 74919개  / test_data : 24973개

천차만별이기는 한데...

유의미한 정확도를 가지기 위해서는, 적어도 100000개 이상의 데이터 셋이 필요할 것으로 보인다.

 

라벨링

연구개발을 할 때에도 느낀 점이지만...

머신러닝 모델 학습에 있어 올바른 학습 데이터를 구축하는 것이 얼마나 중요하고, 어려운지 새삼 깨닫는 순간.

 

사실 대부분의 예제에서 학습 데이터들은

1) 정형화되어있고(예외 케이스가 드묾) 2) 레이블의 분포가 유사하며 3) 라벨 판단이 어렵지 않다.

 

하지만 실 구현 환경에서 학습 데이터를 구축한다는 건...

1) 예외 케이스가 태반인 데이터들 사이에서 2) 대부분이 어느 한쪽으로 쏠린 데이터들을 3) 고민고민하며 라벨을 붙여야 함을 의미했다.

이번 사례 역시 마찬가지!

 

chat gpt를 이용한 자연어 문장 긍정/부정/중립 분류

chat gpt에게 주식 유튜브 댓글을 긍정/부정/중립으로 분류하게 시킬 수 있지 않을까?

(이게 가능하다면, 굳이 분류 모델이 필요 없겠다는 생각이 들었다. 하하!)

 

Q) 안녕. 내가 문장을 던져주면, 해당 문장이 긍정인지 부정인지 반환하는 역할을 해줄 수 있겠어? 부정일 경우 0을, 긍정일 경우 1을 반환하면 돼.

A) 안녕! 네, 당연히 도와드릴 수 있어요. 문장을 입력해주시면 해당 문장이 긍정적인지 부정적인지를 판단해서 0 또는 1을 반환해드릴게요. 그럼 시작해볼까요?

Q) 20개가 넘는 2차전지종목이 동시에 우루루 폭등하고 차익실현을 목적으로 동시에 떨어졌다는게 말이 되는가 한두종목이면 그러려니 하겠는데 저게상식적으로 가능한 얘긴가?

A) 주어진 문장을 보면 긍정적인 표현보다는 부정적인 뉘앙스가 더 강한 것 같습니다. 따라서 해당 문장은 부정적인 내용을 담고 있다고 판단할 수 있습니다. 따라서 0을 반환하겠습니다.

Q) 2차전지가 테슬라보다 돈을 많이 벌면 모르겠는데...그럴수가 없는 구조인데, 어떻게 올해 테슬라 최저가에서 130% 넘어서 900%나 상승할 수 있었는지 의문임.이러고 좋다고 에코프로 사라고 한 사람들 다 기억해서, 나중에 그 종목만 피하면 손해는 면한다.
A) 주어진 문장 또한 부정적인 뉘앙스를 담고 있는 것으로 보입니다. 따라서 이 문장도 부정적인 내용을 나타내므로 0을 반환하겠습니다.

시작이 제법 좋아 보인다.

 

Q) 에코프로 차트보면 올해 쉬지않고 오를 수가...9천원짜리 매집해서 120만원짜리를 만들었네~이것도 조사 한번해봐야하는거 아닌가

A) 해당 문장은 긍정적인 뉘앙스로 보입니다. 주가 상승과 이익 창출에 대한 언급이 있으므로 긍정적인 내용을 나타내고 있습니다. 따라서 1을 반환하겠습니다.

뭔가 이상한 지점.

에코프로 차트와 관련된 의혹 사항을 짚어내는 댓글이기 때문에 부정(-1)에 가까운데,

'쉬지 않고 오를 수-' 라는 문장으로 인해 긍정(1)으로 잘 못 분류한 모습.

 

Q) 주가는 떨어져도 증권회사는 안망하더라.

A) 주어진 문장은 긍정적인 내용을 담고 있습니다. 주가의 하락과 관련하여 증권회사의 안정성을 언급하고 있으며, 이는 긍정적인 뉘앙스를 나타냅니다. 따라서 1을 반환하겠습니다.

역시 잘 못 추론된 모습.

 

즉 주식과 관련된 댓글에서는 마냥 올랐다 = 긍정, 내렸다 = 부정 을 의미하지 않을 때가 많기 때문에,

fine_tuning 없이 gpt 모델 만으로 도메인에 맞는 감정 분류가 이뤄지지 않음을 확인할 수 있었다.

 

→ 기존 방식인 손수 라벨링을 해 학습 데이터를 생성한 후, 분류 모델을 학습시키는 것이 최선의 방법일 듯싶다.

728x90
반응형

'source-code > AI' 카테고리의 다른 글

유튜브 댓글 감정 분석을 통한 주식 시장 파악 (1)  (0) 2023.08.20