Skip to content

kakaotech-bootcamp-22/ai-dummy-data

Repository files navigation

가짜 리뷰 탐지 서비스의 ai-fastapi

개요

이 프로젝트는 블로그 리뷰의 진위 여부를 판별하기 위한 서비스입니다. FastAPI를 기반으로 개발되었으며, Selenium을 사용한 웹 크롤링과 BERT 기반의 머신러닝 모델을 활용한 텍스트 분류를 포함합니다. 사용자가 블로그 URL을 입력하면 본문을 추출하고, 전처리를 거친 후 모델을 통해 분석하여 리뷰가 진짜인지 가짜인지 소프트 보팅 결과를 반환합니다.


주요 기능

  1. 웹 크롤링: Selenium과 BeautifulSoup을 사용하여 블로그 본문 데이터 추출.
  2. 텍스트 전처리: 텍스트 정제 및 토큰화를 통해 분석 효율성 향상.
  3. 가짜 리뷰 탐지: 훈련된 BERT 모델을 사용해 리뷰의 진위 여부 예측.
  4. 소프트 보팅: 여러 문단의 예측 결과를 종합해 최종 결과 생성.
  5. FastAPI 엔드포인트: RESTful API를 통해 시스템과 상호작용 가능.

프로젝트 구조

(사진 첨부 예정)

폴더 및 파일(함수) 설명

  • /models : 모델 관련 파일 (체크포인트 파일)
  • /routers : 클라이언트 요청 처리하는 라우터 폴더
  • /schemas : API 요청 및 응답 모델을 정의하는 데이터 스키마 폴더
  • /utils : 작업에 필요한 모듈 파일들 담긴 폴더
    • /prediction_logic.py : process_and_predict_from_url() 함수에서 크롤링 → 전처리 → 문단 단위 분할 -> 모델 로드 및 예측 → 소프트 보팅 순서로 핵심 작업을 수행한고, 모든 작업이 수행되어 작업 상태가 COMPLETED로 변경되면, 백엔드로 결과값을 보내주는 process_task() 함수가 실행된다.
    • /task_logic.py : process_task() 함수와 send_post_request() 함수를 통해 백엔드로 결과값을 비동기적으로 전송해준다.
  • /main.py : FastAPI 애플리케이션의 진입점으로 라우터 등록, 주요 엔드포인트를 정의, 애플리케이션을 실행하는 파일

설치 및 실행 방법

  1. 필요한 라이브러리 설치 : pip install -r requirements.txt
  2. 필요한 파일 업로드 하기
    • models 폴더에 체크포인트.tar 파일 업로드 (최종 학습 이후에 .pt 파일로 변경하기)
  3. uvicorn main:app --reload로 로컬 서버 실행

워크플로우

  1. 블로그 URL 제출: POST /api/review-check 엔드포인트를 통해 URL 등록. (백엔드 → AI 서버)
  2. 크롤링 및 분석 대기: URL 처리 및 모델 실행 (비동기 작업).
  3. 결과 확인: POST /api/review-check/result를 통해 분석 결과 반환. (AI 서버 → 백엔드)

메모

학습이 완료된 모델을 .pt 파일로 저장 로컬 서버로 이동한 뒤 FastAPI 서버에서 직접 로드하여 사용하는 것을 권장

<모델 로드 방식 장단점>

  1. 체크포인트(.tar)를 사용하는 경우
  • 모델을 아직 학습 중이고 추가 학습 가능성이 있으면 (V)
  • 학습 중단 시점에서 복원하여 학습을 재개하려는 경우
  • 학습 과정을 추적하거나 여러 상태를 저장해야 하는 경우
  1. .pt 파일을 사용하는 경우
  • 모델 학습이 완료된 후 배포 또는 에측에만 사용할 경우 (추후 이 방식으로 변경 ?)
  • 단순히 가중치를 로드하려는 경우
  • 파일 크기와 로드 속도가 중요할 때

실무에서의 일반적 패턴 : 학습 과정에서는 .tar 파일 사용하다가 학습 완료되면 .pt 파일로 최종 모델 저장

About

백엔드와의 연동 테스트 위한 레파지토리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •