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