서브 컨텐츠
네이버 뉴스 감성분석 앱 소개
- 작성자
AI 기반 뉴스 자동 수집·분석·시각화 시스템
경희대학교 인문·사회과학 데이터연구소
Humanity & Social Science Data Institute (HSSDI), Kyung Hee University
|
메인 앱 |
앱 개요
이 앱은 네이버 헤드라인 뉴스를 자동으로 수집하고, 감성을 분석하여, 그 결과를 웹 대시보드에서 시각적으로 확인할 수 있게 해주는 시스템입니다.
작동 원리 (3단계)
이 시스템은 크게 3단계로 작동합니다.
|
1단계 데이터 수집 (크롤링) |
매일 5회 자동 수집 (오전 9시·낮 12시·오후 3시·6시·밤 10시) 클라우드 서버 2대에서 이중 수집 (한 서버 장애 시 다른 서버가 백업) 수집 항목: 뉴스 제목·요약·언론사·섹션 (일 1,500~2,000건) JSON·Excel 파일 저장 및 PostgreSQL DB 저장 (중복 자동 제거) |
|
2단계 데이터 분석 |
매일 새벽 3시(KST) 자동 실행 — 전날 수집 뉴스 분석 AI(Google Gemini)가 유사 기사를 '이슈' 단위로 그룹화 각 이슈에 대해 산출: · 이슈 제목 생성 · 관련 키워드 추출 (인물·기관) · 감성 수준 판단 (매우부정적 ~ 매우긍정적) · 감성 지수 계산 (−5 ~ +5) 결과 저장: JSON 파일·Excel 파일 (날짜별 ANALYSIS 폴더) |
|
3단계 결과 시각화 및 대시보드 |
분석 결과를 웹 브라우저에서 언제든지 확인 별도 프로그램 설치 없이 브라우저에서 바로 접속 표·그래프·차트로 시각화하여 제공 상세 시각화 및 Excel 다운로드 기능 제공 |
에이전트 기반 분석 파이프라인
이 시스템의 핵심은 단순한 키워드 집계나 규칙 기반 분류를 넘어, LangChain과 LangGraph 프레임워크를 기반으로 설계된 멀티 에이전트 워크플로에 있습니다. 전통적인 AI 시스템이 하나의 모델에 단일 입력–출력(one-shot) 방식으로 의존하는 것과 달리, 이 시스템은 각기 전문화된 5개의 에이전트가 그래프 구조로 연결되어 분석 작업을 단계별로 분담합니다. 이 접근 방식은 복잡한 작업을 모듈화·병렬화하여 분석의 정확성과 확장성을 동시에 확보합니다.
LangGraph StateGraph — 상태 기반 파이프라인
LangGraph의 StateGraph는 각 에이전트가 공유 상태 객체(NewsAnalysisState)를 통해 중간 결과를 주고받도록 설계됩니다. 이 구조는 단방향 DAG를 넘어 순환(Cyclic) 실행을 지원하여, LLM 결과가 불충분할 경우 특정 노드를 반복 호출하는 자기 수정(self-correcting) 흐름이 가능합니다. 각 단계의 상태는 Checkpointer를 통해 자동 저장되며, 실패 시 해당 지점부터 재실행할 수 있어 시스템 신뢰성을 높입니다.
5단계 분석 에이전트 구성
|
1단계 collect_news 뉴스 수집 |
JSON 파일 로드 및 시간대 필터링 클러스터 단위 통합 — 유사 기사 그룹화 출력: raw_data (수집 원본 클러스터 목록) |
|
2단계 enrich_content 콘텐츠 최적화 |
클러스터당 상위 10개 기사 선별 본문 1,000자 제한으로 LLM 토큰 비용 절감 출력: enriched_clusters (정제된 클러스터) |
|
3단계 analyze_sentiment 감성 분석 |
LLM 호출 — 이슈 제목·요약 자동 생성 6단계 감성 분류: 매우부정(−2) · 부정(−1) · 중립(0) · 양면적(0) · 긍정(+1) · 매우긍정(+2) JSON 구조화 출력 (level / score / reasoning) 출력: issue_analyses |
|
4단계 extract_entities 개체명 추출 |
LLM 기반 주요 인물·기관명 자동 추출 정규화 처리 및 빈도 기반 중복 제거 출력: entity_extractions |
|
5단계 generate_report 보고서 생성 |
전 단계 결과 통합 및 통계 계산 JSON / Excel 형식 파일 생성 출력: json_result (최종 분석 보고서) |
LLM 기반 감성 분류 및 개체명 추출
감성 분석 에이전트(analyze_sentiment)는 LLM을 호출하여 각 뉴스 클러스터에 대해 이슈 제목과 요약, 그리고 6단계 감성 점수를 JSON 구조화 형식으로 산출합니다. 단순한 긍정/부정 이분법이 아니라 '양면적(0)' 범주를 별도로 설정하여 복잡한 사회적 이슈를 보다 정밀하게 포착합니다. 개체명 추출 에이전트(extract_entities)는 동일 클러스터 내 기사에서 주요 인물·기관을 자동 식별하고 정규화하여, 단순 빈도 집계를 넘어 이슈 중심의 관계 파악을 지원합니다.
주요 기술 스택
|
패키지 / 프레임워크 |
역할 |
|
LangChain / LangGraph |
에이전트 오케스트레이션 · StateGraph 기반 워크플로 관리 |
|
LLM (Gemini API) |
감성 분석 · 이슈 제목 생성 · 개체명 추출 (JSON 구조화 출력) |
|
PostgreSQL |
분석 결과 구조화 저장 · URL 기반 중복 자동 제거 |
|
Python Reflex |
React 기반 반응형 웹 대시보드 |
|
Matplotlib / Seaborn |
6종 인터랙티브 시각화 그래프 생성 |
|
Cron |
수집 자동화 (하루 5회) · 분석 자동화 (하루 1회) |
|
Python 3.10+ |
데이터 수집부터 시각화까지 전 과정 통합 |
앱 사용법
날짜 선택
분석 결과를 보고 싶은 날짜를 아래 3가지 방법으로 선택할 수 있습니다.
· 단일 날짜: 특정 하루의 결과만 보고 싶을 때 (예: 2026-03-22)
· 날짜 범위: 시작일~종료일 기간 조회 (예: 2026-03-17 ~ 2026-03-22, 6일간)
· 다중 선택: 원하는 날짜들만 선택 (예: 3/17, 3/19, 3/22)
추가 기능 — '어제' 버튼 (어제 날짜 자동 선택), '지난 주' 버튼 (최근 7일 자동 선택), 월별 필터 (특정 월 날짜만 표시)
섹션 선택
뉴스 카테고리를 선택합니다. 여러 개를 동시에 선택할 수 있습니다.
· 선택 가능: 정치 / 경제 / 사회 / 생활문화 / IT과학 / 세계
· '전체 선택' 버튼으로 모든 섹션 한 번에 선택, '전체 해제' 버튼으로 초기화
분석 시작
날짜와 섹션을 선택한 후 '분석 시작' 버튼을 누르면 선택한 조건에 맞는 분석 결과를 불러옵니다.
결과 표 보기
'섹션별 TOP5 이슈' 테이블에서 아래 항목을 확인할 수 있습니다.
|
항목 |
내용 |
|
섹션 |
뉴스 카테고리 (정치, 경제, 사회, 생활문화, IT과학, 세계) |
|
날짜 |
해당 이슈의 수집 날짜 |
|
기사수 |
이슈에 포함된 관련 기사 개수 |
|
이슈제목 |
AI가 생성한 이슈의 요약 제목 |
|
키워드(인물) |
관련된 주요 인물 이름 |
|
키워드(기관) |
관련된 주요 기관·단체 이름 |
|
감성수준 |
매우긍정적 / 긍정적 / 양면적 / 중립 / 부정적 / 매우부정적 |
|
감성지수 |
−5 ~ +5 (양수: 긍정 / 음수: 부정 / 0: 중립) |
그래프 보기
'상세 시각화 보기' 버튼을 누르면 다음 6가지 그래프를 인터랙티브하게 확인할 수 있습니다.
· ① 타임라인 (선그래프): 기간별 섹션별 감성지수 변화 추이
· ② 막대 차트: 섹션별 평균 감성지수 비교
· ③ 산점도: 클러스터별 감성지수 분포 패턴
· ④ 파이 차트 (섹션별): 각 섹션의 감성 분포 비율
· ⑤ 히트맵: 섹션별 × 감성수준별 2차원 분포
· ⑥ 스택 바 차트: 날짜별 감성 분포 누적 시각화
▼ 시각화 예시 (2026년 3월 23일 기준)
|
① 타임라인 (선그래프) |
② 막대 차트 |
③ 산점도 |
|
④ 파이 차트 (섹션별) |
⑤ 히트맵 |
⑥ 스택 바 차트 |
데이터 다운로드
· Excel 다운로드: 'Excel 다운로드' 버튼 — 선택한 조건의 분석 결과(표·통계)를 Excel 파일로 다운로드
· 그래프 다운로드: '전체 그래프 다운로드' 버튼 — 모든 그래프 이미지를 한 번에 다운로드
데이터 현황
|
수집 기간 |
2025년 10월 ~ 현재 (약 6개월간 운영 중) |
|
일일 수집량 |
약 1,500 ~ 2,000개 기사 (하루 5회) |
|
분석 섹션 |
6개 — 정치 / 경제 / 사회 / 생활문화 / IT과학 / 세계 |
|
일일 이슈 수 |
평균 150 ~ 200개 |
|
감성 분류 |
6단계 — 매우긍정적 / 긍정적 / 양면적 / 중립 / 부정적 / 매우부정적 |
활용 방안
이 앱을 통해 다음과 같은 인사이트를 얻을 수 있습니다.
· 일일 뉴스 트렌드 파악: 오늘 어떤 이슈가 주요 관심사인가?
· 감성 흐름 분석: 특정 이슈에 대한 여론의 긍정/부정 흐름 및 시간에 따른 감성 변화
· 섹션별 비교: 어느 분야의 뉴스가 가장 긍정적·부정적인가?
· 주요 인물/기관 추적: 특정 인물·기관이 언급된 이슈와 그에 대한 여론 감성
· 연구 데이터 활용: 뉴스 감성 변화 추이 연구, 사회 이슈 트렌드 분석, 여론 동향 파악
문의
· 개발 및 관리: 경희대학교 인문·사회과학 데이터연구소 (HSSDI)
· 기술 스택: Python, Reflex, Nginx, Granian, PostgreSQL, Google Gemini
- 이전글 이전글이 없습니다.
- 다음글 다음글이 없습니다.