‘그 3초’는 3라운드마다 온다 — 유머 주제 647개 문형 전수 분류

이틀 전 칼럼은 칼라톤 AI 유머 배틀의 라운드 주제 647개를 문자열 단위로 맞대 보고 이렇게 끝났다. 시즌 1은 90라운드를 소재 열아홉 개로 굴렸지만 최근 시즌은 고유율 100%다, 다만 다음 층위의 반복이 없다는 뜻은 아니다 — 소재는 전부 다른데 구도가 매번 “39도 폭염 속 ○○의 그 1초”인 시즌이 있다면 문자열 대조로는 100% 고유하게 보인다고.

그 문장은 추측이었다. 이번에는 같은 647개 주제를 문형으로 다시 분류했다. 무엇에 대한 이야기인지는 지우고, 문장이 어떤 모양으로 끝나는지만 봤다.

결과는 추측보다 선명했다. ‘~하는 순간 / 그 N초’ 문형은 시즌 10번대에 갑자기 나타나 시즌 13에서 56라운드 중 30개를 차지했다. 그리고 시즌 15부터, 이 문형은 라운드 번호를 3으로 나눈 나머지가 2인 자리에만 나온다. 49라운드를 훑어 어긋난 것은 단 두 건, 그것도 둘 다 시즌 15의 첫 세 라운드 안이다.

방법 — 소재를 지우고 문형만 남기기

대상은 앞선 칼럼과 같다. 공개된 유머 시즌 리포트 10편(시즌 1·2·3·5·7·9·11·13·15·17) 하단의 ‘전체 라운드 우승 코멘트’ 표에서 라운드 번호·주제·우승 모델·점수를 뽑은 647행이다.

여기에 두 개의 표지만 기계적으로 달았다.

기계적 기준이라 오탐이 섞인다. 시즌 11 R11 “콘서트 티켓 예매 90초 매진”의 ‘90초’는 시각이 아니라 소요 시간이므로 순간 계열에서 제외했다. 반대로 시즌 7 R19 “흑백요리사 18초 출연과 연매출 270억의 대비”와 R49 “친구 방문 직전 벼락치기 청소”는 표지에 걸렸지만 이 글이 말하는 문형과는 무관한 우연이다 — 아래 표에 그대로 두되, 시즌 7의 2건은 그 성격이라는 점을 밝혀 둔다.

결과 ① — 문형은 시즌 11에서 갑자기 생겼다

시즌리포트 발행일라운드순간 계열진행 표지쉼표 포함평균 글자수
16. 20.900 (0.0%)00.0%11.2
26. 26.1300 (0.0%)00.8%15.1
37. 3.870 (0.0%)00.0%12.5
57. 10.590 (0.0%)00.0%13.7
77. 17.592 (3.4%)01.7%15.1
97. 24.580 (0.0%)10.0%13.5
117. 31.5918 (30.5%)115.3%21.0
138. 7.5630 (53.6%)133.9%19.2
158. 14.198 (42.1%)931.6%22.2
178. 21.3010 (33.3%)126.7%23.0

시즌 1부터 9까지 424라운드에서 순간 계열은 사실상 0이다. 그 시절 주제는 “월요일 아침의 고통”, “회전초밥 열풍”, “장마철 가마솥더위”처럼 뉴스 헤드라인을 줄인 짧은 명사구였다. 평균 11~15자, 쉼표가 거의 없다.

시즌 11에서 판이 바뀐다. 평균 글자수가 21자로 뛰고, 쉼표 비율이 15.3%로 올라가고, 순간 계열이 30.5%로 나타난다. 주제가 뉴스 요약에서 연출된 장면으로 바뀐 것이다. “이사 첫날, 천장에서 쏟아지는 동전”, “빵집 오픈런, 집게가 무거워지는 순간” 같은 문장들이다.

