티스토리 뷰
2018/01/29 - [프로젝트] - [Python] 법률 용어 학습 어플리케이션 Part. 1
제작 과정
법전 구한 뒤, 법률 용어 사전을 만들고 DB 구축해서 어플리케이션을 만드는 아주 간단한 구조 입니다.
Step. 01 법전 구하기
법전을 먼저 구해야 합니다. 변호사 시험이 헌법, 형법, 민법, 상법, 형소, 민소 로 6개로 이루어져 있기 때문에 이 6가지 법전을 한자버전으로 구합니다.
국가 법령 정보센터 사이트에 접속하면 어렵지 않게 hwp 파일들을 구할 수 있습니다.
Step. 02-1 한자사전 만들기
일단 한자사전을 만드는 과정이 있어야합니다. 한자사전은 naver 한자사전에서 크롤링 하여 각 단어들의 뜻을 찾는 방법으로 만들어볼 예정입니다.
과정은 다음과 같습니다. 가장 먼저 한자로 구성된 법문 중 한자만 저장합니다. 동시에 몇번 나왔는지도 같이 저장합니다.
이후 이를 가지고 네어버 사전에서 음과 훈을 찾아 딕셔너리형에 저장해줍니다.
dic3 까지 만들어 줬다면 dic의 출현 빈도와 합쳐 txt 파일(한자사전) 을 만들어 줍니다.
Step. 02-2 한자사전 만들기
Step. 02-1 에서 글자별 한자사전을 만들었다면 이제 정말 필요한 단어별, 법전별 한자사전을 만들어 줍니다.
법전을 한자를 제외한 나머지 문자들을 빈칸으로 변경한 뒤 빈칸을 기준으로 Split 하여 리스트를 만들어 줍니다.
만든 리스트를 기반으로 글자별 한자사전에서 찾아 한글단어로 변환합니다. 이때 한 글자에 여러개의 음이 있는 한자의 경우를 고려해주어야 합니다. 일단 맨 앞에 있는 음으로 치환해줍니다.
Step 2 까지 거치고나면 한자사전 txt 를 포함하여 단어별, 법별 문서 6개가 만들어져 있을 것입니다. 문서들은 chi, kor, cnt 3개의 열로 이루어져 있습니다.
Step. 03 - DB 연동하기
DB 를 연동해야 하는 이유는 어플리케이션의 모의고사와 오답노트 기능 때문 입니다. 물론 sql 이 아닌 txt 파일 형태로 저장하여 매번 불러오는 것도 가능할 수 있지만 효율이 떨어지는 것이 사실이며 외부 접근이 쉽다는 점 또한 단점으로 작용합니다.
SQL DB 에는 law_word_all 이라는 사전 table 과 userdb 라는 시험 결과 저장 table 두가지를 정의해줍니다.
step 03 에서는 step 02 에서 만든 한자사전을 db 로 옮기는 과정입니다.
sqlite3 을 이용했고 law_word_all 테이블은 kor, chi, cnt, lawtype 총 4개의 열로 구성하였습니다.
Step. 04 - Python 어플리케이션 만들기
어플리케이션에 필요한 메뉴는 크게 3가지로 구분할 수 있습니다. 단어별, 법전별 학습 기능, 모의 테스트 기능, 오답노트 기능 입니다.
이를 위한 주요 변수와 메소드는 다음과 같습니다. 각 기능에 따라 메소드를 달리 구성하였다는 것을 알 수 있습니다.
메뉴는 도식과 같이 구성하였고 저 흐름대로 프로그램을 작성하였습니다.
첫 메소드인 메뉴 선택은 가장 많이 사용되는 메소드 입니다. 어떤 기능을 선택할지, 각 메뉴에서는 어떤 기능을 실행시킬지 정하는 메소드 이기 때문에 메뉴 항목을 변수로 설정하고 그것을 출력하는 함수 입니다.
이 과정에서 정해진 범위의 숫자가 아닌 것을 입력 받았을 경우에는 오류를 출력해주는 에러 처리를 해주었습니다.
두 번째 메소드는 sql 쿼리를 만들어주는 메소드 입니다. 모든 메뉴가 sql 과 연동되어 있기 때문에 sql 쿼리를 만들어 주는 기능 또한 모든 메뉴에서 사용됩니다. table_name과 메뉴를 파라메터로 설정하여 각 메뉴 마다 다른 쿼리를 반환할 수 있게 해줍니다.
하지만 이 메소드는 단순히 sql 쿼리 문장만을 반환해줄 뿐 쿼리 실행 결과를 반환하지 않는 점을 알아 두어야 합니다.
sql 쿼리의 결과를 반환하는 메소드 입니다. make_sql 메소드에서 sql 문장을 받은 뒤 그것을 실행하고 결과를 반환하는 방식입니다.
learning 메소드는 학습하기로 하였을 때 실행하는 메소드 입니다. sql 을 통해 학습할 데이터를 가져온 뒤 learing detail 메소드를 실행시켜주는 함수 입니다.
learning_detail 은 학습 메소드와 오답노트 메소드에서 실행할 수 있는 메소드 입니다. 학습과 오답노트 학습 과정이 동일하기 때문에 detail 이라는 추가 메소드로 모듈화 해주었습니다.
detail 메소드는 학습인지 오답노트인지 판단한 뒤 학습할 데이터를 출력해주는 기능을 수행합니다.
test 모의고사 메소드는 데이터를 가져오고 시험보는 기능을 수행하는 메소드 입니다.
이 메소드에서 매번 보는 시험을 userdb 에 입력해주는 기능이 핵심입니다.
오답노트는 userdb 에서 틀린것만 가져와 출력해주는 메소드 입니다.
Step. 05 - 배포
배포 할 경우 py 파일과 db 파일 두가지 파일만 다운 받으신다면 Python 이 설치되어 있는 어느 컴퓨터든 바로 실행이 가능합니다.
Step. 06 - 실행 영상
보완 필요한 부분
문제 출제 부분이나 학습과정에서 보다 학습에 효율적인 알고리즘으로 구성하면 더 적은 양의 공부를 통해 최고의 학습성과를 달성하는 것이 가능하지 않을까하는 고민이 있다.
학습과정의 경우 지금은 출제 빈도순으로 출력하고 있지만 모의고사 결과와 비교하여 잘 알지 못하는 것들을 알아내 우선으로 출력해주는 것이 가능하다면 더 좋을 것 같다.
문제 출제의 경우 지금은 랜덤하게 출제하고 있으나 베이지안 분류기나 Knowledge Tracing 기술을 접목하여 더 효과적인 출제를 가능하게 하면 좋을 것 같다. 하지만 딥러닝 기술을 접목하기에는 데이터가 전혀 없다는 점이 문제이고 일반 머신러닝 분류기를 사용할 경우 크게 몇개의 클래스로 분류한 뒤 분류하는 것이 효과적인데 한자 학습의 경우 그 초기 분류를 어떻게 해야할지 알지 못하는 상태다.
부족한 블로그에 방문해 주셔서 감사합니다.
잘못된 부분이나 질문이 있으시면
댓글로 말씀해주세요.
금방 확인하고 피드백 드리겠습니다.
좋은 하루 되세요. ^^
'프로젝트' 카테고리의 다른 글
컨설턴트의 고객 여정 지도 (Customer Journey Map) 작성 가이드 (0) | 2022.04.24 |
---|---|
[로스쿨 면접] Django 기반의 상담 예약 프로그램 (0) | 2021.07.20 |
공공데이터 open api 사용법 (0) | 2019.01.27 |
[변호사 시험] 1 ~ 7 회 합격률 순위 변화 그래프 (2) | 2018.05.01 |
[Python] 법률 용어 학습 어플리케이션 Part. 1 (0) | 2018.01.29 |
- Total
- Today
- Yesterday
- 서울근교캠핑
- 강원도캠핑
- 가평여행
- 글램핑
- Oracle
- 영월여행
- 가족캠핑
- 가족여행
- 알고리즘
- 머신러닝
- 여름휴가추천
- 영월캠핑
- 커플여행
- python
- 캠핑초보
- 파이썬
- sql
- 캠핑장추천
- 강원도여행
- 반려견캠핑
- bukhansannationalpark
- 여름캠핑
- 가평캠핑
- 자연힐링
- SeoulTravel
- Koreancuisine
- 계곡캠핑
- 백준
- 카카오
- 여름휴가
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |