전체 글 38

뉴스분석 및 요약서비스(서버구축 및 로직 정리)

현재 개발서버에서는 runserver하면 크롤링이 시작되고, 실시간 뉴스랭킹 구축된다.또한 주요기사 모아보기가 생성되고, 주요 기사 요약은 클릭 시 작동하며 자동으로 DB에 저장된다.즉, 서버시작 시 자동으로 초기 데이터 생성 1시간마다 자동 업데이트 되며세 섹션 모두 항상 최신 데이터 유지한다. 사용자는 페이지 로드만으로 모든 정보를 확인할 수 있다.모델 생성 ▶ 마이그레이션 생성 및 적용 ▶ views.py에 저장 로직 추가 ▶ 저장된 요약을 조회하는 뷰 추가 ▶ URL 패턴 추가 ▶ 저장된 요약을 보여주는 템플릿 생성 🥕 분석 모델선정기사당 앞부분 2000자를 분석하는데 여기에 700토큰 정도가 소요된다. 20개 기사 기준으로 보면 14K 토큰 정도가 소요된다.1. GPT-3.5-turbo-16k..

카테고리 없음 2025.01.25

뉴스분석 및 요약서비스(요약하기 기능)

🥕요약하기에서 끝나지 않고, 기사들의 경향을 알고 싶어요.주말을 포함해 4일 동안은 요약하기 기능을 구현했다. 키워드 top3에 오른 기사 본문을 url을 토대로 gpt가 요약하고, 요약한 자료를 gpt가 다시 분류하고, 분석하고, 요약하도록 했다. 처음 agent를 사용하려 했는데, gpt를 기반으로 한 데이터를 view로 가져오고, urls, models 등 관계된 함수가 많다보니 오류가 많았다. python manage.py runserver --verbosity 3 도 자주 쓰였다.0: 최소 출력, 에러 메시지만 출력함1: 기본 출력 (디폴트 값), 표준 로그 메시지를 출력함2: 상세 출력, 추가적인 정보를 포함한 로그 메시지를 출력함3: 매우 상세 출력, 디버깅에 필요한 모든 정보를 출력함de..

카테고리 없음 2025.01.21

뉴스분석 및 요약서비스(분석하기 기능)

10개 언론사의 top10 뉴스인 100개 기사를 크롤링 해오고, 언론사별 1위 기사가 실시간 주요 뉴스가 된다. 키워드 랭킹은 크롤링 해올 때 빈도수로 확인해 랭킹이 되고, 주요 기사 모아보기에서 키워드가 제목에 들어간 기사를 모아 볼 수 있다. 필터링은 언론사 3개, 키워드 5개 까지 선택되는데, 분석하기 기능을 통해 언론사별 기사 개수, 기사 제목으로 관점을 확인하고자 했다. 이미지와 같이 기사를 크롤링 해오므로 확인된 기사 순위, 제목, 언론사를 잘 보여주길 원했다.  🥕 필터링한 것들을 gpt에서 인식하지 못해요. 처음 마주한 어려움은 필터링한 언론사, 키워드를 GPT API가 인식하지 못하고, 제목 만으로 새로운 분석을 시도하는 지점이었다. 이유를 살펴보니 백엔드에서 키워드 추출 후 프론트엔..

카테고리 없음 2025.01.16

뉴스분석 및 요약서비스(프롬프트 작성)

오늘은 분석하기 버튼을 누르면 오른 쪽에 프롬프팅한 분석 자료가 게시되도록 만들었다. 하지만 기존에 있던 기사제목들은 하단으로 밀려나 개선이 필요한 상황이다. 이 작업을 구현하는데 이틀 정도의 시간이 들었는데, 그 이유로는 동기와 비동기 방식에 대한 이해와 호출 방식에 대한 이해가 필요했기 때문이다.  🥕동기와 비동기가 뭔가요?동기방식은 순차적으로 한 번에 하나를 처리하고, 비동기방식은 여러 작업을 동시에 하는 병렬방식이다. 그래서 동기 방식이 각 작업이 끝날 때까지 대기하는 반면, 비동기 방식은 다른 작업을 수행하며 대기 시간을 활용한다. 비동기 방식은 외부 API를 호출하거나 데이터베이스 쿼리, 네트워크 요청에 유용하다.  🥕함수 호출 시 작동 순서는?사용자가 언론사와 키워드를 선택하고 분석하기 ..

카테고리 없음 2025.01.15

뉴스분석 및 요약서비스(키워드 랭킹 순위)