시즌 13에서는 절반을 넘는다. 56라운드 중 30개가 순간 계열이고, 쉼표 비율은 33.9%다. 실제 표를 이어 읽으면 리듬이 그대로 들린다 — R10 “플리마켓 에코백 손잡이가 끊긴 0.1초”, R21 “콩국수 뚝배기가 기울어지는 0.1초”, R29 “카페 반죽기가 폭발한 0.5초”, R41 “무인 사진관 부스, 셔터 3초 전”, R46 “냉소바 그릇을 옮기던 3초 전”, R49 “정전 복구된 아파트 승강기 앞, 그 1초”, R50 “편의점 새벽 재고정리 중 그 1초”, R54 “TV 배송 온 날, 거실 벽걸이 설치 3초 전”. 소재는 여덟 개 다 다르고, 문자열 대조로는 100% 고유하다.

결과 ② — 코드가 먼저 알고 있었다

이 수렴은 저장소에도 기록돼 있다. Humor/PlayBackend/models/NewsCollector.js에서 주제 문형 관련 상수 위에 붙은 주석이다.

// ── 영상 전용 topic 문형 3종 로테이션 (영상 개편 2026-08-11, videoMode 전용) ──
// LEAK CHECK 의 WHERE/WHEN/WHAT-moment 지시가 '장소+순간' 단일 문형 수렴(직전 115라운드의
// 39%, '순간' 토큰 32회)을 유발 — video_title_hook 의 HOOK_VARIANTS 에서 검증된 결정론 회전
// 패턴을 topic 에도 적용한다.

“직전 115라운드”가 무엇인지 세어 보면 정확히 맞아떨어진다. 시즌 11(59라운드)과 시즌 13(56라운드)을 합치면 115라운드다. 그 115개 중 순간·N초 표지가 붙은 것은 45개, 39.1% — 주석의 “39%”와 소수점 첫째 자리까지 일치한다. 순간이라는 낱말이 실제로 들어간 행은 34개로, 주석의 “32회”와는 두 건 차이가 난다(집계 시점이나 세는 단위가 조금 다른 것으로 보인다). 직전·~자마자까지 넣어 넓게 세면 48개, 41.7%가 된다.

주석이 지목한 원인도 코드 안에서 확인된다. 주제 선정 프롬프트의 ‘LEAK CHECK’ 조항은 원래 “주제는 WHERE / WHEN / WHAT-moment만 말할 수 있고 원인은 말하면 안 된다”는 형태였고, 이 문장은 지금도 이미지 라운드용 프롬프트에 그대로 남아 있다. 영상 라운드용으로 갈라져 나온 쪽에서는 같은 자리가 “주제는 WHERE와 지금 눈에 보이게 벌어지고 있는 것만 말할 수 있다”로 바뀌어 있다. ‘WHEN’이라는 단어 하나가 빠졌다.

즉 주제를 짧게 쓰라는 규칙과 “원인 말고 순간을 써라”는 규칙이 겹치면 남는 문장은 “장소, 그 N초”밖에 없었다는 이야기다. 이건 소재 부족이 아니라 문법 부족이다.

결과 ③ — 3으로 나눈 나머지

수리는 문형 세 개를 라운드 번호로 돌려 쓰는 방식이었다. 코드에 정의된 세 문형은 이렇다.

슬롯이름지시된 문형제시된 예
0process진행형 문장 — ‘~하는 중’ / ‘~가 멈추지 않는다’ 꼴. 순간·N초·직전·열자마자 금지오렌지 배출이 멈추지 않는 자판기
1live_noun명사구 실황형 — 목격담처럼 끊어 말한 명사구. 순간·N초·직전·열자마자 금지동전에 점령당하는 중인 셀프계산대
2moment순간형 — ‘~하는 순간 / 그 N초’ 허용

슬롯은 라운드 번호를 3으로 나눈 나머지로 정해진다. 리포트에는 이 라벨이 실리지 않지만, 라운드 번호만 있으면 대조가 가능하다. 영상 라운드가 붙은 시즌은 리포트에 ‘프롬프트 경쟁 5안’ 절이 따로 달려 있는데, 열 편 중 시즌 15와 17 두 편에만 그 절이 있다. 로테이션이 적용됐어야 할 구간이 정확히 이 두 시즌의 49라운드다.

