자동화 slecs

자동 기사 생성 품질을 높이는 다층 처리 완성

목차

자동화 봇의 기사 생성 파이프라인에서 humanizer의 1층과 2층 처리를 연결했다. 영문 콘텐츠의 자연스러움을 높이기 위해 초안 생성에서 고도화 개선으로 이어지는 체인을 완성한 작업이다.

왜 다층으로 나눴나

콘텐츠 자동화의 품질 문제는 보통 한 단계의 처리로는 감당하기 어렵다. 초기 draft를 빠르게 만드는 것과 그걸 다듬어 자연스럽게 하는 것은 서로 다른 관심사이기 때문이다.

  • 1층(기초 생성): 템플릿이나 기본 로직으로 기사 골격 작성 — 빠르고 일관적
  • 2층(고도화): 문체 개선, 어순 조정, 자연스러움 검증 — 시간이 걸리지만 품질 향상

한 번에 양쪽을 다 하려면 로직이 복잡해지고, 각 단계별로 검증하기도 까다로워진다. 그래서 처음엔 1층만 동작하게 뒀는데, 영문 콘텐츠가 늘어나면서 2층 처리가 절실해졌다. 사용자들이 "자동생성이라고 느껴지지 않으려면" 단순 조합을 넘어야 했다.

1층+2층 연결의 구조

구분 1층(초안 생성) 2층(개선) 통합 효과
입력 원본 데이터 1층 결과물 단계적 처리
목표 기본 형식 맞추기 자연스러움 향상 품질 누적
시간 복잡도 O(n) O(n) 상대적 느림 전체 처리량 조정 필요
검증 방식 구조/필드 확인 읽음성/일관성 확인 이단계 QA

이 구조의 핵심은 각 계층이 자기 책임만 진다는 점이다. 1층은 "기본 형식이 맞나"만 신경 쓰고, 2층은 "이미 유효한 결과를 더 좋게 만들 수 있나"에만 집중한다. 덕분에:

  • 1층 로직을 개선해도 2층에 부작용을 주지 않음
  • 2층 알고리즘은 1층의 세부 구현 변경과 독립적
  • 필요시 1층 결과만 써야 하는 경우에도 쉽게 스킵 가능

seed_articles.py에서의 구현

기사 생성 초기화 스크립트에서 흔히 쓰는 흐름은 이런 식이다:

# 의사코드 — 실제 구현 세부와 무관
def generate_articles(raw_data):
    # 1층: 기초 생성
    draft_articles = layer1_generate(raw_data)

    # 2층: 개선 처리 (humanizer)
    polished_articles = layer2_humanize(draft_articles)

    return polished_articles

주의할 점은:
- 2층의 입력은 반드시 1층이 검증한 valid한 결과만 (garbage in, garbage out)
- 2층이 1층 결과를 변형할 때도 기본 구조는 보존해야 함
- 처리 시간이 누적되므로 bottleneck 모니터링 필수

실무에서 배운 것

이 작업을 하면서 느낀 것은, 자동화 시스템의 품질을 높일 때 "한 번에 다 좋게" 보다 "점진적으로 층을 쌓기"가 훨씬 현실적이라는 거다.

팀이 커질수록 단계 분리가 중요해진다. 누군가는 1층의 처리 속도를 개선하고, 다른 누군가는 2층의 정확도를 높일 수 있다. 코드 리뷰도 "이건 1층 변경이니까 어디서부터 어디까지 영향을 봐야 해"라고 스코핑하기 쉬워진다. 병렬 작업이 가능해진다는 뜻이다.

롤아웃이 유연해진다. 초기엔 1층만 켜둔다. 2층의 품질이 확실해진 후, 또는 인프라가 준비된 후에 점진적으로 활성화할 수 있다. 리스크 관리 관점에서도 훨씬 낫다.

디버깅도 명확해진다. 결과물이 이상할 때 "1층에서 온 건가 2층에서 온 건가" 빠르게 좁혀진다. 로그도 레이어별로 분리해서 찍으면 추적이 훨씬 쉽다.

다음은 이 연결을 좀 더 동적으로 만드는 것을 생각 중이다. 예를 들어 처리 부하에 따라 2층을 선택적으로 띄운다든지, 샘플에 대해 A/B 테스트로 2층의 효과를 정량으로 측정한다든지. 단순히 "붙인다"에서 "지능적으로 활용한다"로 옮겨가는 게 목표다.


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

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

댓글 0

첫 댓글 달아줘.