PoliMeta는 정치 기사를 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
- Framework: FastAPI 0.104.1
- Database: MySQL + SQLAlchemy ORM
- AI/ML:
- Transformers (BART, BERT)
- KoNLPy (한국어 형태소 분석)
- Sentence Transformers
- scikit-learn
- Framework: React 19.1.0
- Python 3.12+
- Node.js 18+
- MySQL 8.0+
- Git
# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 의존성 설치
pip install -r requirements.txt
# 환경변수 설정
cp .env.example .env
# .env 파일을 편집하여 데이터베이스 정보 입력-- 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;cd frontend
npm install
npm start# 데이터베이스 설정
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# 첫 실행시 자동으로 다운로드되지만, 수동으로도 가능
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 접속
POST /api/v1/articles/
Content-Type: application/json
{
"title": "윤석열 대통령, 2024년 경제정책 발표",
"content": "윤석열 대통령이 오늘 청와대에서...",
"source": "연합뉴스"
}POST /api/v1/articles/analyze
Content-Type: application/json
{
"title": "기사 제목",
"content": "기사 내용"
}GET /api/v1/stats/- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
- 모델:
facebook/bart-large-cnn - 기능: 긴 기사를 핵심 문장으로 요약
- 언어: 다국어 지원 (한국어 최적화)
- 방식: 규칙 기반 + 임베딩 유사도
- 카테고리: 정책, 인사, 선거, 논란, 기타
- 정확도: 정치 도메인 특화 높은 정확도
- 모델: KoNLPy Okt 형태소 분석기
- 방식: 명사 추출 + TF-IDF 가중치
- 특징: 한국어 정치 용어 특화
- 모델:
klue/bert-base-ner - 인식 대상: PERSON, ORGANIZATION, LOCATION
- 성능: 한국어 정치 도메인 높은 정밀도
- AI 모델 로드 실패시 규칙 기반 폴백 제공
- 서비스 중단 없는 안정적 운영
- 점진적 성능 향상
콘텐츠 메타데이터 자동 생성 도구 만들기 backend작업
콘텐츠 메타데이터 자동 생성 도구 만들기 모델작업
콘텐츠 메타데이터 자동 생성 도구 프론트엔드 & 배포
| 이름 | GitHub | 역할 |
|---|---|---|
| 강현구 | @ardkyer | Backend / Frontend / AI |