스크래핑

오픈 웹에서 대규모 학습 데이터셋을 구축하는 방법

페이지 수집은 쉬운 부분이다. 오픈 웹 크롤링을 학습 코퍼스로 전환하는 방법: 프론티어, 옵트아웃, 추출, 필터링, 중복 제거 및 오염 제거.

Matt Brown

Matt Brown

2026년 9월 18일 · 7 분 소요

크롤은 코퍼스가 아니다. 수십억 개의 페이지를 가져오는 것은 인프라 문제이며, 이는 AI 및 LLM 학습을 위한 웹 데이터 수집에서 다루었다. 그 페이지들을 모델을 개선하는 학습 데이터로 바꾸는 것은 별개의 문제로, 자체 단계를 가지고 있으며 최종 데이터셋의 품질 대부분은 그 단계에서 결정된다.

이 가이드는 그 단계들을 순서대로 다룬다: 무엇을 수집할지 결정하기, 옵트아웃 존중하기, 텍스트 추출하기, 필터링하기, 중복 제거하기, 평가 오염 제거하기, 결과 문서화하기. 더 작은 규모에서의 일반적인 스크래핑 데이터셋 파이프라인은 웹 스크래핑으로 데이터셋 구축하는 방법에 있다.

크롤러가 아닌 혼합비율에서 시작하라

무엇을 크롤할지 결정하기 전에 모델이 필요로 하는 것을 결정하라. 학습 코퍼스는 하나의 혼합물이다: 언어, 도메인, 형식, 시기별 비율을 각각 토큰 예산으로 표현한 것이다.

이 목표가 이후의 모든 것을 결정한다. 어느 지역에서 수집할지, 각 소스에 얼마의 크롤 예산을 할당할지, 어느 도메인이 충분히 기여했는지를 알려준다. 이것이 없으면 크롤은 가장 가져오기 쉬운 쪽, 즉 대개 대형이고 영어이며 링크가 많이 걸린 사이트로 흘러가고, 모델은 그 불균형을 그대로 물려받는다. 이 문제의 샘플링 측면은 당신의 레지덴셜 프록시 풀은 샘플이지, 인터넷 전체가 아니다에서 다루었다.

크롤 프런티어

프런티어는 가져오기를 기다리는 URL 대기열이며, 이를 어떻게 관리하느냐가 웹의 어느 부분이 코퍼스에 들어갈지를 결정한다.

시드. 혼합비율에 맞는 소스에서 시작한다: 언어와 주제별로 정리된 도메인 목록, 사이트맵, 고품질 페이지에서 나온 링크들.

우선순위 지정. 기대 가치에 따라 URL의 순위를 매긴다: 소스에 대한 품질 사전 확률, 이미 보유한 것과 비교한 신규성, 그리고 최신성이 중요한 경우의 신선도.

정규화. 대기열에 넣기 전 URL을 정규화하여 추적 매개변수, 세션 식별자, 중복 경로를 제거함으로써 같은 페이지가 서로 다른 주소로 여러 번 가져와지지 않도록 한다.

정중함 예산. 전체 기준뿐 아니라 호스트별로 동시성과 요청 속도를 제한한다. 작은 사이트를 두들기는 프런티어는 무책임할 뿐 아니라 자기 파괴적이다. 결국 차단당하기 때문이다. 그 메커니즘은 속도 제한과 요청 스로틀링에 있다.

재크롤 정책. 각 소스가 얼마나 자주 변하는지, 혼합비율이 얼마나 많은 신선한 콘텐츠를 필요로 하는지에 따라 각 소스를 얼마나 자주 다시 방문할지 결정한다.

가져오는 시점에 옵트아웃을 존중하라

옵트아웃 신호는 시간이 지나며 변할 수 있고 나중에 그 당시 상태를 입증해야 할 수도 있기 때문에, 페이지를 가져올 때 확인하고 함께 기록해야 한다.

  • robots.txt, AI 전용 크롤러 이름을 대상으로 한 규칙을 포함해서.
  • 페이지 수준 신호, 예를 들어 robots 메타 태그와 응답 헤더.
  • 기계가 읽을 수 있는 권리 보류 표시. EU에서는 권리 보유자가 텍스트 및 데이터 마이닝 권리를 기계가 읽을 수 있는 형태로 보류할 수 있으며, 범용 AI 모델 제공자는 그러한 보류를 존중하고 학습 콘텐츠를 문서화할 것으로 기대된다.
  • 자동 수집이나 재사용을 금지하는 사이트 약관.

