본문 바로가기
ML & DL (Machine Learning&Deep Learning)/DE & DS

[DE & DS] 경제 뉴스를 분석해보자! (1)

by 초코칩프라푸치노 2021. 8. 2.

서론

 

나는 2020.02.20부터 주식을 시작하기 시작했다. 시작한 이유는 아주 단순하다. 저 날이 훈련소 입소일이었고, 매우 간단한 귀납적(?)인 사고로부터 "지금까지 올랐으니 추후에도 오를 거야!"라는 생각으로 전재산을 미국 주식에 투자 후 유유히 떠났다. COVID 19 패닉으로 가격이 폭락했고, 고점에 물린 김에 가치 투자 및 장기 투자자가 되었다. 다양한 주식 용어를 공부하면서 매일 뉴스들을 살펴보면서 미연준의 금리, 투자한 회사들의 현금 흐름 등에 관한 기사를 많이 읽었다. 하지만, 내 직업이 금융 애널리스트나 펀드 매니저가 아니기에 시간 투자가 한정적이었다. 그래서 금융 기사 속에서 나오는  키워드들을 정리한 후, 시각적으로 보여주는 프로그램을 만들면 좋겠다는 생각이 들었다. 재테크에 쏟는 시간도 아낄 수 있으며, Kaggle처럼 정제된 데이터가 아닌 Raw Data를 사용하는 측면에서 데이터 및 관련 기술들을 다루는 능력이 향상될 거라 생각하여 시작하게 되었다. 

 

 

개발 환경 - Google Colab

 

구글에서 제공하는 Colab(코랩)이라는 개발 환경을 사용한다. 인터넷과 구글 계정만 있다면, 따로 개발 환경을 위한 세팅을 하지 않고도 언제든 파이썬을 사용할 수 있게 해 주어 매우 편리하다! (KoNLPy 설치할 때 진가를 발휘한다.) 따로 개발 환경을 위한 세팅을 하지 않고도 언제든 파이썬을 사용할 수 있게 해 준다.

 

 

Google Colaboratory

 

colab.research.google.com

 

위 URL 또는 구글에서 Colab을 검색해서 접속이 가능하다.

 

Colab 시작

 

로그인 후 좌측 상단에서 파일→새노트를 클릭하여 파이썬 개발 환경을 시작할 수 있다!

 

 

 

이때, 위 그림과 같이 Colab에서 코드를 작성하는 부분의 단위를 '셀'이라고 한다. 셀에 코드를 입력하여 Shift + Enter키를 눌러서 코드를 실행할 수 있다. 

 

 

웹 스크래핑 준비 - Selenium, Matplotlib, Newspaper3k

 

Local에서 Selenium을 사용하기 위해서는 Chromedriver.exe 실행 파일을 통해 스크래핑을 실행하게 된다. 하지만 Colab에서는 따로 실행파일을 다운로드할 필요 없이 코드를 통해 Selenium을 실행할 수 있다.

 

 

Colab에서 몇 가지 차트를 그려볼 텐데, Colab에서 차트를 그릴 때 차트에서 한글이 깨지지 않도록 하기 위해서는 우선 아래의 코드를 실행해주어야 한다. 아래의 코드는 Colab에서 한글을 사용하기 위해 세팅하는 용도일 뿐, 코드를 이해하지 않아도 상관없다.

 

 

한국어 텍스트를 처리할 때는 주로 형태소 분석기를 사용해서 자연어 처리를 한다. 이를 사용해서 문장에서 형태소 단위 또는 명사 단위를 뽑아낼 수 있는데, 이를 문장을 문장보다 작은 단위인 토큰 단위로 뽑아냈다고 하여 '토큰화'라고 부른다. 명사 토큰화 작업을 해주기 위해, 형태소 분석 패키지인 KoNLPy를 설치한다. Local에서 KoNLPy를 설치하기 위해서는 JDK 및 JPype1 설치가 필요했지만 Google Colab은 그 과정이 없기에 아주 편리하다. (JDK 설치를 해본 사람은 알겠지만 환경 변수 설정 등이 매우 번거롭다.) 추가로 그밖에 필요한 패키지들을 설치한다.

 

 

 

금융 기사 스크래핑

금융 기사는 파이낸셜 뉴스의 국제 경제 카테고리에서 가져온다. 

파이낸셜 뉴스 html 구조

html 구조를 보면 <li>태그 내에 <a href>에 url이 있는 것을 알 수 있으므로 각 <li> 태그를 순회하면서 url을 뽑아낸다. 기사는 이틀에 15~20개씩 업로드되므로 15개의 url을 가져온다. get_urllist() 함수는 뉴스 url 리스트를 반환하는 함수이다.

 

 

위에서 get_urllist()를 통해 urllist가 생성된다. 다음은 newspaper3k를 통해서 만들어진 함수로 url 리스트를 알려주면 이를 통해 뉴스의 제목과 내용을 열로 가지는 데이터프레임을 생성하는 함수이다.

 

 

결과)

Economics News DataFrame

 

위와 같은 코드로 우리는 다음과 같은 데이터프레임을 얻을 수 있다. 다음 글에서는 얻은 데이터프레임을 바탕으로 명사 토큰화와 불용언 처리를 통해 뉴스에 어떤 단어가 분포되어 있는지 알아보자!

 

반응형

댓글