주말없이 밤낮을 고생하며 키워드 순위를 구현했다. 가장 많은 어려움은 명사를 추출하는 부분과 okt.nouns가 걸러내지 못하는 부분을 정제하는 부분이었다. 패턴분석을 우선해 키워드에 추가했고, 나머지 키워드를 처리하도록 했다. 순위는 빈도수에 초점을 두지만 동시 출현 빈도 임계값을 0.8로 두어 연관 키워드를 판단하고 그룹화하여 중복을 제거했다. 즉, 경호처장(5)과 경호처(3)가 같이 등장하면 짧은 단어가 긴 단어에 포함되었다고 해석하고 더 긴 키워드를 선택하게 되며, 빈도수는 8건으로 합산된다. 이를 통해 유사한 관련 키워드를 그룹화하여 관리하고, 의미적 연관성은 보존하여 현재 중요한 이슈를 파악할 수 있다.if (keyword in existing or existing in keyword or ..

카테고리 없음 2025.01.13

뉴스분석 및 요약서비스(필터링 중복 선택기능 추가)

주요 기사 모아보기 창은 키워드에 오른 관련 기사들을 모아서 보여준다. 원하는 주제에 대한 검색을 원활히 도울 수 있도록 필터링 기능을 추가했고, 언론사는 3개까지, 키워드는 5개까지 선택할 수 있다. 이를 통해 키워드 주제에 대한 언론사의 관점을 비교할 수 있다. 향후 이것을 분석해주는 llm을 개발할 예정이다. 🥕 필터 초기화 버튼 문제필터 초기화 버튼을 눌렀을 때 언론사 필터는 초기화되지만 키워드 필터의 선택 태그가 화면에 그대로 남아있었다. 실제 데이터는 초기화되었으나 UI가 업데이트되지 않는 문제였다. 확인해보니 초기화 함수에서 updateKeywordTags() 함수 호출이 누락되었고, 키워드 태그와 언론사 태그의 업데이트 로직이 분리되어 있어 동기화 문제 발생한 것이었다. 언론사 필터와 키..

카테고리 없음 2025.01.10

뉴스분석 및 요약서비스(KoNLPy설치)

오늘은 하루 종일 키워드 분석을 하면서 보냈다. 처음엔 "인용문"의 중요도가 낮다고 생각했으나 기사들을 분석한 결과 중요한 점들을 '강조'할 때 사용하기도 했다. 그래서 인용문을 중심으로 생각하기 보다는 주요 키워드가 기사의 앞자리에 나온다는 점, 중요 키워들이 여러 기사에서 반복되는 빈도 수를 체크했다. 키워드 분석은 다음 단계를 따랐다. 1. 패턴 정의   - JOSA_PATTERNS: 조사 패턴   - COMPOUND_PATTERNS: 복합명사 패턴   - QUOTE_PATTERNS: 인용구 패턴   - ACTION_RESULT_PATTERNS: 행동-결과 패턴   - NEWS_STRUCTURE_PATTERNS: 뉴스 구조 패턴   - NAME_PATTERNS: 인명 관련 패턴COMMON = { ..

카테고리 없음 2025.01.08

뉴스분석 및 요약서비스(키워드 순위, 주요기사 필터링)

오늘은 주요 기사 모아보기 탭을 만들고, 그곳에서 필터링한 정보를 볼 수 있도록 기획했다. 10개 종합신문사를 15분마다 크롤링하고, 10개 기사 중 1위에 오른 기사는 "실시간 주요 뉴스"에 업로드 된다. 종합적인 시각을 갖는 것이 목표기에 언론사를 가나다 순으로 배열하였다.  중요 키워드는 단어 빈도수(TF), 단어의 중요도(IDF), 기사 순위 가중치(상위 랭크 기사에 등장하면 더 중요하게 취급)를 고려하여 선정되었다. 대통령의 계엄령 선포와 관련된 사건들은 현시점 대한민국에서 뜨거운 감자이다. 언론사들의 최상위에 랭크된 기사들은 달랐지만 TOP10 실시간 랭킹은 주요 사건들을 다루고 있어 중요 키워드는 그 흐름을 잘 반영하고 있다. 키워드를 클릭하면 관련 기사를 한 곳에서 볼 수 있도록 하였고, ..

카테고리 없음 2025.01.07

뉴스분석 및 요약서비스(크롤링, 키워드 분석)

빠르게 변하는 혼란한 세상 속에 우리는 보고 싶은 것만 보고 듣는 '확증편향'에 쉽게 빠진다고 생각했다. 다양한 언론사의 뉴스를 비교하고 분석하여 요약해주는 서비스를 제공해, 정보의 편향을 줄이고 합리적인 의사결정을 돕고자 서비스를 기획했다.  학습 단계에 있으므로 먼저 구축된 랭킹을 크롤링 해오기로 했다. 정치, 경제, 사회, 문화, 국제정세 등 광범위한 주제를 다루는 종합지(종합신문)를 선택했다. 종합지는 국민일보, 조선일보, 동아일보, 서울신문, 중앙일보, 한겨레, 경향신문, 문화일보, 세계일보, 한국일보가 있었다. 이 순서는 언론사 코드 순서대로 정렬되었고, 화면은 가나다 순으로 보이게 설계했다. 언론사 별 TOP10 뉴스를 15분 마다 자동으로 크롤링하였고, 1위 기사를 실시간 주요 뉴스로 실었..

카테고리 없음 2025.01.06

중고 학교용품 거래 플랫폼 개발(6,7일차)

오늘은 마이페이지와 장바구니, 상품등록창, 팔로우/팔로워 기능을 구현했다. 기존에는 관리자 서버에서 기능을 확인했는데, 이번에는 회원가입한 아이디로 직접 상품을 등록하였고, 아래와 같이 기능들이 정상적으로 동작됨을 확인하였다. 🥕 팔로우/언팔로우 시 숫자 업데이트 문제async function toggleFollow(userId) { try { const response = await fetch(`/accounts/${userId}/follow/`, { method: 'POST', headers: { 'X-CSRFToken': getCookie('csrftoken') } }); ..

카테고리 없음 2024.12.24