각 문서와 함께 옵트아웃 상태를 저장하고, 소스가 허가를 철회할 경우 나중에 문서를 제거할 수 있는 능력을 유지하라. 더 넓은 관점은 AI 데이터 수집을 위한 윤리적 레지덴셜 프록시에 있다.

추출: HTML에서 텍스트로

원본 HTML은 대부분 콘텐츠가 아니다. 내비게이션, 푸터, 쿠키 배너, 관련 기사 위젯, 광고가 페이지의 실제 텍스트보다 더 많을 수 있다.

  • 주요 콘텐츠를 추출하고 상투적인 요소는 버린다.
  • 의미를 담고 있는 구조를 보존한다: 제목, 목록, 표, 코드 블록.
  • 렌더링된 페이지를 처리한다. 일부 콘텐츠는 JavaScript가 실행된 후에만 존재한다; 웹 스크래핑 API가 필요한 경우를 참고하라.
  • 문서별로 언어를 식별하고, 다중 언어 페이지의 경우 단락별로도 식별하여 혼합비율 목표를 실제로 측정할 수 있게 한다.

재현 기간 동안 원본 응답을 보관하라. 추출 로직은 개선될 것이며, 저장된 응답에서 다시 추출하는 것이 재크롤보다 훨씬 저렴하다. 그 도착 패턴은 웹 스크래핑 API 데이터를 SQL로 옮기기에 있다.

품질 필터링

크롤이 반환하는 것 대부분은 학습할 가치가 없다. 필터링은 보통 가장 저렴한 것부터 계층적으로 실행된다.

휴리스틱 필터는 명백한 쓰레기를 제거한다: 매우 짧은 문서, 기호나 숫자가 지배적인 페이지, 여러 번 반복되는 줄, 일반적인 기능어가 없는 텍스트, 대부분 링크 목록인 페이지.

모델 기반 품질 필터는 더 원하는 텍스트의 예시와 대비하여 문서를 채점한다. 강력하지만 품질에 대한 정의를 내재하고 있으므로, 이것이 체계적으로 무엇을 배제하는지 확인해야 한다.

생성 콘텐츠 필터링은 매년 더 중요해지고 있으며, 웹 데이터셋에서 AI 생성 콘텐츠를 탐지하고 필터링하는 방법에서 다루었다.

안전 필터는 모델이 요구하는 콘텐츠 정책을 적용한다.

모든 필터를 언어별로 보정하라. 영어에 맞춰진 임계값은 어떤 언어에서는 너무 많이 제거하고 다른 언어에서는 너무 적게 제거할 것이다. 또한 각 단계가 언어와 도메인별로 무엇을 제거하는지 측정하여, 특정 지역 전체의 글쓰기를 조용히 삭제하는 필터를 잡아내라.

코퍼스 규모에서의 중복 제거

중복 텍스트는 웹 어디에나 있다: 신디케이션된 기사, 미러링된 사이트, 템플릿화된 페이지, 도메인 전체에 반복되는 상투적 문구. 그대로 남겨두면 무엇이든 가장 많이 복사된 것에 과도한 가중치를 주게 된다.

  • 정확한 중복은 정규화된 텍스트를 해시하여 제거한다.
  • 근사 중복은 셔플된 텍스트에 대한 MinHash와 지역성 민감 해싱으로 찾아내며, 이는 매우 큰 코퍼스에도 확장 가능하다.
  • 도메인 내 반복되는 단락, 예를 들어 고지사항이나 서명은 단락 수준에서 제거한다.
  • 시간에 걸친 중복, 즉 동일한 페이지가 여러 크롤 스냅샷에 나타나는 경우는 하나의 버전으로 통합한다.

개인 데이터

웹 크롤은 원하든 원하지 않든 개인 데이터를 수집한다: 이름, 이메일 주소, 전화번호, 때로는 신원 확인 번호까지. 로그인 뒤에서 수집하지 말고, 처리 과정에서 흔한 식별자 패턴을 걸러내고, 파이프라인이 무엇을 제거하는지 문서화하라. 법적 관점은 레지덴셜 프록시와 GDPR 준수에 있다.

오염 제거

평가 벤치마크가 학습 데이터에 나타나면, 평가는 더 이상 아무것도 측정하지 못하게 된다. 벤치마크 질문과 답은 웹 전체에 복사되므로, 오염은 기본적으로 발생한다.

