- Australian law map은 Open Australian Legal Corpus의 법률·규정·판례를 2차원 의미 공간에 배치해, 호주 법체계의 구조를 한눈에 탐색할 수 있게 함
- 지도에서는 같은 주제보다 문서 유형의 문체와 목적 차이가 더 강하게 작용해, 판례와 입법 사이에 보이지 않는 장벽이 나타남
- 관할권별 경계는 뚜렷하지 않지만, 말뭉치에는 저작권 제약으로 Commonwealth·New South Wales 판결만 포함되고 Victoria·Northern Territory·Australian Capital Territory 입법은 빠져 있음
- 이민법·가족법·실체 형사법은 판례 영역에서 가장 고립되고 입법 문서와도 멀며, 개발법 판례는 입법 문서에 가장 가까운 분야로 나타남
- 구현은 텍스트 임베딩, PaCMAP 차원 축소, HDBSCAN 클러스터링, tf-idf 라벨링, 수동 병합, Plotly 시각화를 조합한 범용 의미 매핑 절차로 재사용 가능함
호주 법률을 의미 공간에 배치한 지도
- 지도는 호주의 법률·규정·판례를 2차원 공간에 배치해 문서 간 의미 유사도를 거리로 보여줌
- 각 점은 Open Australian Legal Corpus의 고유한 법률·규정·판례 문서를 나타냄
- 컴퓨터에서 문서 위에 마우스를 올리면 제목, 유형, 관할권, 범주를 볼 수 있고, 클릭하면 문서를 열 수 있음
- 문서는 범주별로 색이 다르며, 범례에서 범주를 클릭하면 해당 범주를 제외하고 더블클릭하면 해당 범주만 표시함
판례와 입법 사이의 보이지 않는 장벽
- 지도에는 판례와 입법 문서를 나누는 보이지 않는 장벽이 나타나며, 북극과 남극처럼 양쪽으로 갈리는 구조를 보임
- 같은 주제를 다루더라도 판례는 판례끼리, 입법 문서는 입법끼리 더 많은 공통점을 가짐
- 이 차이는 주제 자체보다 판례와 입법의 문체와 목적 차이가 의미 공간에 강하게 반영된 결과로 볼 수 있음
관할권별 경계는 뚜렷하지 않음
- 관할권별로 문서를 색칠해도 서로 다른 관할권 문서 사이에 뚜렷한 경계가 드러나지 않음
- 단, Open Australian Legal Corpus에는 저작권 제약 때문에 Commonwealth와 New South Wales 판결만 들어 있고, Victoria·Northern Territory·Australian Capital Territory 입법은 빠져 있음
- 지도상의 관할권 혼합은 호주 주법과 연방법이 비교적 동질적일 가능성을 보여줌
- 남아 있는 주법·연방법 간 경계도 관할권의 법리보다 주제 차이와 더 잘 대응함
- 이는 주·연방 법원과 의회가 하나의 법 체계 안에서 운영되고, High Court of Australia가 헌법상 권리와 권한의 한계를 둘러싼 정부 간 분쟁을 중재하는 구조와 맞아떨어짐
판례와 입법의 본토와 섬
- 판례와 입법 영역 안에는 대부분 문서가 속한 본토와, 같은 주제의 문서들이 모인 여러 섬이 있음
- 본토가 존재한다는 점은 대부분의 판례와 입법이 하나의 연결된 지식 풀에서 나오고 다시 그 안으로 들어간다는 점을 시사함
- 일부 입법·판결 섬은 본토와 완전히 떨어져 있음
- Tariff concession orders는 수입 가능 상품의 기술적 범주를 규제해 고유한 군도를 형성함
- airworthiness directives는 항공기 부품 규제에 초점을 맞춘 큰 섬을 형성함
- 표면적 기준 가장 큰 섬은 거의 전부 이민 사건으로 구성됨
- 19개 가능한 법 분야 중 이민법과 가족법만 본토 안보다 본토 밖에서 더 자주 나타남
- 가족법은 이미 법의 나머지 부분과 다소 고립되어 있다는 인식이 있었고, 지도도 그 고립성을 뒷받침하는 형태를 보임
- 이민법 사건들은 이민법에 특화된 입법과 판례를 참조하는 경향이 있어 비교적 자기완결적으로 나타남
형사법·가족법·이민법의 위치
- 이민법, 가족법, 실체 형사법은 위도상으로도 서로 가깝게 군집해 잠재적 연결을 보임
- 세 분야는 모두 개인의 삶을 규제하는 데 특별히 초점을 맞추며, 법인의 재산권만을 다루는 데 그치지 않음
- 이 세 분야의 판례는 지도상에서 입법 문서와 가장 멀리 떨어진 판례 유형임
- 이 거리는 해당 분야가 입법을 전혀 인용하지 않는다는 뜻은 아니며, 다른 판례 분야보다 선례에 더 자주 의존할 가능성 또는 복잡한 다차원 관계를 2차원 지도로 표현하는 한계와 관련될 수 있음
- 입법 문서와 가장 가까운 판례 분야는 개발법이며, 지역 계획 법률·규정과 밀접하게 다루는 경우가 많기 때문임
- 형사법의 큰 육각형 모양 섬은 주로 실체 형사법 사건으로 구성되고, 사법 본토에 연결된 형사법 사건은 형사절차 관련 사건이 많은 편임
- 이는 실체법을 형사법과 민사법으로 나누는 큰 구분, 그리고 형사절차법과 민사절차법이 자연적 정의의 여러 공통 원칙을 공유한다는 점과 잘 맞음
판례법은 연속체처럼 보임
- 판례 본토를 아래에서 위로 따라가면 호주 판례법은 엄격히 나뉜 구조보다 연속체에 가까움
- 개발 사건은 환경 사건과 연결되고, 환경 사건은 토지 사건과 이어짐
- 토지 사건은 계약 사건과 맞닿고, 계약 사건 북쪽에는 절차 사건, 서쪽에는 지식재산 사건, 동쪽에는 상사 사건이 있음
- 절차법 북쪽에는 형사법과 명예훼손이 있고, 지식재산법 서쪽으로는 행정법·보건 및 사회서비스법·고용법·과실·운송법이 이어짐
- 상사법 동쪽에는 형평법과 가족법의 일부가 있음
- 개발·환경·토지법이 서로 얽혀 있고, 과실 사건이 교통사고·직장 사고 청구와 많이 관련되어 운송법·고용법 근처에 군집하는 점은 기존 법 분야 관계 이해와 잘 맞음
- 일부 토지법 판결은 상사·절차 사건과 겹치며, 이 줄무늬 형태의 사건들은 채무불이행이 관련된 모기지 분쟁에 초점을 맞추는 경향이 있음
- 운송법 판결은 본토에 연결된 그룹과 실체 형사법 섬에 연결된 그룹으로 나뉨
- 형사법 섬에 연결된 운송 판결은 운송 면허 정지에 초점을 맞추는 경우가 많음
- 본토에 연결된 운송 판결은 운송 사고에 초점을 맞추는 경향이 있음
의미 매핑으로 확인한 구조와 확장 가능성
- 지도는 판례와 입법의 알려진 차이를 반영하면서, 법 분야 사이의 잠재적 구분과 숨은 연결도 드러냄
- 특히 다음 패턴이 두드러짐
- 이민법, 가족법, 실체 형사법은 지도상 가장 고립된 판례 분야임
- 이민법, 가족법, 실체 형사법은 입법 문서에서 가장 먼 판례 분야임
- 개발법은 입법 문서와 가장 가까운 판례 분야임
- 호주 주법과 연방법 사이에는 문체, 해석 원칙, 일반 법리 면에서 눈에 띄는 구분이 드러나지 않음
- 3차원 지도를 만들면 2차원에서 표현하기 어려운 새로운 숨은 관계를 드러낼 수 있음
- 다른 주·준주의 판례와 입법을 추가하면 호주 법 지도의 해상도를 높일 수 있음
- UK, Canada, New Zealand 같은 다른 common law 국가의 법률 문서를 추가하면 법체계 간 역사적·지속적 상호작용을 포착할 수 있음
- 의미 매핑은 호주 법에만 한정되지 않고, 큰 비정형 데이터셋의 구성과 구조를 빠르게 이해하는 데 쓸 수 있음
구현 절차: 벡터화에서 시각화까지
- 임의의 데이터셋을 의미 지도화하는 과정은 크게 벡터화, 클러스터링, 라벨링, 차원 축소, 시각화로 나뉨
- 텍스트의 의미를 숫자 집합인 벡터 또는 임베딩으로 표현하고, 벡터 유사도를 이용해 문서 간 의미 유사도를 대략 파악함
- 텍스트 임베딩 모델은 Hugging Face의 Massive Text Embedding Benchmark (MTEB) Leaderboard를 참고해 선택함
- 지도 제작 당시에는
BAAI/bge-small-en-v1.5가 크기 대비 좋은 오픈소스 모델 중 하나였고, 현재는 해당 모델의 파인튜닝인avsolatorio/GIST-small-Embedding-v0가 더 높은 순위를 기록함 - 현대 텍스트 임베딩 모델은 한 번에 벡터화할 수 있는 토큰 수인 컨텍스트 윈도우가 고정되어 있음
GIST-small-Embedding-v0의 컨텍스트 윈도우는 512토큰임- 단어 1개는 대략 0.75토큰으로 볼 수 있어 약 384단어를 한 번에 벡터화할 수 있음
- 긴 텍스트는 512토큰 이하 청크로 나누고 각 청크를 벡터화한 뒤 평균 벡터를 만들어 텍스트 전체의 평균 의미를 표현함
- 단순히 512번째 토큰마다 자르면 의미상 중요한 정보가 끊길 수 있으므로, 의미 있는 구간에서 나누는 semantic chunker가 필요함
semchunk는 연속 개행·탭처럼 의미적 구분을 나타내는 문자 시퀀스를 찾아 재귀적으로 텍스트를 나누는 Python 라이브러리임
차원 축소와 클러스터링
- 벡터화한 데이터는 고차원 벡터에서 2차원 또는 더 낮은 차원 좌표로 줄여 지도에 표시함
- 차원 축소는 고차원 데이터 클러스터링을 어렵게 만드는 차원의 저주를 완화하는 데도 쓰임
- 사용한 차원 축소 모델은 PaCMAP이며, 전역·지역 구조를 모두 보존할 수 있는 빠르고 정확한 모델로 활용됨
- 지도 표시용으로는 2차원을 사용했고, 클러스터링을 쉽게 하기 위해서는 80차원으로 줄임
- 약 400개 데이터포인트를 가진 다른 데이터셋에서는 80차원보다 2차원이 더 잘 작동했으므로, 데이터에 따라 여러 차원을 시험해야 함
- 클러스터링에는 HDBSCAN을 사용함
- HDBSCAN은
k-means와 달리 모든 데이터포인트를 반드시 클러스터에 넣지 않음 - 지도 제작 당시 Open Australian Legal Corpus에는 218,336개 법률 텍스트가 있었고, 84,780개(38.8%)는 클러스터링되지 않음
- 추가로 10,100개(4.6%)는 의미 있는 공통 특징이 없어 보이는 클러스터에 배치됨
- 총 94,880개(43.4%) 문서는 의미 있는 클러스터에 배정되지 않아 지도에서 제외됨
- 당시에는
fast_hdbscan을 사용했지만, 이후 일반 HDBSCAN보다 군데군데 빈 클러스터를 만들기 쉽다는 점을 발견해 코드 예시는 일반 HDBSCAN을 사용함 min_cluster_size는 클러스터의 최소 데이터포인트 수를 정하며, 낮을수록 더 세밀한 클러스터, 높을수록 더 넓은 클러스터가 만들어짐- 최종 작업에서는
min_cluster_size를 50으로 두어 507개 고유 클러스터를 만든 뒤, 이를 수동으로 19개 법 분야로 줄임
라벨링과 수동 병합
- 클러스터에 의미 있는 라벨을 붙이기 위해 tf-idf로 각 클러스터의 상위 토큰을 확인함
- tf-idf는 특정 클러스터에서 자주 나오면서 전체 데이터셋에서는 상대적으로 덜 흔한 토큰에 높은 점수를 줌
- 상위 4개 토큰이 같은 클러스터를 먼저 병합했지만, 507개 중 2개 클러스터만 제거됨
- 이후 상위 토큰을 기준으로 클러스터 병합 규칙 337개를 수동으로 만들었고, 최종적으로 19개 법 분야로 정리함
- 수동 병합 과정에서는 데이터가 범주를 이끌도록 하려 했지만, 클러스터 수가 줄어들수록 어떤 범주를 포함하고 제외할지 어려운 결정을 해야 했음
- 19개 범주를 서로 구분 가능한 색으로 표시하는 일도 쉽지 않았고, Sasha Trubetskoy가 공개한 색상 팔레트를 사용해 해결함
- 수동 병합은 데이터 구성에 대한 깊은 이해가 필요하거나 최종 결과의 정밀도와 정확도가 특히 중요할 때 적합함
- 그 외에는 클러스터링 모델을 조정해 더 적은 클러스터를 만들고, 상위 tf-idf 토큰 3개 또는 대규모 언어 모델로 자동 라벨링하는 방식이 더 유리함
- 자동 라벨링 예시는
gpt-4또는 OpenAI API 호환 모델에 무작위 문서 스니펫과 상위 tf-idf 토큰을 제공해 4단어 미만 라벨을 만들도록 구성함
Plotly 시각화와 한계
- 최종 지도는 Plotly로 2차원 또는 3차원 산점도를 만들 수 있도록 구성함
- Plotly의 주요 한계는 지도 확대 시 데이터포인트 크기를 함께 키울 수 없다는 점임
- 수십만 개 데이터포인트가 있을 때 점들이 겹치거나, 점 크기를 줄이면 확대 상태에서 식별하기 어려워짐
- 일부 Plotly 문제는 사용자 정의 CSS와 JavaScript로 우회했지만, 해당 코드는 공유하지 않음
- 시각화 이후에는 지도의 지형적 패턴, 이상치, 섬, 데이터의 기본 구조를 살피는 분석 단계가 이어짐
- 같은 기법을 Common Crawl 말뭉치에 적용하면 인터넷의 고해상도 의미 지도를 만들 수 있다고 봄