"제도와 인사의 관계성 데이터 처리 방법"의 두 판 사이의 차이

김바로 온톨로지 위키(ddokbaro's Ontology WIKI
이동: 둘러보기, 검색
(국사편찬위원회의 한국근현대인물자료)
(국사편찬위원회의 한국근현대인물자료)
221번째 줄: 221번째 줄:
 
   
 
   
  
  LEVEL_ID|LEVEL_XML im_101_20480|<person id="im_101_20480"><basics><nameList><name lang="kor">권혁진</name><name lang="chi">權赫晋</name></nameList><nationList><nation>한국인</nation></nationList><ageList><age no="1"><years>45세(1956년 현재)</years><sourcee>건국십년, 964</sourcee></age></ageList><birthplaceList><birthplace no="1"><place>忠淸北道 陰城郡(본적)</place><sourcee>건국십년, 964</sourcee></birthplace></birthplaceList><addList><address no="1"><place>忠淸北道 陰城郡 甘谷面</place><sourcee>건국십년, 964</sourcee></address></addList></basics><family><otherList><other no="1"><p>8人</p><sourcee>건국십년, 964</sourcee></other></otherList></family><history><schoolingList><school no="1"><p><index type="학교">淸州高普</index> 졸업<br/><index type="학교">大邱師範</index> 졸업</p><source>건국십년, 964</source></school></schoolingList><careerList><career no="1"><p>국민학교 교원 10년 근무<br/><index type="학교">甘谷中學校</index> 교장</p><sourcee>건국십년, 964</sourcee></career></careerList><interestList><interest no="1"><p>독서</p><sourcee>건국십년, 964</sourcee></interest></interestList></history><bibliography><reference id="024">대한민국건국십년지</reference></bibliography></person>
+
  LEVEL_ID|LEVEL_XML im_101_20480|<person id="im_101_20480"><basics><nameList><name lang="kor">권혁진</name><name lang="chi">權赫晋</name></nameList><nationList><nation>한국인</nation></nationList><ageList><age no="1"><years>45세(1956년 현재)</years><sourcee>건국십년, 964</sourcee></age></ageList><birthplaceList><birthplace no="1"><place>忠淸北道 陰城郡(본적)</place><sourcee>건국십년, 964</sourcee></birthplace></birthplaceList><addList><address no="1"><place>忠淸北道 陰城郡 甘谷面</place><sourcee>건국십년, 964</sourcee></address></addList></basics><family><otherList><other no="1"><p>8人</p><sourcee>건국십년, 964</sourcee></other></otherList></family><history><schoolingList><school no="1"><p><index type="학교">淸州高普</index> 졸업<br/><index type="학교">大邱師範</index> 졸업</p><sourcee>건국십년, 964</sourcee></school></schoolingList><careerList><career no="1"><p>국민학교 교원 10년 근무<br/><index type="학교">甘谷中學校</index> 교장</p><sourcee>건국십년, 964</sourcee></career></careerList><interestList><interest no="1"><p>독서</p><sourcee>건국십년, 964</sourcee></interest></interestList></history><bibliography><reference id="024">대한민국건국십년지</reference></bibliography></person>
  
  

2017년 5월 17일 (수) 20:14 판

본 논문에서 제도-인사 연구를 위하여 선행연구의 성과를 참조하여 온톨로지를 구축하였다. 그리고 실제적인 인물의 관직정보는 구한말 관보, 직원록자료, 한국근현대인물자료의 RAWDATA에서 추출하였다. 제도-인사의 선행연구 성과를 참고하는 방법은 기존 인문학 연구의 방법론과 동일하다. 하지만 RAWDATA를 활용한 인물의 관직 정보 추출 방식은 기존 인문학적 연구 방법과 상이하다. 이에 따라서 본 페이지에서는 방대한 RAWDATA에서 필요한 정보를 추출하여 데이터화하는 방법에 대해서 서술한다.

서울대학교 규장각 한국학 연구원의 구한말 관보

구한말 관보는 서울대학교 규장각한국학연구원에 저작권이 귀속되어 있는 비(非)공공데이터이기에 웹서비스를 이용하여 접근할 수밖에 없다. 규장각 한국한연구원의 웹서비스에서 제공하는 구한말 관보는 관보 이미지를 PLAIN TEXT로 서비스하고 있다. 이에 따라서 PLAIN TEXT에서 필요한 정보를 추출하기 위하여 대상 정보 탐구, 정규식 표현식을 통한 문자열 처리, 추출 데이터의 오류에 대한 검토의 과정을 수행하였다.

정규표현식(정규식, 正規表現式, regular expression)은 특정한 규칙을 가진 문자열과 문자열 집합을 표현하는 데 사용하는 형식 언어이다. 일반적인 정규표현식의 표준 문법은 https://en.wikipedia.org/wiki/Regular_expression 을 참조한다.


公立普通學校本科副訓導 嚴 星 九命公立慶州普通學校在勤 公立普通學校本科訓導 金 慶 淵命公立尙州普通學校在勤 [1]

자연어 상태의 위의 문장을 기계가독형의 데이터로 전환하면 다음과 같다.[2]

公立普通學校   本科副訓導   嚴星九   命在勤   公立慶州普通學校   
公立普通學校   本科訓導   金慶淵   命在勤   公立尙州普通學校

관보의 서술은 동일한 성질의 내용에 대해서 고정적인 형식을 반복적으로 사용한다. 자연어 문장의 경우에도 “(조직명)(관직명)(이름)(命)(조직명)(관직명)(在勤)”의 고정적인 패턴을 보인다는 것을 손쉽게 알 수 있다.


수동 처리 방법

인간이 위의 자연어 문장을 데이터로 전환한다면 다음과 같은 A, B, C의 과정을 거치게 된다.

A. 유의미한 내용 판단

문장에서 유의미한 문장요소를 판단하여 추출한다. “공립보통학교본과부훈도(公立普通學校本科副訓導)”라는 말은 “공립보통학교(公立普通學校)”라고 하는 조직명과 본과부훈도(“本科副訓導)”라는 관직명을 포함하고 있다. “엄성구명공립경주보통학교재근(嚴 星 九命公立慶州普通學校在勤)”에서 “엄성구(嚴 星 九)”는 인물명이며, “명(命)”과 “재근(在勤)”은 특정한 의미를 가지는 동사이며, “공립경주보통학교(公立慶州普通學校)”는 조직명이다.


B. 개행

유의미한 문장이 종료된 이후에는 개행을 해서 각각의 열을 독립적인 정보로 만든다. “공립보통학교본과부훈도(公立普通學校本科副訓導) 엄성구명공립경주보통학교재근(嚴 星 九命公立慶州普通學校在勤) 공립보통학교본과훈도(公立普通學校本科訓導) 김경연명공립상주보통학교재근(金 慶 淵命公立尙州普通學校在勤)”에서 “공립보통학교본과부훈도(公立普通學校本科副訓導) 엄성구명공립경주보통학교재근(嚴 星 九命公立慶州普通學校在勤)”과 “공립보통학교본과훈도(公立普通學校本科訓導) 김경연명공립상주보통학교재근(金 慶 淵命公立尙州普通學校在勤)”은 독립적인 정보를 가지는 문장이다. 이에 따라 다음과 같이 작업한다.


公立普通學校本科副訓導 嚴 星 九命公立慶州普通學校在勤
公立普通學校本科訓導 金 慶 淵命公立尙州普通學校在勤


C. 띄어쓰기

유의미한 문장요소 사이에는 띄어쓰기를 한다. “공립보통학교본과부훈도(公立普通學校本科副訓導)”는 “공립보통학교(公立普通學校) 본과부훈도(本科副訓導)”와 같이 조직명과 관직명 사이에 공백을 둔다. “엄성구명공립경주보통학교재근(嚴 星 九命公立慶州普通學校在勤)”에서는 이름인 “엄(嚴) 성(星) 구(九)” 사이에 존재하는 공백을 제거하여 “엄성구(嚴星九)”로 하고, “명(命)”과 “재근(在勤)”을 합쳐서 “명재근(命在勤)”으로 한 이후에 “공립경주보통학교(公立慶州普通學校)”로 한다.

그 결과로 “공립보통학교(公立普通學校) 본과부훈도(本科副訓導) 엄성구(嚴星九) 명재근(命在勤) 공립경주보통학교(公立慶州普通學校)”와 같은 문장이 완성된다.


D. 반복

이제부터 위의 A, B, C의 과정을 지속적으로 문장의 수만큼 반복하게 된다.




정규식 처리

정규식을 활용하게 되면 고정적인 패턴을 가진 문장을 빠른 속도로 처리할 수 있다. 정규식의 처리 과정은 다음과 같은 A, B, C, D의 과정을 거치게 된다.


A. 공백 삭제

 
公立普通學校本科副訓導 嚴 星 九命公立慶州普通學校在勤 公立普通學校本科訓導 金 慶 淵命公立尙州普通學校在勤

찾기 = \s 
바꾸기 = “” 
* “”는 어떤 문자도 입력하지 않은 상태를 의미한다.

公立普通學校本科副訓導嚴星九命公立慶州普通學校在勤公立普通學校本科訓導金慶淵命公立尙州普通學校在勤


B. 개행

 
公立普通學校本科副訓導嚴星九命公立慶州普通學校在勤公立普通學校本科訓導金慶淵命公立尙州普通學校在勤

찾기 = 在勤
바꾸기 = 在勤\n

公立普通學校本科副訓導嚴星九命公立慶州普通學校在勤
公立普通學校本科訓導金慶淵命公立尙州普通學校在勤

C. 띄어쓰기

a. 本科副訓導

 
公立普通學校本科副訓導嚴星九命公立慶州普通學校在勤
公立普通學校本科訓導金慶淵命公立尙州普通學校在勤

찾기 = 本科副訓導
바꾸기 = \t本科副訓導\t

公立普通學校	本科副訓導	嚴星九命公立慶州普通學校在勤
公立普通學校本科訓導金慶淵命公立尙州普通學校在勤


b. 本科訓導

 
公立普通學校	本科副訓導	嚴星九命公立慶州普通學校在勤
公立普通學校本科訓導金慶淵命公立尙州普通學校在勤

찾기 = 本科訓導
바꾸기 = \t本科訓導\t

公立普通學校	本科副訓導	嚴星九命公立慶州普通學校在勤
公立普通學校	本科訓導	金慶淵命公立尙州普通學校在勤

c. 命

 
公立普通學校	本科副訓導	嚴星九命公立慶州普通學校在勤
公立普通學校	本科訓導	金慶淵命公立尙州普通學校在勤

찾기 = 命
바꾸기 = \t命\t

公立普通學校	本科副訓導	嚴星九	命	公立慶州普通學校在勤
公立普通學校	本科訓導	金慶淵	命	公立尙州普通學校在勤

d. 在勤

 
公立普通學校	本科副訓導	嚴星九	命	公立慶州普通學校在勤
公立普通學校	本科訓導	金慶淵	命	公立尙州普通學校在勤

찾기 = 在勤
바꾸기 = \t在勤

公立普通學校	本科副訓導	嚴星九	命	公立慶州普通學校	在勤
公立普通學校	本科訓導	金慶淵	命	公立尙州普通學校	在勤


D. 문장 정리

a. 문장 맨 뒤 “在勤” 삭제

 
公立普通學校	本科副訓導	嚴星九	命	公立慶州普通學校	在勤
公立普通學校	本科訓導	金慶淵	命	公立尙州普通學校	在勤

찾기 = \t在勤
바꾸기 = “” 
* ""는 어떤 문자도 입력하지 않은 상태를 의미한다.


公立普通學校	本科副訓導	嚴星九	命	公立慶州普通學校
公立普通學校	本科訓導	金慶淵	命	公立尙州普通學校


b. “命”을 “命在勤” 으로 변경

 
公立普通學校	本科副訓導	嚴星九	命	公立慶州普通學校
公立普通學校	本科訓導	金慶淵	命	公立尙州普通學校

찾기 = 命
바꾸기 = 命在勤 

公立普通學校	本科副訓導	嚴星九	命在勤	公立慶州普通學校
公立普通學校	本科訓導	金慶淵	命在勤	公立尙州普通學校



정규식 처리 상의 문제점

정규식 처리의 과정은 복잡해 보이지만 문장이 특정 패턴을 가지고 있을 때, 유용하게 사용할 수 있다. 특히 연구자가 해당 패턴을 완전히 파악하고, 관련 용어에 대해 정리를 충분히 수행했다면, 컴퓨터 연산을 통하여 자연어 문장을 빠르게 데이터 처리할 수 있다. 이 방법은 고문의 기계적인 자동 번역에도 적용 가능하나, 본 논문의 연구 대상이 아니기에 생략한다. 다만 관보의 패턴은 완전한 기계적인 처리를 하는 데 있어 두 가지 장애 요소가 존재하였다.


첫 번째는 관보 문장의 주술 패턴이 불안정하다는 문제이다.


(이름)(任)(조직명)(관직명)(敍)(관품)(관등)(급봉)
洪性天 任 官立小學校 敎員 敍 判任官 六等 給二級俸[3]
(任)(조직명)(관직명)(敍)(관품)(관등)(급봉)(이름)
任 金浦郡公立小學校 敎員 敍 判任官 六等 趙寬增[4]


위와 같이 동일한 임명 문장에서 때로는 주어인 “(이름)”이 먼저 오고, 때로는 술어인 “(任)”이 먼저 등장한다. 동일한 문단 내에서도 주어와 술어의 위치가 관보의 편집 페이지 공간에 따라서 다르게 나타나고, RAWDATA가 된 규장각한국학연구원본에서는 편집페이지 공간에 따른 문장기호를 따로 명기하지 않았다. 위의 문제 사항 때문에 필요시 국가도서관본과 규장각한국학연구원본의 관보 이미지를 통하여 RAWDATA를 다시 검토하였다. 이러한 현상은 규장각학국한연구원본의 RAWDATA를 만드는 과정에서 개행에 대한 문장기호가 있을 경우 자동 처리가 가능한 부분이어서 아쉬움이 남는다.


두 번째는 관보 문장의 문자 집합(Character Set)의 문제이다. 캐릭터셋 문제는 크게 문자판독 문제와 UTF-8과 EUC-KR의 캐릭터셋 혼재 문제로 나눌 수 있다.

문자 판독의 문제로는 동일한 인물에 대해서 상이한 이체자가 사용되거나 오탈자가 존재하는 것을 들 수 있다. 예를 들어서 동일 인물에 대해서 “계석붕(桂錫朋)”과 “계석명(桂錫明)”으로 다르게 표시한 것은 서로 상이한 작업자가 문자 판독을 달리한 것으로 보인다. 또한 “추용집(萑用集)”과 같은 경우는 전형적인 오탈자의 예이며, “최용집(崔用集)”으로 수정이 필요하다. 이에 따라서 필요시 국립중앙도서관본과 규장각한국학연구원본의 관보 이미지를 통하여 검토하였다.

규장각한국학연구원본의 RAWDATA에는 UTF-8과 EUC-KR의 문자 집합이 혼재되어 있다. 예를 들어서 “이회주(李晦周)”와 “이회주(李晦周)”는 동일한 한자로 보이지만, 실제로는 서로 상이한 캐릭터셋을 사용한 것이다. 그러므로 컴퓨터는 위의 인명 표기만으로는 서로 다른 이름을 가지고 있다고 판단한다. 앞의 ‘李’와 뒤의 ‘李’는 표면상 동일 한자로 보이지만, 각기 “U+674E”와 “U+F9E1”의 상이한 유니코드값을 가지고 있다. 물론 최근에는 한자문화권에서는 어느 정도 자동 처리를 통하여 다른 값을 지닌 한자도 동일하게 식별하지만, 비한자문화권에서는 서로 상이한 유니코드값을 가지는 실질적인 동일 한자에 대한 처리가 아직 미흡하기에 주의가 필요하다. 이에 따라서 수집·정리된 데이터를 일괄적으로 UTF-8으로 변환하여 캐릭터셋을 통일하였다.


국사편찬위원회의 직원록자료

직원록자료는 국사편찬위원회에 귀속되어 있는 공공데이터로, 공공데이터포털을 통하여 직원록자료의 RAWDATA를 입수하였다. 직원록자료의 RAWDATA는 “|” 문자로 분리된 TXT 파일이다.

LEVEL_ID|MAIN_TITLE|SERIES_TITLE|PARENT_ID|SEQUENCE|PERIOD|POSITION|OFFICIAL_RANK|MERITS|SUBJECT_CLASS|SUBJECT_CLASS_CODE
jw_1908_0001_0010|李舜應|대한제국 직원록 1908년도|jw_1908_0001|1|1908|令|판5|9품|궁내부>각릉(各陵)>강릉(康陵, 楊州)|1908-01-001-0001
jw_1908_0001_0020|洪淳參|대한제국 직원록 1908년도|jw_1908_0001|2|1908|叅奉|판5||궁내부>각릉(各陵)>강릉(康陵, 楊州)|1908-01-001-0001
jw_1908_0002_0010|金弼鉉|대한제국 직원록 1908년도|jw_1908_0002|3|1908|令|판5||궁내부>각릉(各陵)>건릉(健陵, 水原)|1908-01-001-0002

이에 따라서 “|”로 분리된 TXT 파일에서 필요한 정보를 추출하기 위하여 대상 정보의 탐구, DBMS 탑재, 데이터 고도화, 데이터 추출의 과정을 수행하였다.

대상 정보의 탐구는 대상 데이터의 설계를 탐색하는 과정이다. 각각의 컬럼들의 의미와 역할 및 상호 관계를 명확하게 이해하는 것이다. 예를 들어서 LEVEL_ID는 직원록자료의 실질적인 고유값이고, 직원록자료 내부의 고유값은 SEQUENCE에서 정의하고 있다. MAIN_TITLE은 직원명정보, SERIES_TITLE은 출처정보, POSITION은 관직정보, OFFICIAL_RANK는 관등정보, MERITS는 공훈정보이다. 또한 SUBJECT_CLASS는 소속기관이며, SUBJECT_CLASS_CODE는 소속기관에 해당하는 고유값이다. 이후 개별 컬럼별 데이터 세부 분석을 수행한다. 예를 들어서 LEVEL_ID 컬럼은 국사편찬위원회의 직원록 자료의 고유값으로 추정되는 JW, 대상데이터의 연도인 숫자값 네 자리(1908), 동일 출처내 소속조직에 따라서 부여된 임시소속조직 고유값인 숫자 네 자리(0084), 임시소속조직 내 인물별 고유값인 숫자 네 자리(0010)로 구성되어 있다. 이러한 과정을 대상 RAWDATA의 모든 데이터를 명확하게 이해할 때까지 진행한다.

그 이후 대상 데이터의 처리를 위하여 DBMS에 탑재한다. 본 연구에서는 MSSQL에 대상 데이터를 탑재하였다. 특정문자(쉼표, 공백, 탭문자, 기타)로 구분된 CSV 혹은 TXT 파일은 어플리케이션의 제약은 받지 않는다. 다시 말해서 MSSQL 이외에 MYSQL, ORACLE은 물론이고, Excel이나 한셀 혹은 기타 문서 편집기에서도 자유롭게 사용이 가능하다. DBMS에 데이터를 탑재한 이후, 목표 데이터 추출을 위한 추가적인 데이터 처리가 필요하여 데이터의 고도화 절차를 수행하였다.

이미 연구를 위하여 독자적으로 조직체계에 대한 설계 및 구축이 완료되었기에, 조직의 상하위관계 정보를 포함하고 있는 “SUBJECT_CLASS”의 “(궁내부>각릉(各陵)>건릉(健陵, 水原)”을 “건릉(健陵)”으로 단순화하였다. 또한 데이터가 명확하게 세분화되어 있지 않은 OFFICIAL_RANK(판3,6급)를 분리하여 “판임관, 3등, 6급”으로 전환하였다. 마지막으로 처리과정의 오류에 대해서 검토하고, 연구에 필요한 학교 관련 데이터만을 추출하여 독립적인 테이블로 관리하였다.


국사편찬위원회의 한국근현대인물자료

한국근현대인물자료는 국사편찬위원회에 귀속되어 있는 공공데이터이다. 본 연구자는 공공데이터포털을 통하여 한국근현대인물자료 RAWDATA를 입수하였다. 한국근현대인물자료의 RAWDATA는 “|” 문자로 된 CSV 파일이다. 그런데 RAWDATA는 실제로는 XML 데이터(LEVEL_XML)와 XML 데이터에서 추출한 고유값(LEVEL_ID)으로 구성되어 있다.


LEVEL_ID|LEVEL_XML im_101_20480|<person id="im_101_20480"><basics><nameList><name lang="kor">권혁진</name><name lang="chi">權赫晋</name></nameList><nationList><nation>한국인</nation></nationList><ageList><age no="1"><years>45세(1956년 현재)</years><sourcee>건국십년, 964</sourcee></age></ageList><birthplaceList><birthplace no="1"><place>忠淸北道 陰城郡(본적)</place><sourcee>건국십년, 964</sourcee></birthplace></birthplaceList><addList><address no="1"><place>忠淸北道 陰城郡 甘谷面</place><sourcee>건국십년, 964</sourcee></address></addList></basics><family><otherList><other no="1">

8人

<sourcee>건국십년, 964</sourcee></other></otherList></family><history><schoolingList><school no="1">

<index type="학교">淸州高普</index> 졸업
<index type="학교">大邱師範</index> 졸업

<sourcee>건국십년, 964</sourcee></school></schoolingList><careerList><career no="1">

국민학교 교원 10년 근무
<index type="학교">甘谷中學校</index> 교장

<sourcee>건국십년, 964</sourcee></career></careerList><interestList><interest no="1">

독서

<sourcee>건국십년, 964</sourcee></interest></interestList></history><bibliography><reference id="024">대한민국건국십년지</reference></bibliography></person>


이에 따라서 “|”로 분리된 TXT 파일에서 필요한 정보를 추출하기 위하여 대상 정보 탐구, DBMS 탑재, 데이터 추출, 데이터 고도화의 과정을 수행하였다.

대상 정보의 탐구는 대상 데이터의 설계를 탐색하는 과정이다. 이를 위해서는 XML 데이터의 설계구조를 명확하게 이해하여야 한다. 세부 설계구조의 탐색은 이미 본 논문의 “I. 제도-인사 아카이브 온톨로지 설계”의 “1. 유관 자료 및 데이터 선행모델”에서 다루었기에 생략한다.

DBMS에 탑재하여 본 논문에서 연구범위에 해당하는 인물만을 추출하였다. 그 이후 현재까지 구축된 근현대인물자료의 XML 데이터 설계로는 본 논문에서 필요한 정보를 취득할 수 없기에 정규표현식을 통하여 데이터 고도화 과정을 수행하였다.

주석

  1. 구한말 관보, 第四千三百七十四號, (온라인 참조 : 관보DB, 규장각한국학연구원, , http://e-kyujanggak.snu.ac.kr/home/index.do?idx=06&siteCd=KYU&topMenuId=206&targetId=379&gotourl=http://e-kyujanggak.snu.ac.kr/home/GAN/GAN_SEOJILST.jsp?ptype=list%5esubtype=01%5elclass=1909%5emclass=5%5exmlfilename=GK17289_00I0165_0010.xml%5enav=12
  2. 예시는 어디까지나 최소한의 정보 분리를 행한 결과물이며, 완전한 기계가독형 데이터는 아니다.
  3. 구한말 관보, 第一百三十五號(온라인 참조 : 관보DB, 규장각한국학연구원, http://kyu.snu.ac.kr/home/index.do?idx=06&siteCd=KYU&topMenuId=206&targetId=379&gotourl=http://kyu.snu.ac.kr/home/GAN/GAN_SEOJILST.jsp?setid=1426331^ptype=list^subtype=02^lclass=17289^mclass=0003^xmlfilename=GK17289_00I0003_0011.xml
  4. 구한말 관보, 第七百三十八號(온라인 참조 : 관보DB, 규장각한국학연구원, http://kyu.snu.ac.kr/home/index.do?idx=06&siteCd=KYU&topMenuId=206&targetId=379&gotourl=http://kyu.snu.ac.kr/home/GAN/GAN_SEOJILST.jsp?setid=1426381^ptype=list^subtype=02^lclass=17289^mclass=0027^xmlfilename=GK17289_00I0027_0012.xml