Skip to content

ardkyer/content_metadata_generator

Repository files navigation

PoliMeta - AI 기반 정치 기사 메타데이터 생성 시스템

PoliMeta Logo

🤖 AI 기반 정치 기사 자동 분석 및 메타데이터 생성 플랫폼

Python FastAPI React License

🎯 프로젝트 개요

PoliMeta는 정치 기사를 AI로 자동 분석하여 다양한 메타데이터를 생성하는 시스템입니다. 기사의 요약, 카테고리 분류, 키워드 추출, 개체명 인식, 태그 생성을 자동화하여 효율적인 뉴스 관리와 검색을 지원합니다.

주요 목표

  • 자동화: 수동 태깅과 분류 작업을 AI로 대체
  • 정확성: 한국어 정치 도메인에 최적화된 분석
  • 확장성: 대량의 기사 처리를 위한 확장 가능한 아키텍처
  • 실시간: 빠른 분석과 즉시 결과 제공

✨ 주요 기능

🤖 AI 기반 자동 분석

  • 📝 지능형 요약: BART/T5 모델로 핵심 내용 요약
  • 📂 카테고리 분류: 정책, 인사, 선거, 논란, 기타로 자동 분류
  • 🔑 키워드 추출: KoNLPy 형태소 분석으로 핵심 키워드 추출
  • 👤 개체명 인식: BERT NER로 인명, 기관명, 지역명 식별
  • 🏷️ 태그 생성: 규칙 기반 + AI 조합으로 검색 최적화 태그 생성
default.mov

🔍 검색 & 필터링

  • 고급 검색: 카테고리, 키워드, 태그별 필터링
  • 메타데이터 기반 검색: AI 생성 정보로 정확한 검색
  • 실시간 결과: 빠른 검색 결과 제공
default.mov

📊 대시보드 & 분석

  • 실시간 통계: 처리된 기사 수, AI 성능 지표
  • 트렌드 분석: 인기 키워드 및 태그 순위
  • 카테고리 분포: 시각적 데이터 표현
  • AI 상태 모니터링: 각 모델의 실시간 상태 확인
default.mov

🏗️ 시스템 아키텍처

graph TB
    subgraph "Frontend (React)"
        A[사용자 인터페이스]
        B[대시보드]
        C[기사 관리]
    end
    
    subgraph "Backend (FastAPI)"
        D[API Gateway]
        E[메타데이터 서비스]
        F[ML 서비스]
    end
    
    subgraph "AI/ML Pipeline"
        G[BART 요약 모델]
        H[BERT NER 모델]
        I[KoNLPy 형태소 분석]
        J[Sentence Transformer]
    end
    
    subgraph "Database"
        K[(MySQL)]
    end
    
    A --> D
    B --> D
    C --> D
    D --> E
    E --> F
    F --> G
    F --> H
    F --> I
    F --> J
    E --> K
Loading

🛠️ 기술 스택

Backend

  • Framework: FastAPI 0.104.1
  • Database: MySQL + SQLAlchemy ORM
  • AI/ML:
    • Transformers (BART, BERT)
    • KoNLPy (한국어 형태소 분석)
    • Sentence Transformers
    • scikit-learn

Frontend

  • Framework: React 19.1.0

🚀 빠른 시작

📋 사전 요구사항

  • Python 3.12+
  • Node.js 18+
  • MySQL 8.0+
  • Git

🛠️ 설치 가이드

1️⃣ 백엔드 설정

# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 의존성 설치
pip install -r requirements.txt

# 환경변수 설정
cp .env.example .env
# .env 파일을 편집하여 데이터베이스 정보 입력

2️⃣ 데이터베이스 설정

-- MySQL에서 실행
CREATE DATABASE content_metadata CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'metadata_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON content_metadata.* TO 'metadata_user'@'localhost';
FLUSH PRIVILEGES;

3️⃣ 프론트엔드 설정

cd frontend
npm install
npm start

🔧 설정

환경변수 설정 (.env)

# 데이터베이스 설정
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=metadata_user
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=content_metadata

# AI 모델 설정
HUGGINGFACE_CACHE_DIR=./models_cache
TRANSFORMERS_OFFLINE=0
CUDA_VISIBLE_DEVICES=0  # GPU 사용시

# API 설정
API_V1_STR=/api/v1
PROJECT_NAME=PoliMeta
ENVIRONMENT=development

AI 모델 다운로드

# 첫 실행시 자동으로 다운로드되지만, 수동으로도 가능
python -c "
from transformers import AutoModel, AutoTokenizer
AutoModel.from_pretrained('klue/bert-base')
AutoTokenizer.from_pretrained('facebook/bart-large-cnn')
"

⚡ 설치 후 실행법

# 1. 프로젝트 클론
git clone https://github.com/yourusername/polimeta.git
cd polimeta

# 2. 빠른 테스트 실행
chmod +x quick_test.sh
./quick_test.sh

# 3. 백엔드 실행
python -m uvicorn app.main:app --reload

# 4. 프론트엔드 실행 (새 터미널)
cd frontend
npm install
npm start

🎉 완료! 브라우저에서 http://localhost:3000 접속

📚 API 문서

🌟 주요 엔드포인트

기사 생성 및 분석

POST /api/v1/articles/
Content-Type: application/json

{
  "title": "윤석열 대통령, 2024년 경제정책 발표",
  "content": "윤석열 대통령이 오늘 청와대에서...",
  "source": "연합뉴스"
}

AI 분석만 수행

POST /api/v1/articles/analyze
Content-Type: application/json

{
  "title": "기사 제목",
  "content": "기사 내용"
}

통계 조회

GET /api/v1/stats/

📖 상세 API 문서

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

🤖 AI 모델

📝 요약 생성

  • 모델: facebook/bart-large-cnn
  • 기능: 긴 기사를 핵심 문장으로 요약
  • 언어: 다국어 지원 (한국어 최적화)

📂 카테고리 분류

  • 방식: 규칙 기반 + 임베딩 유사도
  • 카테고리: 정책, 인사, 선거, 논란, 기타
  • 정확도: 정치 도메인 특화 높은 정확도

🔑 키워드 추출

  • 모델: KoNLPy Okt 형태소 분석기
  • 방식: 명사 추출 + TF-IDF 가중치
  • 특징: 한국어 정치 용어 특화

👤 개체명 인식 (NER)

  • 모델: klue/bert-base-ner
  • 인식 대상: PERSON, ORGANIZATION, LOCATION
  • 성능: 한국어 정치 도메인 높은 정밀도

🔄 폴백 시스템

  • AI 모델 로드 실패시 규칙 기반 폴백 제공
  • 서비스 중단 없는 안정적 운영
  • 점진적 성능 향상

개발일지

콘텐츠 메타데이터 자동 생성 도구 만들기 backend작업
콘텐츠 메타데이터 자동 생성 도구 만들기 모델작업
콘텐츠 메타데이터 자동 생성 도구 프론트엔드 & 배포

👤 개발자 정보

이름 GitHub 역할
강현구 @ardkyer Backend / Frontend / AI

About

AI 기반 정치 기사 메타데이터 생성 시스템

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published