구간슬롯라운드순간 계열비율
시즌 11+13 (로테이션 이전)R ≡ 0371643.2%
R ≡ 1391743.6%
R ≡ 2391538.5%
시즌 15+17 (로테이션 이후)R ≡ 0 (process)1516.7%
R ≡ 1 (live_noun)1815.6%
R ≡ 2 (moment)1616100%

위쪽 세 줄은 로테이션이 없다는 것의 그림이다. 43.2 / 43.6 / 38.5% — 나머지가 무엇이든 순간 계열이 비슷하게 섞여 있다.

아래쪽 세 줄은 스위치가 켜진 뒤다. 나머지가 2인 16개 라운드 전부가 순간 계열이고(시즌 15에서 6/6, 시즌 17에서 10/10), 나머지 33개 라운드에서 순간 계열은 두 건뿐이다. 49라운드에 흩어진 순간 계열 주제 18개가 우연히 이렇게 배열될 확률은 초기하분포로 계산하면 10-10 수준이다. 로테이션은 실제로 돌고 있다.

실제 배열을 시즌 17에서 읽어 보면 이렇다. R2 “이어폰이 하수구 구멍 위에 멈춘 그 3초” → R3 “공원에서 여친 앞에 무릎 꿇는 중인 남친” → R4 “필기 중 레버 건드려 내려앉는 회의실 의자” → R5 “식탁보를 확 잡아당기는 그 순간” → R6 “종이컵 야바위 섞기가 멈추지 않는 거실” → R7 “서울역 대합실에서 캐리어 끌고 성큼성큼 걷는 남자” → R8 “오리배 페달을 힘껏 밟는 순간 그 3초”. 세 칸마다 정확히 시계가 돌아온다.

결과 ④ — 어긋난 두 건은 첫날에 몰려 있다

규칙을 벗어난 주제는 49개 중 둘이다.

위치슬롯주제영문 리포트 표기
시즌 15 R1live_noun월급날 사무실 복사기가 터진 순간The instant the office copier bursts on payday
시즌 15 R3process동물병원 체중계 위, 그 0.5초The 0.5 second on the vet's scale

둘 다 시즌 15의 첫 세 라운드 안이고, R4 이후 46라운드 연속으로 위반이 없다. 같은 구간에서 나머지 2 슬롯 15개는 15개 모두 순간 계열이었다. 로테이션이 시즌 15 진행 도중에 들어왔을 가능성을 시사하지만, 리포트에는 라운드별 시각이 없어 배포 시점과 대조할 방법이 없다. 여기까지가 정황이다.

영문 리포트(-en)로 같은 대조를 하면 국문과 1:1로 맞는다. 나머지 2 슬롯 16개는 영문에서도 16개 전부가 the moment / the instant / the N seconds로 시작하고, 나머지 33개 중 영문 순간 표지가 붙은 것은 위 표의 두 건뿐이다. 두 언어가 별도 열로 저장되는데도 문형 분류가 완전히 일치한다는 것은, 이 표지가 번역 습관이 아니라 주제 자체의 구조라는 뜻이다.

결과 ⑤ — 세 슬롯 중 둘은 서로 잘 구별되지 않는다

다만 로테이션이 세 문형을 똑같이 잘 통제하는 것은 아니다. 금지 조항(순간 계열 쓰지 말 것)은 완벽하게 지켜지지만, 어떤 모양으로 쓰라는 지시는 절반쯤만 지켜진다.

지표slot 0 (process)slot 1 (live_noun)slot 2 (moment)
라운드 수151816
순간 계열 (금지/허용)1116
‘계속 / 멈추지 않’ 표지1111
‘~중인’ 표지350
문장 종결(‘~중’·‘~않는다’)700
명사 종결81816
영문 keeps / won't stop1211

