2026. 5. 14. 19:46ㆍRe-design!
시민의 목소리를 데이터로
UI 디자인을 할 때 늘 부딪히는 문제가 있습니다. 다양한 의견을 가진 사용자의 목소리를 어떻게 정리하고 전달할까. 개개인의 목소리에 집중하면 맥락과 목표가 저마다 다른 모두를 만족시키기 어렵고, 그렇다고 평균을 내면 누구도 대표하지 못해 모두가 만족하지 못하는 디자인이 됩니다. 그래서 보통 퍼소나로 사용자를 몇 가지 유형으로 나눠 접근하게 됩니다.
정원오 서울시장 후보가 만든 '서울의 목소리'는 비슷한 문제를 도시 단위로 마주하고 있습니다. 서울 시민의 불편과 고충을 수집해 데이터 기반 해법을 찾고, 그 데이터를 공공데이터로 모두에게 공개하고 있습니다. 수천명의 시민 목소리를 어떻게 정리해 보여주고 있는지, 거기에서 어떤 정보를 얻어낼 수 있는지 시각화 측면에서 살펴보았습니다.
설문을 통해 시민의 의견을 수집하는데, 세개의 주관식 문항이 주된 질문입니다.
- 서울 생활에서의 고충
- 차기 서울시장에게 바라는 점
- 서울하면 떠오르는 키워드
정성 데이터를 보여주는 방식
서울의목소리 사이트는 데이터를 두 갈래로 보여줍니다. 개별 목소리를 그대로 보여주는 방식과 통계로 보여주는 방식입니다.
개별 목소리
- 지도 위 시각화: 응답한 위치마다 카테고리별 픽토그램과 색으로 구분된 마커를 띄우고, 클릭하면 한 명 한 명의 글을 읽을 수 있습니다.
- 카드 목록: 의견을 카드 형태로 나열해 훑어볼 수 있게 했습니다.


시민 개개인의 목소리가 단위입니다. 개개인의 목소리가 흐려지지 않고 그대로 전달된다는 장점이 있지만, 수천개나 되는 모든 의견을 모두 읽기는 어렵고 전체 그림이 전달되지는 않습니다.
통계
- 막대 그래프, 파이 차트 - 범주별 빈도 (전체와 세분화)
- 버블 차트 (키워드 빈도, 워드클라우드의 변형)


카테고리, 성별, 세대, 지역구처럼 정해진 값을 가지는 범주형 변수는 비율을 계산할 수 있으니 막대 그래프나 파이 차트 같은 시각화 방법을 많이 사용합니다. 그리고 세대나 성별 같은 범주로 세분화하여 어떤 차이가 있는지 세그먼트 분석도 많이 합니다. 여기에서는 범주를 하나 하나를 바꿔가며 비교하는 (stacked in time) 방식을 사용하였는데, 공간에 펼쳐놓으면 (adjacent in space) 한눈에 비교할 수 있어 좋습니다.
아래는 고충 카테고리를 연령별로 순위 변화를 띠 형태로 쌓아놓은 충적도(Alluvial Diagram)로 그린 것입니다. 연령대라는 변수에 따라 어떤 고충이 있는지 교차분석할 수 있습니다. 순위가 바뀌면 단층처럼 끊어져 보여 변화가 강조됩니다. 남성은 거의 모든 연령대에서 집값에 대한 고민이 가장 많고. 40대까지는 출퇴근 교통에 대한 고충이 2위였지만 50대부터는 낮아지고 물가 생활비가 x자로 교차하며 더 높아지는 것이 보입니다. 은퇴 연령대를 생각하면 납득이 됩니다.

하지만 20,30 대 여성에서는 전혀 다른 모습인데요. 남성 응답에서는 거의 보이지 않는 안전·치안에 대한 고충이 가장 높습니다. 특히 20대에서는 71%가 안전·치안을 서울의 가장 큰 고충으로 얘기하면서 여성을 대상으로 하는 범죄와 차별에 대해 큰 목소리를 내고 있습니다. 남성과 여성이 전혀 다른 서울에 살고 있는 셈입니다. 이 차이는 뒤에서 좀 더 자세히 살펴 보도록 하겠습니다.

