Data Science Project

[Newspelling] 뉴스 키워드 추출 프로젝트 - 웹페이지 개발

ParkS2 2025. 3. 9. 17:40

뉴스의 키워드를 랭킹순으로 가져와서 그래프로 시각화를 하고, 원하는 키워드는 기사로 이동할수있는 웹페이지를 개발하는것이 목적이다.

사용자의 백엔드는 Render 클라우드를 통해 생성한 아래의 파일들을 실행 및 python으로 작성이된 app.py(기능)을 실행하게 된다.

 

1. requirements.txt 생성

 필요한 버전 모음

Flask==2.0.3
flask-cors==3.0.10
werkzeug==2.0.3
pandas
feedparser
requests
numpy
psycopg2-binary
krwordrank==1.0.3
konlpy==0.6.0
JPype1==1.5.2
yake==0.4.8

 

2. app.py 생성

데이터 수집 부터 데이터 전처리 및 모델적용까지 일련의 과정을 담은 파이썬 코드

 

3. 불용어.txt 

텍스트 전처리를 할때 제거해야 할 불용어 모음

 

4.Docker 파일 생성

  • Python 3.9 환경을 기반으로 함.
  • OpenJDK 17을 설치해 Java 실행 가능하도록 설정.
  • requirements.txt를 통해 필요한 Python 패키지 설치.
  • Flask 애플리케이션(app.py)을 실행하여 컨테이너에서 서버가 실행되도록 구성.

 

 

사용자의 프론트엔드는 웹을 구성하는 javascript를 vercel을 통해서 실행을 하며, 각 카테고리별 js 코드에 따라 각 페이지 구성 코드를 실행하며, 이는 기능 실행을 위한 render url을 통한 api 통신을 포함한다.

 

1. 루트 디렉토리

  • package.json / package-lock.json: 프로젝트의 의존성 관리 파일 (React 및 관련 라이브러리 포함).
  • vercel.json: Vercel 배포 설정 파일.

2. src/ (소스 코드)

  • App.js: 애플리케이션의 메인 엔트리 파일.
  • index.js: React 앱을 DOM에 렌더링하는 파일.
  • 다양한 뉴스 카테고리 페이지 (CulturePage.js, EconomyPage.js, PoliticsPage.js, WorldPage.js 등): 뉴스 데이터를 카테고리별로 표시하는 역할. ->  render url을 통한 api 통신을 포함

3. public/ (정적 파일)

  • index.html: React 앱이 실행될 기본 HTML 파일.

 

 

결과 화면

 

각 막대를 클릭하면 해당 기사로 이동한다.

 

로딩 속도를 최적화 하기 위해, rss 는 각 카테고리 마다 url을 한개씩만 사용하여, 데이터 수집을 최소화 한다.

# RSS 피드 URL 목록
RSS_FEEDS = {
    "전체": ["https://news.sbs.co.kr/news/headlineRssFeed.do?plink=RSSREADER"],
    "정치": ["https://news-ex.jtbc.co.kr/v1/get/rss/section/10"],
    "경제": ["https://news-ex.jtbc.co.kr/v1/get/rss/section/20"],
    "사회": ["https://news-ex.jtbc.co.kr/v1/get/rss/section/30"],
    "세계": ["https://news-ex.jtbc.co.kr/v1/get/rss/section/40"],
    "문화": ["https://news-ex.jtbc.co.kr/v1/get/rss/section/50"],
    "연예": ["https://news-ex.jtbc.co.kr/v1/get/rss/section/60"],
    "스포츠": ["https://news-ex.jtbc.co.kr/v1/get/rss/section/70"]
}

 

키워드가 인물, 장소, 기관에 국한된 ‘오늘의 키워드‘와 달리, 본 서비스는 키워드가 문맥이 고려된 단어 조합으로 구성되며, 막대 그래프 를 통해 KR-WordRank 기반 점수를 시각화 하며 각 기사의 키워드를 추출한다.

-> 막대그래프에서 문맥이 고려된 단어 조합으로 구성된 키워드에 대한 중요도 랭킹을 확인함으로써, 현재 이슈를 더욱 쉽고 빠르게 파악할 수 있으며, 각 의사결정자들의 효율적인 의사결정 지원에 기여함