# 프로젝트 이름
MZ세대를 위한 플랫폼 – ‘대장주’ 투자의견 감정 분석
## 프로젝트 팀
같이하자 가치투자(이동환, 최지웅, 황우진)
## 구현한 코드
[크롤링 및 텍스트 추출을 수행한 코드](https://github.com/sw-membership/ji_wung)
[모델 학습 및 예측을 수행한 코드](https://github.com/sw-membership/train-notebook)
[모델 학습에 사용한 데이터셋 코드](https://github.com/sw-membership/datasets)
[STT를 수행한 코드](https://github.com/sw-membership/ncloud-csr)
[번역을 수행한 코드](https://github.com/sw-membership/ncloud-papago)
## 참고한 코드
[sumy](https://github.com/miso-belica/sumy)
[pygooglenews](https://github.com/kotartemiy/pygooglenews)
[korea-sentence-splitter](https://github.com/likejazz/korean-sentence-splitter)
[spacy](https://github.com/explosion/spaCy)
## 모델 학습
캐글의 [sentiment-analyis-for-financial-news](https://www.kaggle.com/ankurzing/sentiment-analysis-for-financial-news/) 데이터셋을 사용하여 모델을 학습하였습니다. 이느 주식 금융 뉴스에 대해 긍정, 부정, 중립 3가지 레이블로 약 5000여개의 데이터를 분류한 데이터셋입니다.
해당 데이터셋을 전처리한 후 데이터셋을 train, val, test 로 약 8:1:1 비율로 분리하여 학습을 수행했습니다.
자연어 처리를 위해 electra 모델을 사용하였으며 pre-trained 로 hugging-face의 google/electra-small-discriminator를 사용하였습니다.
다음 하이퍼파라미터를 통해 학습을 수행했으며 Colab 환경 기반에서 수행되었습니다.
```
epochs = 200
learning_rate = 1e-4
weight_decay = 0.0
adam_epsilon = 1e-8
max_grad_norm = 1.0
batch_size = 32
optimizer = AdamW
scheduler = linear
```
test 데이터셋 예측 결과 f1 score 는 다음과 같습니다.
```
0.9589840173721313
```
## 유튜브 댓글 분석
특정 주식 종목과 관련된 내용을 다루는 유튜브 영상에서 개인 투자자들의 댓글을 가져와서 이를 전처리하고 분석합니다.
1. 유튜브 영상에 작성된 댓글을 수집합니다.
2. 수집한 댓글에서 의미없는 댓글이나 은어 등을 제거해주는 전처리 과정을 거칩니다.
3. 네이버 CLOVA API를 사용하여 한글 텍스트를 영어로 번역합니다.
4. 번역한 결과를 바탕으로 사전에 훈련한 모델을 사용하여 영어 텍스트를 기반으로 감정 분석을 수행합니다.
5. 분석을 통해 개인 투자자들의 해당 종목에 대한 의견이 긍정 혹은 부정인지 또는 중립의 의견을 가졌는지 결과로 도출합니다.
...
## 한국 증권 유튜버 분석
MZ 세대가 주로 증권 정보를 얻는 유명 유튜버들의 영상으로부터 정보를 가져와서 이를 전처리하고 분석합니다.
1. 유튜브에서 직접 영상을 추출합니다.
2. 추출한 영상으로부터 네이버 STT(Speech To Text) API 를 사용하여 한글 텍스트를 추출합니다.
3. 한글 텍스트를 네이버 번역 API 를 사용하여 영어로 번역합니다.
4. 훈련한 모델을 사용해서 영어 텍스트를 기반으로 감정 분석을 수행합니다.
5. sumy 를 사용해서 예측한 레이블을 바탕으로 긍정, 부정 각 3개씩 중요 문장을 추출합니다.
## 외국 증권 유튜버 분석
MZ 세대가 주로 증권 정보를 얻을 수도 있다는 외국 유튜버들의 영상으로부터 정보를 가져와서 이를 전처리하고 분석합니다.
1. 유튜브에서 직접 영상 캡션 자막을 추출합니다.
2. 추출한 캡션 자막을 문장 세그멘테이션 등 전처리를 수행합니다.
3. 훈련한 모델을 사용해서 영어 텍스트를 기반으로 감정 분석을 수행합니다.
## 구글 미국 뉴스 분석
pygooglenews 라이브러리를 활용해 검색어 ("종목명(영어) + stock"), 검색기간(21년 5월~9월), 검색지역(미국)으로 설정하고 도출한 뉴스url들을 sumy 라이브러리를 활용해 크롤링 및 요약했습니다.
## 증권사 리포트 분석
‘한경컨센서스’ 에서 pdf 형식의 국내 증권사 리포트를 크롤링했습니다. tika라이브러리를 활용해 pdf파일에서 텍스트를 추출했습니다.
## 최종 결과물
### 도메인 별 긍부정 분석
유튜브 댓글, 한국 유튜버 영상, 외국 유튜버 영상, 구글 뉴스, 증권사 리포트
### 도메인 별 sumy 분석
한국 유튜버 영상, 외국 유튜버 영상, 구글 뉴스, 증권사 리포트 sumy 분석
## 제공데이터 분석
제공데이터를 통해, 20, 30대 중 buy&hold비중이 높은, 즉 20,30대 가치투자자 고객의 최다 보유종목을 총금액(20년 8월~21년 5월) 기준으로 파이차트로 시각화했습니다. 아래의 파이차트 내 삼성전자 (삼성전자+삼성전자우)의 파란색 비중이 보여주듯, 투자는 ‘대장주’에 편중돼있음을 알 수 있습니다.
## 유튜브 댓글 분석 결과
유튜브 채널 '슈카월드', '돈깡의 알고하는 투자', '재테크 연구소', 'Change Ground' 총 네 개의 채널에서 MZ세대의 Buy & Hold 비중이 가장 높은 종목인 삼성전자에 관련된 댓글만 추출하여 분석하였다. 유튜브 댓글 중 매수나 매도에 관련된 내용이 포함된 문장은 극명하게 긍정/부정의 결과가 나왔고, 그렇지 않은 대부분의 댓글에서는 중립의 결과가 나왔다.
다음 파이 차트에서 볼 수 있듯, 약 75%의 댓글이 중립으로 나타났다.
이를 통해, 댓글을 단 사람들이 삼성전자에 관해 과도하게 긍정적, 부정적으로 생각하지 않고, 비교적 중립적인 관점으로 투자를 고민하고 있음을 알 수 있다.
즉, 댓글 분석을 통해 특정 종목에 대해 비이성적 과열 여부를 확인할 수 있다는 함의가 있다.
## sumy로 긍정문장 1,2,3위, 부정문장 1,2,3위 도출
이 부분이 저희 서비스의 핵심입니다. 한국 유튜브 영상, 증권사 레포트, 구글 뉴스에서 추출한 문장에서 긍정 문장의 순위, 부정 문장의 순위를 sumy 라이브러리를 활용해 도출했습니다.
sumy라이브러리는 핵심 문장 순으로 요약해주는 라이브러리입니다.
(sumy 라이브러리의 성능이 영어로 input했을 때 가장 잘 나오기에,) 모든 한국어 문장을 '네이버 파파고 api'를 통해 영어로 번역한 후 순위를 매겼습니다.
최종적으로 긍/부정 1,2,3위 문장을 다시 한국어로 번역해 보여주었습니다.