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