Study/프로젝트

[토이프로젝트] 칼부림 사건 현황판 프로젝트

motti 2023. 8. 11. 14:44
반응형

칼부림 사건 현황판

https://knife-criminal-announce.vercel.app/(칼부림 사건 현황판 라이브 데모)

 

칼부림 사건 현황판

 

knife-criminal-announce.vercel.app

2023년 대한민국 연쇄 흉기 난동 사건은 2023년 7월 신림역 흉기 난동 사건 전후로 서현역 흉기 난동 사건을 비롯해 비슷한 강력범죄 및 범죄 예고(협박)가 잇따라 발생하는 현상이다.

 

이에 대해, 네이버 뉴스에 있는 칼부림 사건을 웹 크롤링과 Chatgpt API를 이용해 본문에 담겨있는 지역, 시간, 요약글 등을 제공하고자 본 프로젝트를 진행하였다. 

👥팀 구성원

  1. 인원 2명(프론트엔드 개발자 , 데이터 분석 및 백엔드 개발자)
  2. 기간 : 2023 8월 5일 ~ 7일
  3. 프로젝트 기획 이유 : 최근 핫한 칼부림 뉴스에 대해서 빠르게 사용자들이 조회할 수 있는 웹 서비스가 있으면 좋을 것 같다고 생각함

🛠️사용한 기술 스택

  1. python(크롤링 및 데이터 전처리)
  2. Fastapi(가공한 칼부림 예고 정보를 API로 구현하여 프론트엔드에 제공)
  3. Chatgpt API(크롤링 한 정보를 chatgpt api를 이용하여 지역, 시간, 뉴스 링크, 뉴스 요약, 범죄자 정보만 추출하여 정형화된 형식으로 변경)
  4. GCP - VM 인스턴스 및 방화벽 설정(백엔드 서버를 만들기 위해 GCP의 무료크레딧을 사용하여 서버 구축 및 방화벽 생성하여 프론트엔드와 HTTP 프로토콜로 연결)

📚프로젝트 프로세스

칼부림 뉴스 조회 서비스

  1. 크롤링
    1. 검색어 기반 크롤링 + 원하는 페이지만큼 네이버 뉴스 수집
  2. OPENAI로 Chatgpt 사용
    1. api 키 발급
    2. 크롤링한 뉴스에 대해서 지역, 시간, 예고글, 범죄자 정보를 정형화 된 포맷으로 GPT한테 요약해달라함 → 비정형화된 데이터를 GPT로 요약해도 역시 비정형화된 데이터. 이를 정형화된 데이터로 바꾸는 게 어려움 → 지역, 시간, 예고글, 범죄자 정보라는 키워드 기준으로 문자열을 나누고 각각의 정보를 데이터프레임으로 연결 (없을 경우 None) → 데이터의 품질을 보증하기에 너무 어려움
    3. 중복제거(같은 지역에 대한 글은 글의 내용만 다르지 비슷한 뉴스라 제거) → 할 예정
  3. Fastapi로 get 요청하면 보내기
    1. 스케줄러로 매일 아침 생성된 최신 csv파일 불러와서 get 보내기
  4. python scheduler 모듈
    1. 스케쥴러를 사용하여 매일 아침 9시 자동으로 크롤링 및 gpt api를 돌리고 데이터프레임 csv로 저장 → 프론트에서 12시에 백엔드 서버 get 호출 → 9시에 저장된 최신 csv파일을 12시에 호출하여 보여주는 과정
  5. GCP의 무료크레딧으로 VM 인스턴스를 생성 후 해당 서버에서 백엔드 및 크롤링 실행
    1. 프론트와 연결하기 위해 방화벽 포트 생성후 VM 인스턴스에 추가: FASTAPI는 8000번 포트

 

 

 

반응형