FinWise는 Linear Hyper-GNN을 이용하여 경제 기사 데이터를 수집, 분류, 그리고 시각화하여 사용자에게 직관적인 방식으로 경제 관련 정보를 chrome exetension을 통해 제공하는 시스템입니다. 이 프로젝트는 최신 기술 스택인 FastAPI, React, MongoDB 및 D3.js를 활용하여 설계되었습니다.

FinWise 크롬 확장 프로그램은 고려대학교 지능정보 소프트웨어 아카데미 5기 1조에 의해 개발되었습니다.
팀원 : 권수현 |
팀원 : 김금환 |
팀원 : 박서현 |
팀원 : 이준혁 |
팀원 : 조창희 |
팀원 : 차시현 |
- 기사 데이터 수집 및 전처리
- 뉴스 기사를 웹에서 크롤링하여 데이터 수집.
- KoalaNLP와 KSS를 활용한 자연어 처리.
- 관계 데이터 생성
- 동시 카테고리 분류를 위해 HGNN(Heterogeneous Graph Neural Network) 적용.
- PMI와 HGNN을 사용해 기사 간 관계를 추출.
- TF-IDF, KeyBERT, DeBERTa로 주요 노드를 선정해 그래프 데이터를 생성.
- 관계 및 그래프 데이터를 저장.
- 누적된 기사 그래프 데이터 요청 및 제공.
- 크롬 확장 프로그램
- URL을 전송하여 백엔드와 통신.
- D3.js 기반 시각화를 제공.
- React 프론트엔드
- 개인화된 그래프 데이터를 사용자에게 시각적으로 제공.
- 누적된 기사 그래프를 기반으로 사용자 이동 경로 생성.
-
실시간 뉴스 크롤링 및 분석
- 경제 기사 웹 페이지에 접속하여 익스텐션 실행 시 NLP & HGNN 기술을 활용해 분석.
- 문장 분리 및 키워드 추출.
-
그래프 데이터 생성
- 기사 간 관계를 그래프로 표현.
- 노드 중요도를 기반으로 주요 관계를 시각화.
-
D3.js를 활용한 데이터 시각화
- 분석된 데이터를 시각화하여 직관적인 정보 제공.
-
크롬 확장 프로그램
- 사용자가 읽고 있는 기사를 분석하고 연관된 데이터를 실시간으로 시각화.
- 크롬 확장 프로그램 관리 페이지 열기.
- "개발자 모드" 활성화.
- "압축 해제된 확장 프로그램 로드" 선택.
- 제공된 폴더 선택.
FastAPI는 FinWise 백엔드의 주요 프레임워크로, 빠르고 직관적인 API 설계를 제공합니다.
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
docker build -t finwise-backend .
docker run -d --name finwise-backend -p 8000:8000 -v /etc/letsencrypt:/etc/letsencrypt finwise-backend
React와 Vite 기반으로 설계된 프론트엔드는 빠른 개발 환경과 HMR(Hot Module Replacement)을 제공합니다.
@vitejs/plugin-react
: Babel을 사용한 Fast Refresh 제공.@vitejs/plugin-react-swc
: SWC를 사용한 Fast Refresh 제공.
├── Backend
│ ├── main.py # FastAPI 엔드포인트 정의
│ ├── models # 데이터베이스 모델 정의
│ ├── utils # 전처리 및 알고리즘 유틸리티 함수
│ └── ...
├── Frontend
│ ├── public
│ ├── src
│ │ ├── components # React 컴포넌트
│ │ ├── pages # 페이지 정의
│ │ └── ...
│ └── ...
├── chrome_extension
│ ├── manifest.json # 크롬 확장 프로그램 설정
│ ├── popup.html # 팝업 UI
│ ├── background.js # 백그라운드 스크립트
│ └── ...
├── README.md # 프로젝트 설명 파일
└── ...
- 백엔드: FastAPI, Python(3.8.10), KoalaNLP, HGNN, TF-IDF, KeyBERT, DeBERTa, JAVA(21)
- 데이터베이스: MongoDB
- 프론트엔드: React, D3.js
- 크롬 확장 프로그램: HTML, JavaScript, CSS
cd Backend
pip install -r requirements.txt
uvicorn main:app --reload
cd Frontend
npm install
npm start
chrome_extension
폴더를 크롬 확장 프로그램 로드 경로로 설정.- 확장 프로그램 활성화.
inisw5th_G1_FinWise_Trial&Error
폴더는 프로젝트에서 제외된 테스트 코드 및 참고 자료입니다.
- 레포지토리를 포크합니다.
- 새로운 브랜치를 생성합니다 (
git checkout -b feature/새로운기능
). - 변경 사항을 커밋합니다 (
git commit -m 'Add 새로운기능'
). - 브랜치에 푸시합니다 (
git push origin feature/새로운기능
). - Pull Request를 생성합니다.
이 프로젝트는 MIT 라이선스를 따릅니다. 자세한 내용은 LICENSE
파일을 참조하세요.