process 슬롯은 어휘로는 잘 구별된다. ‘계속’ 또는 ‘멈추지 않’이 15개 중 11개에 들어 있고(live_noun 슬롯은 18개 중 1개), 영문에서도 keeps·won't stop이 12개에 붙는다. 그런데 모양으로는 구별되지 않는다. 지시문은 “‘~하는 중’ / ‘~가 멈추지 않는다’ 꼴의 문장”을 요구했지만 15개 중 문장으로 끝난 것은 7개뿐이고, 나머지 8개는 “회의실로 계속 밀려 들어오는 포스트잇 더미”처럼 결국 명사로 끝난다. live_noun 슬롯은 18개 전부가 명사 종결이다. 두 슬롯이 절반쯤 같은 모양이 되는 셈이다.

바꿔 말하면, 통제가 확실히 먹힌 것은 “쓰지 말라”는 쪽이었다. “이렇게 써라”는 쪽은 어휘까지만 전달되고 통사 구조까지는 닿지 않았다.

결과 ⑥ — 문형과 점수

슬롯별 우승 코멘트 평균 점수는 이렇다. 시즌 15는 process 89.5(6라운드) · live_noun 83.1(7) · moment 86.7(6), 시즌 17은 84.4(9) · 80.6(11) · 87.8(10)이다. 두 시즌 모두 live_noun 슬롯이 가장 낮다.

다만 이 숫자로 결론을 내려선 안 된다. 슬롯당 표본이 6~11라운드에 불과하고, 점수는 주제 문형이 아니라 그날 다섯 AI가 쓴 코멘트에 매겨진 것이다. 문형이 개그의 난이도를 바꿨는지, 아니면 우연인지는 이 표본으로 가려지지 않는다. 관찰로만 남긴다.

부수적으로 확인된 것 하나. 로테이션 도입과 함께 들어간 34자 상한은 잘 지켜지고 있다. 시즌 15·17의 49개 주제 중 34자를 넘은 것은 0개이고 최장이 32자다. 반면 시즌 7에는 45자짜리(“7일레븐에서 7월 11일 7시 11분에 7.11달러 결제하고 액자에 끼워둔 영수증”)가 있었다.

한계 — 이 분석이 말할 수 없는 것

첫째, 슬롯 번호는 리포트에 실려 있지 않다. 이 글은 “라운드 번호를 3으로 나눈 나머지”라는 코드의 계산식을 공개 리포트의 라운드 번호에 적용해 재구성한 것이다. 결과가 16/16으로 떨어지므로 이 대응이 맞다고 보지만, 시스템이 기록한 라벨을 직접 확인한 것은 아니다.

둘째, 표본이 작다. 로테이션 이후 구간은 시즌 15의 19라운드와 시즌 17의 30라운드, 합쳐 49라운드뿐이다(시즌 17은 R27이 리포트에 없어 30행이다). 슬롯 하나당 15~18라운드다. 다음 시즌이 쌓이면 다시 세어 볼 값이다.

셋째, 문형 분류는 기계적 문자열 표지다. ‘순간’·‘N초’·‘계속’ 같은 낱말의 유무로 갈랐을 뿐, 의미를 읽지 않았다. 표지 없이 같은 구도를 쓴 주제(예: 시즌 13 R23 “텃밭 밤샘 촬영 다음 날 아침”)는 순간 계열에 잡히지 않는다. 즉 이 글의 순간 계열 비율은 문형 동질화의 하한이다.

넷째, 시즌 11·13의 수렴을 ‘LEAK CHECK의 WHEN 지시’ 탓으로 보는 본문의 서술은 저장소 코드 주석이 스스로 그렇게 진단한 것이며, 이번 집계가 인과를 증명한 것이 아니다. 우리가 확인한 것은 주석이 적은 수치(115라운드·39%)가 공개 리포트 실측과 맞아떨어진다는 사실까지다.

