데이터 크롤러 설계
개요
SOOJLE은 세종대학교 구성원이 관심을 가지는 가능한 모든 정보에 대한 수집이 필요하다. 때문에 각 대상이 되는 사이트로부터 정보를 주기적으로 수집하는 크롤러의 구현이 요구된다.
데이터 수집 목록
데이터 크롤러의 수집 대상이 되는 URL은 아래의 문서를 참고하자.
수집 URL 대상 목록수집 수행 과정
아래와 같은 과정을 수행/반복하여 데이터 수집을 진행한다.
지정된 Target URL에 대하여 아래의 과정을 수행한다.
접속한 사이트의 게시판 목록에서 수집 대상을 파악한다.
각 단일 게시물에 대하여 수집 대상 데이터를 수집한다.
만약 이미 해당 데이터가 DB 내에 존재할 경우는 제외한다.
해당 목록에 대한 데이터 수집이 완료되었을 경우, 파라미터를 수정하여 다음 페이지의 게시판으로 이동한다.
해당 게시판에 더 이상 게시물이 존재하지 않거나, 지정된 수집 날짜 미만일 경우, 해당 URL에 대한 수집을 종료한다.
수집 대상 데이터 및 포맷
각각 다른 사이트에서 수집된 데이터들은 모두 각기 다른 포맷을 가지고 있기 때문에 후에 적절한 분석 및 검색 기능을 위해 해당 데이터를 다음과 같은 형태로 정규화시킬 필요가 있다.
분류 | 타입 |
제목 | String |
제목 토큰 | Array<String> |
작성자(있을 경우만 한정) | String |
내용 | String |
게시물 토큰 | Array<String> |
수집/작성 날짜 | DATETIME |
만료 날짜(공모전/대외활동 한정) | DATETIME |
관련 태그 | Array<String> |
로그인 여부 | Int |
URL | String |
이미지 URL(있을 경우만 한정) | String |
게시물 식별 정보 | String |
게시물 Hash | String |
학습 유무 | Int |
만료 날짜, 이미지 URL, 작성자를 제외한 모든 칼럼은 각 게시물에 필수적으로 존재해야 한다. 각 칼럼에 대한 내용은 다음과 같다.
제목
게시물의 제목을 저장한다. 만약 게시판 특성상 게시물 제목이 존재하지 않을 경우, 내용에서 앞의 일정 부분을 발췌하여 제목에 등록한다.
제목 토큰
게시물의 제목을 공백 단위로 나누어 토큰화한 리스트를 저장한다.
작성자
게시물의 작성자 명을 저장한다.
내용
게시물의 내용(Contents)을 저장한다.
게시물 토큰
해당 게시물에 대한 (제목 + 내용 + 태그)을 하나의 문자열로 합친 후, 형태소 분석을 통해 명사만 추출한 토큰 리스트를 저장한다.
수집/작성 날짜
해당 게시물이 작성된 날짜를 기입한다. 만약 존재하지 않을 경우, 현재 시간을 등록한다.
만료 날짜
공모전, 대외활동의 게시물 홍보 만료일 기점이 존재하는 게시물에 대하여 해당 날짜를 수집한다.
관련 태그
수집 도중, Rule Based 방식을 도출한 관련 태그 리스트를 저장한다.
로그인 여부
해당 게시물이 로그인을 한 유저에 한해서만 확인할 수 있는 정보인지 명시하는 값을 저장한다.
URL
해당 게시물의 원본 출처를 저장한다.
이미지 URL
해당 게시물의 Contents 내에 이미지가 존재할 경우, 해당 이미지의 URL을 저장한다.
게시물 식별 정보
크롤러에서 각 타 URL을 식별하기 위해 저장한 값을 저장한다.
게시물 Hash
해당 게시물을 식별하기 위해 (제목 + 내용) 값을 MD5 해쉬 처리를 수행한 값을 저장한다.
학습 유무
해당 게시물이 모델의 학습에 기여를 했는가를 판별하는 칼럼이다. 학습을 수행한 경우 1, 아닌 경우 0을 명시한다.
Last updated