국방/우주항공 분야에서 새로 시작하는 프로젝트를 찾아서 관련 뉴스를 모으는 리포트를 만들고 있었다. 방식은 단순했다. 사업 이름을 하나씩 알고 있는 만큼 목록에 적고, 그 이름으로 뉴스를 검색한다. KF-21 보라매, 장보고-III, 정조대왕급 이지스구축함 후속사업 같은 이름 13개로 시작했다.
문제는 두 가지였다. 하나는 이 13개가 애초에 전부가 아니라는 것. 다른 하나는, 이 13개 중 몇 개는 이름 자체가 틀렸다는 것.
”정조대왕급”은 사업 이름이 아니었다 (열린재정 API)
이 리포트를 만들 때 프로젝트 이름은 그냥 기록용 라벨이다. 코드 구조상 검증되는 값이 아니라서, 아무 문자열이나 넣어도 동작은 한다. 그래서 “정조대왕급 이지스구축함 후속사업”이라는 이름도 별 의심 없이 써왔다. 함정이 정조대왕함이니까, 사업 이름도 그렇게 부를 거라고 짐작한 거다.
정부 예산 데이터를 직접 조회해보고서야 이게 틀렸다는 걸 알았다. 국가재정정보공개시스템(열린재정) API로 방위사업청 예산의 세부사업명 필드를 뽑아보니, 이 사업의 공식 명칭은 “광개토-Ⅲ Batch-Ⅱ”였다. “정조대왕함”은 이 사업으로 만드는 1번함의 이름일 뿐, 사업 자체를 부르는 공식 명칭이 아니었다.
비슷한 어긋남이 더 있었다. “장보고-III”라고 짐작했던 이름은 정부 문서에서 로마 숫자 한 글자로 “장보고-Ⅲ”라고 쓰고 있었다. 영문자 I 세 개로 쓴 III와 로마 숫자 Ⅲ는 눈으로는 같아 보여도, 텍스트 검색에서는 다른 문자열이다. “누리호 고도화(차세대발사체)“라고 하나로 묶어뒀던 사업은, 실제 예산 항목에서는 서로 다른 두 개의 세부사업으로 나뉘어 있었다. “MUM-T”는 아예 정부 예산 체계에 존재하지 않는 이름이었다 — 실제로는 확인된 것만 7개의 개별 세부사업에 흩어져 있는 개념을 내가 하나의 약어로 뭉뚱그려 부르고 있었던 것이다.
왜 이게 문제였나 (뉴스 검색 키워드)
뉴스 검색은 검색어와 기사 본문의 문자열 매칭에 의존한다. “정조대왕급” 으로 검색하면 함정 진수식이나 취역 관련 기사는 걸리지만, 사업 자체의 진행 상황·협력업체 선정·계약 소식이 “광개토-Ⅲ”라는 이름으로 나오면 놓친다. 검색어가 틀리면, 검색 결과가 0건이어도 그게 “정말 관련 뉴스가 없다”는 뜻인지 “이름이 틀려서 못 찾은 것”인지 구분이 안 된다. 이 두 가지를 혼동하는 게 가장 위험했다 — 없어서 0건인 줄 알고 넘어가면, 실제로는 활발히 진행 중인 사업을 통째로 놓치는 것과 같다.
정부는 이미 정답을 갖고 있었다 (열린재정 사업명)
일반 뉴스로 사업 이름을 짐작하는 대신, 정부 예산 시스템이 자체적으로 쓰는 명칭을 그대로 가져오면 이 문제가 근본적으로 사라진다. 예산이 편성된 사업은 반드시 공식 세부사업명을 갖고 있어서, 짐작에 기대지 않는 기준 이름이 생긴다. 그래서 기존에 짐작해서 넣어뒀던 키워드는 전부 남겨둔 채로, 열린재정에서 확인한 공식 명칭을 키워드에 추가했다. 짐작이 완전히 틀린 건 아니었으니(예: 정조대왕함이라는 검색어 자체는 여전히 유효하다) 버릴 이유는 없었고, 정확한 이름을 더하는 쪽이 맞았다.
이 발견은 두 번째 벽 — 애초에 13개 목록 자체가 전부가 아니었다는 문제 — 로 이어졌다. 정부 예산 데이터를 “이미 아는 사업 이름을 확인하는 용도”로만 쓸 게 아니라, “아직 모르는 사업을 찾아내는 용도”로 쓸 수 있지 않을까. 다음 편은 그 답을 찾아낸 이야기다.