다섯째, 배포된 Lambda의 코드가 저장소의 현재 코드와 같다고 단정할 수 없다. 3종 로테이션·34자 상한 같은 값은 지금 저장소에 있는 값이고, 각 시즌이 돌던 시점의 값이 아니다.

여섯째, 로테이션은 영상 라운드(videoMode)에만 적용된다. 이미지 라운드용 프롬프트에는 ‘WHEN’ 지시가 그대로 남아 있으므로, 이 글의 결론을 리그 전체에 확대하면 안 된다. 시즌 15·17에 국한된 이야기다.

일곱째, 시즌 간 점수 비교는 하지 않았다. 시즌마다 심사 구성과 채점 기준이 달라, 슬롯별 점수도 같은 시즌 안에서만 비교했다.

남는 이야기

이틀 전 칼럼의 결론은 “반복을 막는 장치는 자기가 볼 수 있는 형태의 반복만 막는다”였다. 문자열 목록이 문자열을 막자, 반복은 “갑작스러운 소나기”에서 “폭염 속 갑작스러운 소나기”로 모습을 바꿔 통과했다.

이번 집계는 그 이야기의 다음 장면이다. 소재 반복이 잡히자, 반복은 문형으로 옮겨갔다. 시즌 13의 주제 56개는 서로 완전히 다른 소재였고 문자열 대조로는 흠잡을 데가 없었지만, 절반 이상이 같은 자리에서 같은 방식으로 끝났다. 그리고 그 층위마저 잡히자 — 라운드 번호로 문형을 강제로 돌리는 방식으로 — 반복은 다시 한 칸 옮겨갔다. 이번에 남은 것은 “계속 ~하는 중”이라는 어휘 자체다. 시즌 15·17의 process 슬롯 열다섯 라운드 중 열한 개에 ‘계속’ 또는 ‘멈추지 않’이 들어 있다.

같은 층위를 세 번 확인한 셈이니 규칙성이라 불러도 될 것 같다. 다양성을 강제하는 규칙은 자기가 명시한 층위를 정확히 고치고, 그 바로 아래 층위를 새 병목으로 만든다. 순간 계열을 3라운드에 한 번으로 가둔 대가로 나머지 두 슬롯은 서로 닮아졌다.

읽는 쪽에서 쓸 수 있는 결론은 이렇다. 시즌 13 리포트의 주제 열을 위에서 아래로 훑으면 ‘순간’과 ‘N초’가 두 줄 걸러 한 번씩 나온다. 시즌 17 리포트에서는 같은 낱말이 정확히 세 줄에 한 번 나온다. 세어 보면 보인다.

집계 기준. 칼라톤 유머 리그 공개 시즌 리포트 10편(시즌 1·2·3·5·7·9·11·13·15·17)의 ‘전체 라운드 우승 코멘트’ 표 647행에서 라운드 번호·주제·우승 모델·점수를 파싱했다. ‘순간 계열’은 주제 문자열에 순간·직전·~자마자 또는 N초 패턴이 포함된 행(시즌 11 R11의 ‘90초 매진’은 소요 시간이므로 제외), ‘진행 표지’는 계속·멈추지 않·~중인 또는 ~중·~않는다 종결이 포함된 행으로 정의했다. 슬롯은 리포트의 라운드 번호를 3으로 나눈 나머지이며, 코드의 TOPIC_VARIANTS[roundIndex % 3] 계산식을 그대로 적용한 재구성 값이다. 우연 확률은 49라운드 중 순간 계열 18개가 무작위 배치될 때 나머지 2인 16개 자리에 16개 이상 들어갈 초기하분포 확률(4.6×10-11)이다. 국·영문 대조는 각 시즌 -en 리포트의 같은 표를 moment·instant·N secondkeeps·won't stop 표지로 같은 방식으로 집계해 비교했다. 인용한 코드는 저장소의 Humor/PlayBackend/models/NewsCollector.js 현재 내용이며, 각 시즌 진행 시점의 배포본과 동일하다고 단정하지 않았다.