사용하려는 모든 평가 세트와의 중복을 코퍼스에서 확인하라. 일반적으로 긴 n-gram 매칭을 사용하며, 일치하는 항목을 제거하거나 표시한다. 어떤 벤치마크가 확인되었는지 기록하여 이후 결과를 정직하게 해석할 수 있게 하라.

모든 것을 문서화하고 버전 관리하라

학습 코퍼스는 수백 가지 결정의 산물이며, 그것들을 알지 못하고서는 누구도 책임 있게 사용할 수 없다.

  • 문서별 출처: 소스 URL, 가져온 시간, 관측된 관측점, 옵트아웃 상태, 통과한 필터 버전.
  • 데이터셋 카드로 소스, 시기 범위, 언어, 필터와 그 버전, 알려진 격차와 알려진 편향을 다룬다.
  • 재현 가능한 파이프라인으로, 소스가 허가를 철회할 때 코퍼스 버전을 다시 구축하거나 수정할 수 있도록 한다.

각 관측이 어디서 언제 이루어졌는지를 기록해야 하는 근거는 관측점 표준에 설명되어 있다.

규모에 맞는 수집 계층

대규모 수집에는 분산되고 지리적으로 적절한 종료 지점이 필요하다. 지역 소스에 도달하기 위해서도, 호스트별 요청 속도를 합리적으로 유지하기 위해서도 그렇다. Shifter 게이트웨이를 사용하면 시장은 p.shifter.io:443에 대한 자격 증명에서 설정되며, 세션 식별자를 생략하면 요청마다 종료 지점이 로테이션되는데, 이는 많은 독립적인 페이지를 가져오는 프런티어에 적합하다:

customer-USERNAME-country-jp:PASSWORD

프록시 계층이 특히 학습 데이터에 왜 중요한지는 AI 학습 데이터를 위한 레지덴셜 프록시에서 다루었다.

코퍼스를 정직하게 유지하는 지표

지표무엇을 알려주는가
목표 대비 언어 및 도메인별 토큰 수혼합비율이 충족되고 있는지 여부
필터 단계별, 언어별 제거율필터가 어딘가에서 과도하게 삭제하고 있는지 여부
중복률크롤 중 반복이었던 비율
옵트아웃 커버리지옵트아웃 확인이 기록된 문서의 비율
벤치마크별 오염 적중 수평가를 신뢰할 수 있는지 여부

FAQ

직접 크롤링하는 대신 공개 웹 크롤에서 시작할 수 있는가?

공개 크롤은 강력한 출발점이다. 실시간 웹에 뒤처져 있고 커버리지 격차가 있어서, 대부분의 팀은 자신들에게 중요한 언어와 도메인에 대해 더 신선하고 목표가 명확한 수집을 추가한다.

품질 필터링은 얼마나 적극적이어야 하는가?

쓰레기를 제거할 만큼 충분히 적극적이면서도, 그 외 무엇을 제거하는지 볼 수 있을 만큼 신중하게 측정되어야 한다. 임계값을 확정하기 전에 언어와 지역별로 제거 항목을 점검하라.

학습 데이터를 위해 robots.txt를 따라야 하는가?

그렇다, AI 전용 규칙을 포함해서, 그리고 가져오는 시점의 상태를 기록해야 한다. 옵트아웃은 일부 법역에서 법적 기대사항이 되어가고 있다.

이것이 그라운딩 데이터와 어떻게 다른가?

학습 데이터는 모델의 가중치를 형성한다. 그라운딩 데이터는 답변 시점에 가져와서 인용된다. 후자는 실시간 웹 데이터로 LLM 에이전트를 그라운딩하기에서 다루었다.

결론

대규모 학습 코퍼스는 크롤 이후의 단계들에서 만들어진다: 무엇을 수집할지 결정하는 혼합비율 목표, 정중함을 유지하는 프런티어, 가져오는 시점에 확인되고 기록되는 옵트아웃, 깨끗한 추출, 언어별로 보정된 계층적 필터링, 모든 수준에서의 중복 제거, 평가와 대비한 오염 제거, 그리고 누구나 그 결정들을 재구성할 수 있게 하는 문서화.

혼합비율이 필요로 하는 지역에서 수집하고, 재현을 위해 원본 응답을 보관하고, 각 단계가 무엇을 제거하는지 측정하라. 제품 관점은 AI 및 ML을 위한 레지덴셜 프록시 페이지에 있으며, 요금은 가격 페이지에 있다.

시작할 준비가 되셨나요?

205M개 이상의 IP, 195개 이상의 국가를 지원하는 Shifter의 레지덴셜 프록시를 $0.10/GB부터 이용해보세요.

시작하기