# Final Project 야, 너도 화성 갈 수 있어
###### tags: `News_to_corp`
#관련주식추출 #뉴스 #주식
**자연어학당(NLP-final_project-06)**
***나요한, 백재형, 송민재, 이호영, 정찬미, 한진, 홍석진***
## 프로젝트 소개
신규 투자자들이 많아지고 있는데 정보를 얻기가 쉽지 않다. 따라서 뉴스 기사와 연관된 기업을 추출하고자 함
매일 쏟아지는 뉴스에서 단타,장타등 주식에 투자하는 사람들은 실적발표, 사건사고, 제품 출시등을 통해 거래가 이루어진다. 이런 거래는 본 제품과 관련이 있는 회사의 주식이 상승하기도 하지만 관련주 또한 같이 상승하게 된다. 따라서 새로운 뉴스에 따른 빠른 관련주의 주식확인이 필요하다.
## 프로젝트 계획 및 모델링
주식투자자를 위해 오늘의 뉴스를 통해 관련된 종목을 찾아보자.
### 데이터 수집 및 전처리
#### DART
- DART API (https://opendart.fss.or.kr/)-> XML / json
- bs4 라이브러리로 parsing
- 재무제표, 제품 등 표를 텍스트 형태로 parsing
- email, url, 특수문자 등 제거
- 코스피, 코스닥 기업만 추출
- 효과 비교를 위해 context 기준으로 분리
#### 뉴스 기사
##### 모델 학습
문서요약 텍스트 <신문기사> 30만건
https://aihub.or.kr/aidata/8054
##### 주식관련 뉴스
네이버 검색 API (https://openapi.naver.com/v1/search/news.json) -> json
매일 8시부터 15시까지 1시간마다 dart 기업당 5개의 관련 뉴스를 받아와서 저장함
### 뉴스 분류 모델
#### KoBERT
- 위키피디아나 뉴스 등에서 수집한 수백만개의 한국어 문장으로 이루어진 corpus를 학습
- 한국어의 불규칙한 언어 변화의 특성을 반영하기 위해서 데이터 기반 토큰화 기법을 적용하여 기존 BERT 모델 대비 27%의 토큰만으로 MaskedLM predict, Next sentence predict accuracy에서 2.6%의 성능 향상을 이끌어냄
- 대량의 데이터를 빠른 시간에 학습하기 위해서 ring-reduce 기반 분산 학습 기술을 사용하여 10억 개 이상의 문장을 다수의 머신에서 빠르게 학습

requirements.txt
```
pip install mxnet
pip install gluonnlp pandas tqdm
pip install sentencepiece
pip install transformers==3.0.2
pip install torch
pip install git+https://git@github.com/SKTBrain/KoBERT.git@master
```
- Hyperparameter
```
max_len = 200
batch_size = 64
warmup_ratio = 0.1
num_epochs = 5
max_grad_norm = 1
log_interval = 200
learning_rate = 5e-5
```
### 관련주 추출 모델
#### wordrank + BM25
- 뉴스에서 키워드를 뽑기 위해 [KR-WordRank](https://github.com/lovit/KR-WordRank)를 사용
#### NER + BM25
- 뉴스 -> 형태소분석(명사) -> BM25 (경제뉴스 + 필요 시 정치 기사 포함)
#### Doc2Vec
- 입력되는 뉴스 데이터와 DART 문서 간의 Embedding 유사도 비교
### 지식 그래프 구축
### Flask
requirements.txt
```
flask=2.0.2
Flask-Migrate=3.1.0
Flask-SQLAlchemy=2.5.1
schedule=1.1.0
```
## 프로젝트 실행
```
flask run
```
## 프로젝트 구조
### 최종 모델
#### Ensemble
- 3개의 모델에서 각 10개의 기업순위를 뽑은 뒤
빈도수, 순위로 내림차순 정렬
### 시스템 아키텍쳐
이미지
###
## 검증
## 프로젝트 결과
### 영상 및 사진