개발 slecs

CMS 게시물의 자격요건을 자동으로 구조화

목차

정부 규정 관련 CMS 게시물에서 자격 정보를 자동으로 추출하는 기능을 만들었다. 게시물이 텍스트 형태로 저장되어 있다면, 그 안에 산재된 자격요건들을 구조화된 데이터로 변환해야 하는 경우가 자주 생긴다. 이번 작업은 그 변환 과정을 체계화한 것이다.

왜 이 기능이 필요했나

CMS에 올라오는 게시물들은 사람이 읽기 좋은 형태의 마크업이나 HTML이다. "다음 조건을 만족하는 사람이 신청 가능합니다", "①소득 기준은 월 xxx 이하" 같은 자유로운 텍스트 형식이 대부분이다.

그런데 시스템에서 이런 정보를 활용하려면?
- 사용자 프로필과 자동 매칭하기
- 자격 조건을 구조화된 쿼리로 검색하기
- 대시보드나 API 응답에서 정규화된 형태로 제공하기

이 모든 게 텍스트 덩어리 상태론 불가능하다. 따라서 추출기(extractor)가 필요했다.

추출 로직의 설계

자격요건 추출이 단순해 보이지만, 실제론 꽤 까다롭다:

고려사항 설명 예시
다양한 표현 방식 같은 조건을 여러 방식으로 표현 "연령 20세 이상", "20세 초과"
범위형 조건 상한·하한이 함께 있는 경우 "소득 1억 이상 5억 미만"
복합 조건 AND/OR 논리가 섞여있음 "거주지가 서울이거나 경기도인 경우"
예외 케이스 특정 조건하에서만 적용 "기본적으로는 ~이나, 장애인인 경우는 제외"

추출기를 구축할 때는 정규표현식만으로는 부족하고, 도메인 규칙(domain rules)을 체계적으로 정의해야 한다.

구현의 핵심 포인트

추출기를 만들 때 팀에서 고민했던 부분:

  • 신뢰도 vs 커버리지: 모든 케이스를 잡으려다 거짓양성(false positive)이 증가할 위험
  • 초기엔 높은 신뢰도로 시작해서, 운영 중 오류를 모니터링하고 룰을 추가하는 방식 선택

  • 유지보수성: 매번 게시물 형식이 바뀔 때마다 코드를 수정하면 안 됨

  • 추출 규칙을 설정 파일이나 데이터로 분리하는 구조 검토

  • 성능: 대량의 게시물을 일괄 처리할 때 비용

  • 배치 처리와 캐싱을 고려해 설계

배운 점: 텍스트 추출의 일반적 함정

이 작업을 하면서 느낀 건, "텍스트 파싱은 생각보다 훨씬 복잡하다"는 것이다. 특히 사람이 작성한 비정형 데이터에서는:

  1. 휴먼 에러를 고려해야 함 — 게시물 작성자가 형식을 따르지 않은 경우가 생각보다 많다
  2. 임계값 설정이 중요 — 어디까지가 "자격요건"인지 경계가 모호할 수 있음
  3. 검증 단계는 필수 — 자동 추출 후 수동 검증 또는 휴리스틱 검사 없이는 위험

특히 정부 관련 내용처럼 정확성이 중요한 도메인에선 추출된 데이터를 그대로 사용하기보다 "후보군"으로 보고, 최종 검증을 거치는 워크플로우를 설계하는 게 좋다.

이번 기능이 추가되면서 CMS 게시물이 한층 더 '머신 리더블'해졌다. 단순히 디스플레이용 콘텐츠가 아니라 시스템이 이해하고 활용할 수 있는 자산이 된 셈이다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.