The Relationship between news and stocks 5

2022. 7. 22. 00:31Project/뉴스기사로 인한 주가 등락 예측

728x90
반응형

회의록

- 뉴스 기사 토큰화 Konlpy의 Kkma, Okt로 진행

- Kkma의 경우 시간이 너무 오래 걸림

- 일단 영어와 숫자 특수문자는 제거 했을 때와 하지 않았을 경우 두가지 모두 진행

코드

AWS 서버 MySQL 연결

import pandas as pd
import pymysql

conn = pymysql.connect(
                        user    = 'stocks',
                        passwd  = 'Stocks!',
                        host    = "-",
                        port    = 3306,
                        db      = 'Data',
                        charset = 'utf8'
        )

cur = conn.cursor()

7월 15일 이전 데이터로만 불러오기

cur.execute('''
SELECT DISTINCT stock_id, text, date FROM Stock_News_2
Where date < '2022-07-16 00:00:00'
''')
news = cur.fetchall()
news = pd.DataFrame(news, columns=['stock_id', 'text', 'date'])
news

데이터 전처리 ( 숫자, 영어, 일부 특수문자 남김 )

import re

def clean_text(d):
  text = re.sub(r'\([^)]*\)', '', d)
  text = re.sub(r'\[[^]]*\]', '', text)
  text = re.sub(r'\<[^>]*\>', '', text)
  pattern = r'[^가-힣0-9a-zA-Z\s]'
  text = re.sub(pattern, ' ', text)
  text = re.sub(r'사진', ' ', text)
  text = re.sub(r'.*뉴스', ' ', text)
  text = re.sub("\n", ' ', text)
  text = re.sub("  +", " ", text)
  return text

news['text'] = news.text.apply(clean_text)
news

결측치 제거

news.loc[(news["text"] == '') | (news["text"] == ' '), 'text'] = None
news = news.dropna(axis=0)

Kkma로 토큰화 진행

from konlpy.tag import Kkma
from tqdm import tqdm, tqdm_pandas
tagger = Kkma()

tqdm.pandas()
news['token'] = news.text.progress_apply(tagger.morphs)

참고

- Konlpy 성능 비교

728x90
반응형