주관식 응답의 시각화
시각화는 보통 정량 데이터를 다룹니다. 빈도, 비율, 추세 처럼 수치화 할 수 있는 데이터는 막대·선·지도 같은 익숙한 형태로 옮길 수 있습니다. 반면 정성 데이터를 시각화하는 일은 훨씬 까다롭습니다. 가장 익숙한 방식이 워드클라우드인데, 단어를 세어 정성을 정량으로 환원하는 방식으로 기계적으로 쉽게 처리할 수 있기 때문입니다. 하지만 그 과정에서 위계도 맥락도 담기지 않는 문제가 있습니다. 주관식 설문 같은 자유 응답을 분석할 때는 응답에 레이블링을 하고 이를 토대로 귀납적으로 범주를 만드는 코딩 작업을 거칩니다. 빈도를 계산하면 위에서와 같은 범주형 데이터를 시각화하는 방식을 사용할 수 있습니다.

서울하면 떠오르는 키워드 같은 열려있는 질문에 대해서 버블 차트 형태로 Top 10 키워드를 보여주고 있습니다. 보통 워드클라우드를 많이 사용하는데 빈도에 따라 단순히 글자 크기를 다르게 하면 같은 빈도라도 긴 단어는 시각적으로 더 커보여서 왜곡할 수 있습니다. 이런 경우 버블의 크기로 나타내면 정량적인 정보를 더 잘 가늠할 수 있습니다. 이때 정량값이 시각적 면적에 비례하도록 그리는 게 중요합니다. 여론조사 꽃이 후보 적합도를 지름에 비례하게 그리는데요. 지름을 값에 맞추면 면적은 제곱에 비례해 커지기 때문에, 실제 차이보다 훨씬 크게 인식됩니다. 차이를 강조하려는 의도일 수도 있지만, 그 강조가 인지를 왜곡하기도 합니다.
키워드를 보여주는 방식은 최상위 빈도 일부를 보여주는데 그치는 경우가 많습니다. 표준분포에서는 주요 값이 과반을 차지하는 것과 다르게 이런 정성값은 긴 꼬리 분포가 되는 경우가 많아 상위 일부에 그칩니다. 이 데이터에서도 상위 10개가 전체의 약 30% 만을 설명합니다.
전체의 큰 모습을 보여주면서도 개별 목소리의 디테일을 잃지 않는 시각화는 가능할까요? 이 빈자리를 어떻게 메울 수 있을지 살펴보겠습니다.
서울 키워드 지도 - 워드클라우드의 대안
모든 키워드를 표시하면서도 복잡해 보이지 않으려면 시각적 위계를 갖추는 것이 핵심입니다. 정보량이 많더라도 위계가 있으면 인지 부담을 줄일 수 있습니다.
정보 위계를 만들기 위해 어피니티버블을 사용했습니다. 임베딩 클러스터링과 LLM을 이용해 사람이 하는 범주화 코딩 작업을 간소화한 도구입니다. 비슷한 키워드를 묶어 레이블을 붙이고, 한 번 더 큰 도메인으로 분류해 3단계의 계층을 만들었습니다. 그렇게 정리한 데이터를 가지고 개별 키워드 하나하나가 드러나도록 force 시뮬레이션으로 키워드가 겹치지 않게 배치했습니다. 워드클라우드는 단어를 무작위로 배치하는 반면에 의미가 가까운 키워드가 자연스럽게 모이도록 공간의 위치가 정보값을 가지도록 했습니다. 가장 큰 위계는 색상으로 구분되어 쉽게 인지할 수 있습니다. 비슷한 의미 덩어리를 묶고 요약 레이블을 붙여 주었습니다. 클러스터 안에는 개별 키워드가 모두 살아 있어 확대하면 확인할 수 있습니다. 어피니티버블이 보로노이트리맵으로 위계와 크기로 정량적 비율을 잘 나타내는데 초점을 맞추었다면 워드맵은 위계를 조금 흐리게 하는 대신 개별 텍스트와 공간적인 위치정보를 강조한 자매 시각화 방법입니다.

