시리즈: 공공데이터에서 영업 시그널을 자동으로 발굴하기까지, 4편 읽기
수집은 시작일 뿐이다
데이터를 수집하는 건 생각보다 쉽다. 어렵다고 느껴지는 시점이 있다면, 그건 수집 자체가 아니라 "수집한 12만 건 중에서 의미 있는 건 몇 개인가"를 가리는 순간이다.
이 프로젝트에서 가장 많은 시간을 쓴 단계가 여기다. 솔직히, 수집 자동화가 전체 노력의 20%였다면 데이터 품질 관리가 나머지 80%였다.
같은 공고가 5개 사이트에 올라온다
정부 공고의 독특한 특성 하나.
하나의 사업 공고가 여러 채널에 동시에 게시된다. 과기부의 R&D 사업 공고가 부처 홈페이지, NTIS, NRF, 정책브리핑 사이트에 거의 동시에 뜨는 식이다. 제목이 약간 다를 수도 있고, 내용이 살짝 편집되어 있기도 하다.
기계는 이걸 4개의 다른 데이터로 본다. 하지만 영업팀 입장에서는 하나의 정보다.
제목 기반 중복 제거의 한계
단순히 제목으로 중복을 잡으면 오탐이 난다. 같은 사업인데 소스마다 제목이 다를 수 있고, 반대로 "사업 참여기관 모집 공고" 같은 범용적인 제목은 완전히 다른 사업끼리도 겹친다.
결국 본문 내용을 정규화한 후 해시값으로 비교하는 방식을 썼다. HTML 태그를 제거하고, 공백을 정리한 뒤 콘텐츠 해시를 만들어서 대조하는 식이다.
이렇게 식별된 중복 그룹이 52개. 꽤 큰 숫자다. 중복을 방치하면 같은 기회를 두고 영업팀이 여러 번 움직이는 비효율이 생긴다. 더 심각한 건, 같은 공고를 다른 시점에 발견해서 마치 새로운 기회인 양 잘못된 판단을 내리는 것이다.
15만 건의 쓰레기 데이터
중복보다 더 큰 문제는 노이즈였다.
정부 게시판에는 영업과 전혀 무관한 글이 대량으로 올라온다. 채용 공고, 포토뉴스, 업무추진비 공개, 회의 결과, 기관장 동정 같은 것들. 이런 게 사업 공고와 같은 게시판에 섞여 있기도 하고, 별도 게시판이지만 수집 범위에 포함되기도 한다.
그것보다 더 황당한 건 첨부파일 데이터에서 일어난 일이다. 뷰어 링크(브라우저 미리보기 URL)나 목록 페이지 URL이 첨부파일 다운로드 URL로 잘못 저장된 게 15만 건 이상이었다. 건수는 찼는데 실체는 없는 데이터들.
이런 쓰레기 데이터를 걸러내는 작업만 수 주가 걸렸다. 노이즈 패턴을 분류하고, 각각에 대한 필터를 만들고, 기존 데이터에 소급 적용하는 과정.
품질 정비의 전후
숫자로 보면 이렇다.
| 항목 | 정비 전 | 정비 후 |
|---|---|---|
| 첨부파일 텍스트 추출 | 5,200건 | 53,000건+ |
| 쓰레기 첨부파일 | 155,000건 | 제거 완료 |
| 소속 기관 누락 | 2,255건 | 89건 |
| 날짜 누락 | 2,177건 | 0건 |
| 파일명 메타데이터 오염 | 39,499건 | 정리 완료 |
수집 건수는 똑같다. 하지만 활용 가능한 데이터의 비율은 완전히 다르다.
"수집은 20%, 품질이 80%"
이 프로젝트에서 가장 뼈아프게 배운 교훈이다.
수집 건수에 집착하면 함정에 빠진다. "12만 건 수집했다"고 자랑할 수 있지만, 그 중 날짜가 없는 게 몇 건인지, 본문이 빈 건 얼마인지, 첨부파일을 읽을 수 있는 건 몇 퍼센트인지를 따져보면 이야기가 달라진다.
데이터 프로젝트를 해본 사람이라면 말로는 아는 이야기다. 하지만 실제로 체감하기까지는 시간이 걸린다. 12만 건을 수집하고 "끝났다"고 생각했다가, 품질 점검을 하고 나서 "시작도 못 했다"는 걸 깨닫는 경험. 그게 이 프로젝트의 터닝 포인트였다.
수집 시스템의 성공 지표를 "수집 건수"에서 "활용 가능한 데이터 비율"로 바꿔야 한다. 이건 데이터 프로젝트의 본질이다.
다음 에피소드에서는 이렇게 정제된 데이터를 매일 안정적으로 가져오는 것이 왜 또 다른 난관인지 이야기한다.
