티스토리 뷰

Python으로 입법을 연구합니다.

전) 국회 법제실, 예산정책처
서울대학교 행정대학원 박사과정 재학 중

 

더 좋은 법률을 만들기 위해 Python으로 법률을 분석한 사례를 공유합니다.

  • 사용 라이브러리: pandas, requests, urllib, beautiful soup, re, networkx, community, matplotlib
  • 법률을 잘 몰라도 듣는데 어려움이 없습니다.

0. 도입: '법률'이라는 프로젝트

  • 70년간의 초장기 프로젝트, 입사와 퇴사를 반복하는 개발자
  • 코드의 길이는 2,500만 글자
  • Python으로 '법률' 프로젝트에 조금이나마 커밋해봅시다.

1. 법률간 충돌 자동검사

  • 입법상 착오로 법률간 인용연결이 끊어지는 경우(404!)
  • Python으로 법률의 에러를 찾아봅니다.
  • 조문별 웹크롤링과 키워드 검사

2. 형벌 규정 전수조사

  • 박나래씨가 7년 징역에 처할 뻔한 사연은?
  • 형벌이 많아지는 '과잉범죄화', 형벌이 강해지는 '과잉형벌화'. 논의는 많은데, 데이터가 없는 상황
  • 키워드 검사 & 정규표현식으로 형벌 조항 식별, 데이터 분석

3. 법률 네트워크 분석 Ⅱ

  • 2018 PyCon KR 속편
  • Community detection(Louvain method) & visualization
  • 일반법 vs. 특별법: node type으로 네트워크를 나눠봅니다.

4. 결론: Python for a better law

  • 계속 복잡해지는 법률, 자동화된 도구가 필요
  • "What will happen if lawyers can program their own computer?"

 

https://www.pycon.kr/program/talk-detail?id=75

 


 

법률을 디버깅하다

 

입법을 파이썬을 이용해 분석하고 있어, 해당 사례를 공유.

 

법률이라는 프로젝트

 

무려 7만조문

수많은 개발자들이 입사 퇴사 반복

오래된 코드에는 주석, 문서 부실

재개발이나 리팩토링이 어려움

 

 

 

특례제한 코드의 기획

 

취지 : 국회 스스로 측혜입법을 제제해보자.

왼쪽에 특례제한법 목록

오른쪽에서는 실제 규정

그럼 왼쪽과 오른쪽이 같아야 한다.

그런데 특례가 바뀌거나 없어지는 경우가 있다. 반영이 안 된것.

 

사고사례

집단 에너시사업법 부담금. 특례제한법에 부감금에 별표에 규정된이락 하는데 별표가 없다.

A법이 특례 목록인데 규정에 없다. 그래서 소송한 경우가 있어. 그래서 많은 사람이 고통을 받음.

 

분석 순서

왼쪽의 목록을 추적하는 URL를 만듬 -> 조문 텍스트를 추출 -> 키워드 검사 -> 이상 보고서 생성

우리나라 법률은 서비스를 하고 있는게 고유의 주소가 있어.

버전이 있는 문서다 보니 버전관리를 해야 함.

 

 

기본세팅

pd, 판다스, 퓨티풀스프, 별표 목록 엑셀 읽기 등

 

 

---

 

1. URL 생성

 

국가법령정보 한글 주소서비스. 다행히 한글을 적으면 뜬다.

법재체에서는 iframe을 사용.

그래서 코드를 보면 내용은 없고 1차 주소를 얻어서 2차로 법률 내용을 뿌려주는 방식.

그래서 사이의 정보를 가져와야 함.

그래서 1차 크롤링 주소를 만들고 2차 클롤링을 위한 주소를 생성.

 

2. 텍스트 가져오기

해당 URL에서 텍스트를 가져와서 생성.

 

3. 키워드 검사

꼭 필요한 단어가 있는지 검사

- 국유재산, 국공유, 무상, 감면, 양어 등의 용어

조문별로 키워드를 바꿔가면서 적용.

해당 키워드를 비교 분석하면서 분석

그런데 키워드를 동적으로 불러와서 검사할 필요가 있다.

 

4. 결과 확인

결과 인용연결 오류 30건, 누락 18건으로 나옴

 

 

박나래의 수제향초

징역 7년의 위기. 가습기 사건으로 화확물 안전법 생김

그래서 수제향초도 규제대상으로 포함.

심지어 무상으로 주는 것도 규제대상에 포함.

참고로 검사하는데 35만원씩 듬.

 