이렇게 보면 전체의 시각적 위계와 의미 유사도가 함께 드러나는 키워드 지도가 됩니다. 키워드에는 숨겨진 맥락이나 여러 의미가 있을 수 있어서 분류가 완벽하게 객관적이지는 않습니다. 다른 관점으로 해석할 여지도 있고 기계 분석의 한계도 있습니다. 하지만 빠르게 전체적인 지형도를 파악할 수 있다는 장점이 있습니다.
여기서 저는 한강을 남산, 경복궁, 광화문 등과 함께 서울의 랜드마크로 묶었습니다. 글로벌, 다양성, 인프라, 편리함 등은 역동적 정체성으로, 수도·중심 같은 단어는 수도 상징성으로 묶었습니다. 이 세 범주는 서울의 긍정적인 부분에 해당합니다.
나머지는 부정적인 이미지를 나타내고 있습니다. 각박하고 복잡한 대도시, 범죄의 위험, 차갑고 삭막하고 불평등한 도시, 인구 과밀로 인한 복잡함, 교통 혼잡, 비싼 집값 같은 키워드들이 서울의 이미지를 만들고 있었습니다. 상위 10개의 키워드로는 보이지 않던 서울의 양면성이 지도에 드러납니다. 긍부정 분석에 따라 컬러 맵핑을 해보아도 차이가 보입니다.

세대별로 갈리는 서울의 이미지
전체 오버뷰 말고 집단을 세분화해 보면 또 다른 발견이 보입니다. 세대별로 교차 분석을 하면 40대 이상은 서울을 눈에 보이는 랜드마크로 많이 인식하지만, 20대는 사회적 불평등과 과밀된 도시를 더 많이 떠올립니다. 같은 도시에서 세대에 따라 서울의 인상이 다릅니다.

데이터 분석의 한계 — 자발적 응답의 편향
여론조사처럼 무작위로 표집한 것이 아니라 응답자가 자발적으로 참여한 설문이라 선택편향(self-selection bias)이 있습니다. 자발적 참여의 편향은 보통 두 갈래로 나뉩니다.
동기 편향 — 불편을 크게 느끼는 사람일수록 응답 동기가 큽니다. 별로 불편한 게 없는 시민은 굳이 시간을 들여 길게 답을 쓰지 않습니다. 그래서 응답자 풀은 불만의 강도가 평균 이상인 시민 쪽으로 쏠립니다. 정책 입안 입장에서는 시급한 문제를 잘 잡아내는 장점이지만, 동시에 문제의 보편성을 과대평가할 위험이 있습니다.
도달 편향 — 사이트에 닿을 수 있는 경로 자체가 한정되어 있습니다. 어떤 채널로 홍보됐는지에 따라 응답자 풀의 인구 구성이 달라져 모집단을 충분히 대표하지 못하게 됩니다.
응답자 성별 연령별 분포를 보면 서울 시민 인구와는 구성이 많이 다릅니다. 20대에서 여성이 과표집되고 남성은 과소표집되었습니다. 온라인 설문 참여다 보니 60, 70대에서의 의견은 충분히 반영되지 않은 것 같습니다.
[응답자 vs 서울 인구 분포 비교 차트]

타임라인을 보면 이유를 알 수 있는데요. 4월 23일 정원오 후보가 트위터에 사이트를 알린 당일과 다음날 응답이 폭발적으로 증가했는데, 대부분이 20대 여성이었습니다. 특정 네트워크 안에서 리트윗과 노출이 일어나며 응답자 구성 자체가 한쪽으로 치우친 것으로 보입니다. 서울 시민에게 골고루 도달한 채널이 아니라 특정 커뮤니티에 집중된 채널이 되면, 그 채널의 인구 구성이 데이터의 인구 구성을 그대로 결정해 버립니다.
[타임라인 + 성-연령 히트맵]

