49개 내용 시각화 유형을 형질(trait)로 코딩해 계통을 세우고, 어떻게 구분하고 무엇으로 대체하며 어디에 공급 구멍이 있는지 종합한다. 발표·공유용 한 세트.
아래에서 위로 읽는다. 뿌리(공동조상)에서 가지가 갈릴 때마다 그 가지가 새로 얻는 형질(공유파생형질)을 세로로 적었다. 같은 가지에 달린 잎은 그 형질을 함께 물려받는다. 점 크기 = 유저 수요, 색 = 진한 파랑은 수요가 높고 공급이 부족한 유형, 회색은 공급 과잉, 연회색은 보통.
List는 Steps의 조상이 아니다. 둘의 공통 조상은 정보 단위 2개 이상이고, 거기서 List는 동등 병렬 가지로, Steps는 순서 의존 가지로 갈라진다. 형질 거리도 List↔Steps = 0.67(사촌), Steps↔Cycle = 0.33(형제)로 이를 뒷받침한다.
각 유형을 27개 형질(정보 단위 수, 순서 의존, 시간축, 페이지 역할 …)의 0/1/2 값 벡터로 코딩했다. 두 유형 사이 거리는 가중 Jaccard(1 − 겹침/합집합). 가지는 공유파생형질로 정의하고 UPGMA 군집으로 교차 확인했다. 텍스트 임베딩은 계통을 만드는 데 쓰지 않고 검증(Mantel)에만 썼다.
수요 = 유저 입력 분류 7,168건. 공급 = 프로덕션 design_object 최종 저장 태그(data_version 2.2, 173,786 태그, 49/49 유형 관측). 정의·경계 = 시멘틱 단어장 v7. 운영 혼동 = 태깅 rule 리맵 로그 + judge FAIL 1,899행.
거리 = 1 − 가중 Jaccard. 0에 가까울수록 같은 것이다. 계통에서 “형제”인 쌍이 그대로 작은 거리로 나타난다.
행·열은 계통 순서로 정렬했다. 진한 칸일수록 가깝다. 굵은 선은 계통상 clade 경계다. 대각선 블록이 진하게 뭉쳐 보이면 그 clade가 내부적으로 잘 묶였다는 뜻이고, 블록 밖의 진한 칸은 clade를 건너뛴 유사(예: TableOfContents ↔ List)다. 칸에 마우스를 올리면 정확한 값이 나온다.
먼저 큰 의미 갈래를 고른 뒤, 오른쪽의 내부 판별 질문을 계속 따라가면 유형 하나에 도달한다. 비교 유형 7종과 순서 흐름 6종(Cycle·Staircase·Funnel·FlowChart·Transformation·Steps)도 각각 별도 조건과 별도 종착 상자를 가진다. Steps는 “기본값”이 아니라, 시간축도 없고 순환·상승·전환·분기·전후대비도 아닌 일반 단계 순서일 때의 답이다. 모든 종착 상자는 한 유형만 포함하며, 전체 종착 상자는 정확히 49개다.
순서는 형질 거리(대체 품질)가 정하고, 공급량은 “다음 단계로 넘어갈지”만 정한다. L0 요청 그대로 → L1 형제(거리 ≤ 0.55) → L2(거리 ≤ 0.75) → L3 List 최후 → L4 태그 없는 후보(현행 유지). 아래는 49개 전 유형을 이름 오름차순으로 정렬했다. 이름 뒤 * 는 List 폴백 금지 유형이다.
1) 같은 계통 갈래(clade)를 먼저 고른다. 2) 그 안에서는 27개 형질의 가중 Jaccard 거리가 가까운 순으로 놓는다. 3) 같은 거리라면 요청의 지배 형질(시간축·비율·위계 등)을 더 오래 보존하는 후보를 앞에 둔다. 4) 페이지 역할·단일 메시지·인물·KPI 11종은 List를 제외한다. 공급량은 체인 순서를 바꾸지 않고, 후보가 충분해져 탐색을 멈출 시점에만 사용한다.
. 페이지 역할·텍스트·인물·KPI라서 List 카드로 채우면 “후보가 있다”는 착각만 만든다. 운영 혼동 rule(LongForm·HighlightedMessage → List)을 폴백으로 복사하지 않는다.
아래는 49개 전 유형의 수요−공급이다. gap이 양수면 수요보다 공급이 모자란 것이고, 음수면 공급이 남는 것이다. 수요 합 99.2%, 공급 합 100%로 같은 척도다.
폴백만으로 gap을 메우면 결국 List 의존이 커진다. 아래 P0는 폴백 말단이 List로 떨어지는 것을 막기 위해 먼저 확보해야 하는 유형이다.
ListingTable · Steps · ComparisonTable의 유효 컴포넌트를 늘리는 것이 EMD를 직접 낮춘다. List는 이미 과잉이라 추가 확보는 다양성을 역행시킨다.
본문에서 요약한 수치의 원 산출물이다. 단계별로 접혀 있으니 필요한 것만 펼쳐 본다.
모든 분석의 출발점. 49 × 27 문자 행렬을 만들고, 각 칸에 0(없음) / 1(약함·부수적) / 2(정의적 특징)을 넣었다. 값 2는 “이 형질이 없으면 그 유형이 아니다”라는 뜻이다. 가중 Jaccard는 이 0/1/2를 그대로 쓴다: 거리 = 1 − Σmin(a,b) / Σmax(a,b).
형질은 “보이는 모양”이 아니라 의미상 필수 조건으로 정의한다. 예를 들어 GanttChart의 tabular는 1(부수적)이다. 표처럼 그려지지만 표 격자가 없어도 Gantt는 Gantt이기 때문이다.
형질 행렬에서 49 × 49 거리를 뽑고(Part 1-1 행렬), 각 유형의 최근접 3개를 확인해 계통이 상식과 어긋나지 않는지 봤다. 그다음 수요 분포를 공급 분포로 옮기는 최소 비용(EMD)을 계산해 “어떤 수요가 어디로 흡수되는가”를 봤다.
총 이동 비용 EMD = 0.292. mass는 전체 수요 대비 비중, unit dist는 그 이동의 형질 거리다. 상위 5개 흐름이 전부 List로 향한다 — 이것이 “List 블랙홀”의 정량적 근거다.
계통을 손으로 그리기 전에 기계적으로도 묶어봤다. UPGMA는 가장 가까운 둘을 계속 합치는 방식이라, 합쳐진 순서(height가 낮을수록 먼저)가 곧 “얼마나 형제인가”다.
PieChart ↔ DonutChart, SWOT ↔ Quadrant, SectionDivider ↔ Ending, Location ↔ Highlight, LineAreaChart ↔ ComboChart. 이들은 형질이 아니라 표현 규약으로만 갈린다. 분류기에 형질만 주면 이 쌍은 원리적으로 못 맞춘다 — 별도 규칙이 필요하다.
점수가 높을수록 그 형질 하나로 소수 유형을 정확히 집어낸다. 1개 유형만 가리키는 형질(long_form, qa, conversion …)은 순서도의 말단에, 여러 유형을 크게 가르는 형질(equal_parallel, multi_unit)은 앞쪽에 두는 근거가 된다.
여기까지는 사람이 정한 형질이므로 “내 마음대로 만든 것 아니냐”는 반론이 가능하다. 그래서 형질과 무관하게 만들어진 세 가지 다른 자료 — 단어장 정의문, 실제 태깅 사유, 운영 혼동 로그 — 와 얼마나 맞는지 검정했다.
텍스트는 TF-IDF 코사인 거리로 만들었다(어휘 4,000). 순열 499회로 유의성을 봤다. r은 −1~1이고, 이런 종류의 비교에서 0.4는 상당히 강한 일치다.
형질 MDS와 텍스트 MDS를 회전·축척 정렬했을 때 잔차 0.993, 형질과 혼동은 1.702. 텍스트는 형질과 겹치지만 혼동은 겹치지 않는다. 같은 결론이 두 방법에서 나왔다.
혼동이 잦은 쌍에 대해, 유저·태깅 사유 문장에서 어떤 형질 단서가 나올 때 A로 갈리는지 정보이득(IG)으로 측정했다. 형질 모델이 지목한 차이와 실제 판별 단서가 같으면 “일치”다.
형질 모델은 tabular(표 격자) 하나로 가른다고 보지만, 실제 사유문에서는 표 격자보다 “대상 간 대조· 공통 기준” 단서가 더 강하게 나온다. 유저는 표를 비교하려고 쓰기 때문이다. 순서도에서 이 경계를 물을 때는 격자 유무만 묻지 말고 비교 의도를 함께 물어야 한다.
LongFormTextLayout → List 19,891건, HighlightedMessage → List 8,368건은 rule에 의한 강제 리맵이다. 두 쌍 모두 형질 거리가 1.00, 즉 최대로 먼 쌍이다. 이 혼동을 “비슷하니까 섞였겠지”로 읽고 폴백에 복사하면 잘못된 후보를 대량 노출하게 된다. 그래서 이 두 유형은 List 폴백 금지 목록에 들어간다.
Timeline·BigNumber처럼 세 공간이 겹치는 유형은 경계가 안정적이다. List·Opening처럼 합치가 0인 유형은 운영 규칙이 형질과 다르게 움직이고 있다는 신호다.
후보가 rule 또는 빈 결과로 List가 되려는 순간, 아래 조건을 먼저 확인해 해당하면 List 대신 지정된 유형으로 보낸다.
정책 원본(체인·금지 목록·가드)은 prisonbreak에 두고, rat-monitor에서 검색 실험으로 검증한 뒤 miricanvas-iui에 복제한다. 세 곳이 각각 정의를 갖지 않도록 한다.