과잉범죄화, 과잉형벌화 문제

  • 과잉범죄화 = 형벌규정이 증가하는 것
  • 과잉형벌화 = 처벌의 강도가 상향되는 것

그런데 데이터가 없다. 다들 썰만 풀었어.

이 현상에 대한 전수조사는 없었음

 

분석순서

1. 클롤링 : 시점별 법률 텍스트

2. 전처리 : 텍스트를 문장별로 분리 및 형별 조항만

3.추출 : 숫자만 가져옴

4. 분석 : 형벌의 평균수준

 

크롤링결과

1. 모든 법률을 1개 조문당 처리

2. 전처리 결과 : 분장별로 분리하고 형벌 조항만 구분,

결과적으로 2가지만 나옴

 

 

추출

'년 이하의 징역'으로 구분. 의외로 맞춤범 틀리는 경우가 종종 있어. 가운데 점 같은 거.

정규식으로 숫자만 추출

re.findall(), "/d+"으로 검색.

 

키워드는 형별 규정이 규칙적임.

겹치는 키워드가 있음. 만원 단위별 구분 필요.

예저에는 벌금이 아니라 발김으로 나옴. 자동 번역때문에.

금고도 김고로 나옴.

 

결과

 

결과를 보니 사형도 있아.

해당 데이터를 판드스로 불러옴

 

 

분석

해당 데이터를 가지고 분석.

형벌지수를 구하기 위해 A년 이하는 A, 이상은 2A, 사형 및 무기지역은 25식으로 설정.

 

결과적으로 과잉범죄화 추세가 있다.

자유형은 금고 징역 사형동

벌금형은 벌금.

자유형은 연평균 2.3%증가. 

 

자유형 평균 형량이 내려감.

85년 7.25년 에서 16년 6.26년

선행연구는 평균형량이 올랐는데 해당 원인에 대해 분석

 

x축이 형별지수 2016년 까지 어떤 형기에서 조문이 줄어든 적이 없어.

모든 형벌이 늘어나기만 했다.

가벼운 징역이 더 빨리 늘어나면서 평균 하락

과거보다 늘어나는 속도가 더 빠름

 

 

법률네트워크 분석

 

30년간 인용관계 데이터 구축

국토법이 제일 많이 인용됨. 그럼 왜?

결론은 토지 개발을 위한 각종 법의 특례를 규정하기 위해서.

토건이 정말 중요라다는 걸 앎.

 

작년에서는 네트워크를 못 그렸는데 이번엔 그려왔음

그림에서 노란색이 토건 클러스터.

이 그래프는 서로 많이 인용을 주고 받는 것을 가운데로 몰림.

민법 상법은 주변에 밀림

색깔은 커뮤니티 디텍션 알고리즘

 

louvain 알고리즘

빈 리스트를 만들고 값을 입력.

그런데 아직까지 방향성 있는 거는 파악 불가.

그래서 방향성을 제거.

그림을 그리 때 조심할 점.

맨날 섬 같은 노드가 있는데, 연결이 안된 것을 보함하면 이상하게 나와

그래서 자이언트 커넥트를 구함. 해당 기능으로 부분집합을 구함.

해당 기능을 추가하여 그래프를 예쁘게 만듬

 

파티션이라는 객체를 불러와서 작업

1500개의 법률을 넣으면 0~10까지 번호를 달고 나옴.

 

시각화

노드에 알파값, 그래프 생성 작업. 

이런 작업을 거치면 저 위에 멋진 그래프가 나옴.

 

 

 

특별법 증가의 효과를 분리하여 분석

 

특별법을 가정하여 작업, 및 검증

a와 b를 인용하는관계를 엣지리스트로 구분.

특별법으로 관련된 키워드가 잇는지 검사.

testin에 키워드를 넣고 해당 키워드가 있는지 테스트.

 

 

 

왼쪽은 11대 부터 19대 까지의 국회.

오른쪽은 가장 많이 인용하는 법률.

특별법은 항상 도시계획법을 가장 많이 인용함.

국토건에 관련된 것을 인용하는데, 19대에서는 805개로 늘어남.

이 사람들이 엄청난 인용을 만든것.

 

특별법이 없었다면 민법이 가장 인기가 좋았을 듯

 

 

마무리 

법률의 복잡성은 다 늘어나고 있어,

그래서 자동화 도구가 필요.

법대 교수님인데 사잉언스 논문에 게재한 노문.

 

법률 구하기 프로젝트

20년전에 답이 나와있어.

미국 프로그램이에서 상상하던 세계가 구현되어 있어.

이제 법률가 스스로 프로그래밍을 할 수 있는 미래.

다음 목표는 법률가.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함