여론조사에서는 이런 경우 응답자 분포를 인구 분포에 맞추는 셀 가중치를 적용해 보정합니다. 그런데 자발적 참여 데이터에 같은 방법을 적용하면 오히려 정밀도 과잉을 만들어 낼 수 있습니다. 가중치는 셀 안의 응답자가 비응답자를 대표한다고 가정하는데, 응답자 안에 이미 편향이 남아 있으면 가중치만으로는 그 집단을 대표하게 만들 수 없습니다. 아래 차이를 보면, 응답자 안에서도 응답이 폭증했던 이틀간의 20대 여성은 다른 날의 응답자와도 결이 다르다는 걸 알 수 있습니다. 하지만 앞에서 살펴본 20대 여성의 안전·치안에 대한 고충은 편향을 감안하더라도 보편적인 신호라는 것 역시 분명합니다.

그래서 이 데이터는 서울 시민 전체의 목소리를 대표한다기보다 참여한 사람들의 목소리로 읽는 게 좋겠습니다. 비율과 순위 같은 정량 수치를 일반화하려 하기보다, 어떤 목소리가 어떤 결로 모이는지 정성적인 측면에 초점을 맞춰 보는 것입니다. 이어지는 범주별 분석도 그런 시선으로 보면 좋겠습니다.
주요 범주별 서울 시민 고충 어피니티버블

안전·치안 카테고리에서는 여성 응답자가 압도적으로 많았습니다. 많은 여성이 여성 대상 범죄와 유해환경과 치안에 대해 불안해 하고 있습니다. 남성과 여성의 안전에 대한 체감이 확연히 다릅니다. 개별 시민의 목소리는 어피니티버블에서 확인할 수 있습니다.

이 범주는 성별·세대 구분 없이 고르게 응답이 모였습니다. 임금 대비 물가와 생활비가 급격하게 오르는 데 대한 고충이 공통된 목소리입니다. 개별 시민의 목소리는 어피니티버블에서 확인할 수 있습니다.

교통 범주는 다른 범주보다 구체적인 요구가 많이 보입니다. 지하철 혼잡, 도로 정체, 버스 배차, 철도 역 신설에 대한 요구가 큰 줄기를 이루고, 장애인 이동권 보장에 대한 목소리도 함께 들어볼 필요가 있습니다. 개별 시민의 목소리는 어피니티버블에서 확인할 수 있습니다.
정성 데이터에 어울리는 시각화를 향해
지금까지 정성 데이터의 시각화가 워드클라우드 같은 단순한 방식에 머물러 있었던 데는 이유가 있습니다. 응답 하나하나를 사람이 직접 읽고 범주를 만들고 코딩하는 일이 까다로웠기 때문입니다. 그래서 빈도라는 단일 축으로 환원하는 처리가 쉬운 방식을 택해, 맥락은 사라지고 위계와 의미의 인접성은 드러나지 않았습니다.
임베딩과 LLM은 범주화 코딩 작업을 상당 부분 자동화해 줍니다. 분석이 쉬워진 만큼 시각화도 한 걸음 더 나아갈 수 있습니다. 어피니티버블이나 워드맵처럼 정보를 위계화하고 위치에 의미를 담는 시각화가 그 빈자리를 채울 수 있습니다. 전체 지형도를 한눈에 보여주면서도 개별 목소리의 디테일을 잃지 않습니다. 시민의 목소리든 사용자의 응답이든, 정성 데이터를 다루는 자리라면 이런 시각화를 한 번 시도해 볼 만합니다.
한강을 떠올린 사람은 한강 근처에 살까?
마지막으로 가볍게 정성과 공간을 엮어보는 관찰 하나로 마무리하겠습니다. 키워드 데이터를 보다 보니 가벼운 호기심이 생겼습니다. 한강을 키워드로 뽑은 사람들은 한강 가까이 살고 있을까?

응답자 중 한강 인접 11개 구의 한강 키워드 응답 비율은 11.1%, 비인접 14개 구는 6.3%로 실제 응답에서도 약 1.8배 차이가 났습니다. 다만 동 단위까지 좁히면 경향이 약해집니다. 표본이 작아져 노이즈도 있겠고, 거주지와 상관없이 학교나 직장에 따라 매일 한강을 지나거나 주말에 한강을 자주 찾을 수도 있으니 강한 상관관계가 있지는 않을텐데요. 그래도 한강을 연상하는데 영향이 있긴 한 것 같습니다.