목록전체 글 (231)
나의 개발일지

목차 프로젝트 소개 : https://study-yoon.tistory.com/224 1. 크롤링 : https://study-yoon.tistory.com/225 2. 군집화 : https://study-yoon.tistory.com/226 3. 요약 : https://study-yoon.tistory.com/227 Github : https://github.com/Yoon-juhan/naverNewsCrawling 군집화 단계에서 생성된 상위 군집 데이터 프레임을 사용 1. 여러 기사를 하나의 기사로 요약 여기서 content는 같은 군집 내의 여러 기사들이다. (매개 변수로 받음) 군집 내의 기사들을 하나의 기사로 합치고 문장 단위로 분리 split() 하면서 마지막에 빈 문자열이 생기는 경우가 있..

목차 프로젝트 소개 : https://study-yoon.tistory.com/224 1. 크롤링 : https://study-yoon.tistory.com/225 2. 군집화 : https://study-yoon.tistory.com/226 3. 요약 : https://study-yoon.tistory.com/227 Github : https://github.com/Yoon-juhan/naverNewsCrawling 크롤링 마친 데이터 프레임 (news_df) 사용 작업 순서 : 필요없는 기사 삭제 → 명사 추출 → 명사 벡터화 → 군집화 → 상위 군집 추출 1. 필요 없는 기사 삭제 네이버 요약봇이 요약을 지원하지 않는 유형을 참고해 기사를 삭제 3문장 이하 or 300자 이하 기사 삭제 def sh..

목차 프로젝트 소개 : https://study-yoon.tistory.com/224 1. 크롤링 : https://study-yoon.tistory.com/225 2. 군집화 : https://study-yoon.tistory.com/226 3. 요약 : https://study-yoon.tistory.com/227 Github : https://github.com/Yoon-juhan/naverNewsCrawling 🔑 threading을 사용해서 크롤링을 병렬로 처리 스레드 참고 : https://blog.naver.com/nkj2001/222728316792 현재 프로젝트는 시간당 카테고리별로 100개 정도의 뉴스를 수집해야 함 카테고리 8개 = 총 800개 이상의 뉴스를 수집 스레드를 사용하기 전..

프로젝트 개요 네이버에 있는 뉴스를 카테고리 별로 크롤링, 군집화, 요약해서 시간당 최대 80개의 요약된 기사를 만들어내는 프로젝트 사용하는 카테고리 : 정치, 경제, 사회, 생활/문화, IT/과학, 세계, 연예, 스포츠 프로세스 간단 설명 (1시간 마다 실행) 1. 카테고리 별로 100개 정도의 기사를 크롤링 1.1 뉴스 url을 먼저 수집 1.2 수집한 url로 제목, 본문, 이미지 크롤링 2. 카테고리 별로 기사를 군집화 2.1 본문에서 명사 추출 2.2 추출한 명사 벡터화 (TF-IDF) 2.3 생성된 벡터로 군집화 (DBSCAN) 2.4 군집이 큰 상위 군집 10개만 요약에 사용 3. 상위 군집 10개에 속하는 기사를 요약 3.1 군집에 속해있는 여러 개의 기사를 하나의 기사로 요약 3.2 최대..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131704 🔑 스택 1번부터 나열된 박스(i)를 스택에 담는다. 스택의 맨 위 박스가 택배 기사가 원하는 박스면 빼서 트럭에 담는다. 원하는 박스가 아니면 다음 박스 담으러 이동 def solution(order): answer = 0 stack = [] # 보조 컨베이어 벨트 i = 1 while i < len(order)+1: stack.append(i) # 보조 컨베이어 벨트에 i번 박스 담음 while stack[-1] == order[answer]: # 보조 컨베이어 벨트 맨 위 박스가 택배 기사가 원하는 박스면 answer += 1 # 트럭에 담음 stack.pop() # 보조 컨..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/154538 🔑 BFS 6번 테스트 케이스 계속 통과 안 된 이유 🤬 x == y 일 때 0번 만에 만들 수 있다. 트리를 defaultdict를 사용해 기본 값을 0으로 둔다. 큐에 x를 넣어놓고 bfs를 진행 현재 큐에 있는 값으로 x + n, x * 2, x * 3을 해본다. y를 넘어가면 건너뛰고 아니면 계산된 수에 현재 깊이 +1을 한다. 계산된 수를 큐에 넣는다. bfs 종료 후 tree[y]의 값을 리턴한다. (0이면 -1 리턴) from collections import defaultdict, deque def solution(x, y, n): if x == y: return 0..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/132265 🔑 누적합을 두 번 사용 왼쪽에서 오른쪽으로 누적합 (li1) 오른쪽에서 왼쪽으로 누적합 (li2) li1[i] == li2[i+1] 이면 answer 1 증가 def solution(topping): answer = 0 dic1 = {} dic2 = {} for t in topping: dic1[t] = False dic2[t] = False li1 = [0] * len(topping) li2 = [0] * len(topping) li1[0], li2[-1] = 1, 1 dic1[topping[0]], dic2[topping[-1]] = True, True for i in ran..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42898 🔑 DP (동적 계획법) n, m 보다 1크게 리스트를 만든다. 1, 1 시작 위치에 1을 표시한다. 시작 위치일때와 물에 잠긴 지역일때는 건너뛴다. continue 그냥 길이면 좌표의 위 값 + 왼쪽 값을 현재 위치에 넣는다. 위에서 오는 경우와 왼쪽에서 오는 경우의 합 def solution(m, n, puddles): MAP = [[0] * (m+1) for _ in range(n+1)] MAP[1][1] = 1 for r in range(1, n+1): for c in range(1, m+1): if r + c == 2 or [c, r] in puddles: continue ..