LLM을 사용한 뉴스 검색 후 분석 프로그램

소개

‎​원래 의도는 다수의 html 링크를 타고 들어가 내용을 읽어서 LLM이 RAG 방식으로 학습한 다음 해당 내용에 대한 질문에 대한 추론 결과를 얻는 걸 제작하려고 했습니다. 그런데 이 html 을 읽는 방식이 문제인데 html 파일은 엄청난 양의 html, css, javascript 태그와 관련된 메타 정보들, 동영상/이미지 링크들로 구성되어 있는데 이들을 어떻게 학습에 사용할 것인지에 대한 고민 끝에 html 자체를 브라우저에서 이미지로 읽어서 저장하여 그 전체 이미지에서 필요한 이미지와 텍스트들을 분리 추출하는 방법을 고민하다가 이건 단기간에 불가능 할 것 같다는 결론에 이르렀습니다. 그러던 와중 지인이 뉴스를 크롤링 하여 분석할 수 있으면 잘 쓸 수 있을 것 같다는 이야기를 전해 듣고 방식을 단순화 하여 간단한 프로그램을 만들어 보기로 결정하였습니다.

그렇게 하여 개발하게 된 프로그램은 키워드를 입력하여 뉴스를 수집한 후 수집 된 뉴스 기사의 텍스트만을 추출하여 LLM 에 분석 질문을 보내는 파이썬 프로그램입니다. 최종 수집, 분석 완료된 내용은 구글 sheet 에 저장되는 것 까지 입니다.

진행 방법

도구 : 파이썬, 구글 API, 네이버 뉴스 API, 기타 다양한 파이썬 라이브러리
사용한 LLM : GPT4o
프롬프트
- 가변적... 주로 문서에 포함된 키워드에 대한 분석
‎​- 예시 : 위 내용을 읽고 신논현역 주변 맛집을 추천해줘

일단 국내 뉴스가 주 타겟이다보니 네이버 뉴스로 한정 하였습니다. 이를 위해서 beaufulsoup 이나 selenium 과 같은 http 로 실시간으로 호출하여 html 파일을 parsing 하는 것을 제일 먼저 생각할 수 있습니다. 하지만 해당 html 파일의 태그 구성이 변경되면 parsing 알고리즘이 잘 작동하지 않거나 뉴스 서비스 제공 업체에서 자동화된 프로그램이 잦은 횟수로 html 파일을 긁어가게 되면 IP를 블랙리스트에 등록하여 접근을 차단할수도 있게 하므로 뉴스를 긁어오는 방식은 정식으로 정보 제공이 가능한 API 를 사용하여 뉴스를 가져오는 방식으로 채택하게 되었습니다.

1. 네이버 뉴스 API 를 사용하여 키워드를 검색하여 뉴스 기사의 제목과 원문 URL 을 얻을 수 있어 이를 CSV 형태로 리스트로 만들어서 로컬머신에 저장하였습니다.

2. CSV 파일에 뉴스 리스트 작성이 끝나면 저장된 뉴스 원문 URL 리스트에서 html 파일을 전부 다운받도록 구성하였습니다.

3. 다운로드한 html 파일을 하나씩 읽으면서 html, css, javascript 태그를 모두 제거하고 텍스트만 남긴 상태로 텍스트파일을 다시 로컬에 저장하도록 하였습니다.

4. 저장된 txt 파일들을 하나씩 읽으면서 OpenAI API 를 호출하여 GPT 4o 에게 해당 파일을 읽은 txt 와 분석 질문을 보낼 수 있게 main 함수를 구성하였습니다.

5. 메인 함수는 실행 시 "네이버 뉴스 검색 키워드", "분석 내용" 두가지의 arguments 를 입력 받도록 설계 하였습니다.

6. 마지막으로 분석된 기사는 제목, 원문링크, 날짜, 기사별 분석 내용, 전체 기사 분석 종합 으로 구글 시트에 저장되게 구성하였습니다.

결과와 배운 점

‎​ 뉴스 조건이나 횟수 시간등을 설정, 키워드와 분석내용을 입력할 수 있는 UI/UX 가 없어서 다소 좀 아쉬웠습니다. 해당 UI/UX 를 google apps script 로 구글 폼으로 만들고 단순한 백엔드 서버를 구성해여 누구나 사용할 수 있는 서비스로 만들어 볼까 생각이 들었습니다.....만 이번엔 여기까지 하는 것으로 ^^;;;

아래는 동작하는 프로그램을 녹화한 영상입니다.

https://youtu.be/pgV0EhMTB8E?si=qVbTa6S-ADzB_WZl

도움 받은 글 (옵션)

‎​혹시 해당 프로그램에 대해서 더 궁금하신 분들은 댓글 달아주세요.

3
6개의 답글

👉 이 게시글도 읽어보세요