대문

yjw2999
Yjw2999 (토론 | 기여) 사용자의 2017년 6월 27일 (화) 18:19 판 (LIMES을 이용한 인터링킹)

이동: 둘러보기, 검색

역사 자료 텍스트의 전자적 기술에 의한 지식 관계망 구현 연구

이곳에서 위키 소프트웨어에 대한 정보를 얻을 수 있습니다. 역사 자료 텍스트의 전자적 기술에 의한 지식 관계망 구현 연구
- 通鑑節要를 중심으로


서론

그동안 우리나라는 정보화 사업에 막대한 예산을 투입하여 『朝鮮王朝實錄』 등의 방대한 자료를 정보화하였으며 검색 기술의 발달은 그동안 알지 못했던 새로운 지식을 쉽게 찾을 수 있게 하였다.
그러나 자료가 축적될수록 정보를 찾는데 소비되는 시간 또한 점점 증가하게 되었다. 이러한 문제를 해결하기 위해서 팀 버너스 리는 ‘시맨틱 웹’을 주장하였다. 시맨틱 웹은 HTML 문서에 기반하여 데이터를 웹으로 제공하는 것이 아니라, 데이터 간의 링크를 구성하여 인간이나 기계 모두 데이터의 웹을 탐험할 수 있도록 해주는 것을 말한다.
한편 근래에는 데이터와 데이터의 관계 속에서 새로운 가치를 발견하게 되었다. 데이터 간의 연계와 무한 확장, 데이터 활용 주체 간의 협력, 다양한 조합·분석을 통해 가치를 창출하는 새로운 시대가 도래한 것이다.
본 논문의 주제도 이러한 시대적 배경에서 역사 자료를 어떻게 하면 새로운 가치를 창출할 수 있을까 하는 논의에서 출발하였다. 그 구체적인 방법 중의 하나가 역사 자료의 연계와 통합이다. 연계 및 통합은 기본적으로 LOD을 기반으로 이루어진다. LOD로 발행한다는 것은 의미 없이 죽어있는 지식을 식별하고 ‘연결하고, 구조화시키고, 맥락화 시키면서 의미 있는 것을 만들어 내는 과정을 말한다.
그런데 기존의 LOD 발행은 대부분은 정형화되고 규칙적인 정보에 집중되어 있었다. 즉 주소 정보라든지 문화재의 메타데이터 등 전형적인 RDB 구조로 구축된 데이터가 집중적으로 LOD로 전환이 되었으며, 역사서에 등장하는 사건과 그 사건을 구성하고 있는 구체적인 내용에 대한 접근은 거의 이루어지지 않고 있었다.
본 논문은 이러한 역사적 지식을 표현할 수 있는 구체적인 방안에 관해서 연구하고 있다.
아울러 지식 관계망(Knowledge Network)을 제안한다. 지식관계망은 하나의 지식 노드와 관련된 다른 노드를 서로 연결해서 분절화된 지식을 의미적으로 연결해 주는 네트워크를 역할을 한다. 지식 관계망은 지식의 개별 노드와 노드를 연결해서 새로운 지식으로 이동할 수 있는 소통의 교점을 마련해 준다. 정제된 지식의 寶庫인 辭典 등에서 수집한 어휘 간의 관계, 同義語, 反意語 등의 의미론적 연관 관계와 역사의 주체인 인물 간의 관계, 인물과 사건 등을 정밀하게 정제하여 RDF로 구축하는 것이다. 지식 관계망을 통해서 기존 LOD로 해결할 수 없는 훨씬 더 다양하고 복잡한 지식으로 접근할 수 있게 될 것이며 새로운 정보로 접근할 수 있도록 해줄 것이다.

본론

통감절요 소개

본 연구에서 대상 자료로 삼은 『通鑑節要』가 조선 시대 지식인에게 끼진 영향은 적지 않다. 조선 시대에 사대부들은 한문 학습 과정에서 『通鑑節要』를 통해서 문리를 터득하였다. 『통감절요』에 나오는 고사는 문집에서도 숱하게 인용되고 있다. 특히 『通鑑節要』에 나오는 史評은 학자들에게 史觀을 정립하는 데 많을 도움을 주었다. 『통감절요』의 특징을 살펴보면 문장을 생략하거나 변형시켜서 문맥이 서로 이어지지 못하는 부분이 많으며, 심지어는 웬만한 사건이 통째로 빠져있기도 하다. 기타 연월의 착오와 사실의 와전은 이루 헤아릴 수 없다고 한다. 몇 일에 걸쳐서 발생한 사건도 한 줄로 요약하기도 하였다. 이러한 결함에도 불구하고 『通鑑節要』는 조선 시대 전 기간에 걸쳐 중국 역사에 대한 지식뿐 아니라 여러 학문에 걸쳐 수많은 정보를 제공해 온 기본 교재로서 역할을 하였다. 이런 현실을 감안해서 『通鑑節要』를 번역한 전통문화연구회에서 간행한 『역주 통감절요』를 대상 자료로 선택하였다.

『通鑑節要』를 대상 자료로 선택한 이유는 『資治通鑑』에 비해 내용이 매우 압축적이기 때문에 『資治通鑑』이 번다한 것에 비해 핵심적인 내용이 담겨 있기 때문에 오히려 사건을 중심으로 기술할 때 더 유리한다. 또한 『通鑑節要』는 司馬光의 『資治通鑑』, 朱熹의 『思政殿訓義 資治通鑑綱目』 등 외부 데이터와 연계시킬 수 있는 최적의 조건을 갖추고 있기 때문에 대상 자료로 선택하였다. 아래는 역주 통감절요의 번역 대상으로 삼은 판본이다.


통감절요 국도.png 통감절요 규장각.png

[國立中央圖書館 所藏本] [서울大學校 奎章閣 所藏本]

RDF 트리플

RDF 트리플이란?
온톨로지를 표현하는 언어로 사물과 사물의 관계를 주어-술어-목적어의 관계로 표현하는 것

Carl Spitzweg.png


간단한 RDF 트리플을 보면 다음과 같다. 정보를 주어-술어-목적어 구조로 기술하는 것이다. 아래 그림은 항우가 의제를 죽였다는 것을 표현한 RDF 그래프이다.

항우.png

그런데 문제는 모든 지식을 이러한 단순한 이항 구조로 표현한다는 것을 불가능하다. 간단하게 설명해서 위의 항우가 의제를 죽였다는 것에서 우리는 언제와 어디서가 생각할 수 있다. 과연 언제 이러한 일이 발생했으며, 의제가 어디서 죽었을까 하는 의문이 당연히 생겨날 수 있으며, 그 답을 제시해 주어야 한다.

항우02.png

그러나 기존의 이항 구조의 RDF 트리플로는 이러한 내용을 표현할 수 없었다. 그래서 연구된 것이 공백노드와 미디에이터를 이용해서 표현하는 방법이다.

공백노드라면 특별한 의미를 지니지 않고 단순히 노드를 연결시키는 역할을 한다. 아래그름을 보자. 항우와 의제 사이에는 공백노드가 위치하고 있다. 그리고 공백노드와 의제가 죽은 위치나 시간을 장소, 대상, 발생시기라는 관계를 통해서 표현해 주었다.


항우03.png

아래 그림을 보면 역사서의 본문 내용을 RDF 트리플로 기술하려는 시도이며, 그 해결 방안으로 행위와 상태를 표현하는 서술어와 나머지 개체 간의 관계를 국어 통사론에서 사용하는 의미역을 도입하여 표현하였다. 의미역이란

항우04.png


문제의 제기

LOD는 링크드오픈데이터의 약자로 데이터를 공유하고 연결하자는 의미이다. 기존의 LOD 발행은 주로 메타데이터와 같은 정형화된 데이터가 대부분이었다.
그 이유는 RDF 트리플이라는 주어-술어-목적어의 단순한 이항 관계로 지식을 표현해야 하기 때문이다. 그렇기 때문에 기존의 방식으로는 역사 자료의 본문을 표현할 수가 없었다.
예를들어 아래 그림1과 같이 ‘項羽가 義帝를 죽였다’에서 시간과 공간이 추가될 때 이를 표현할 수 있는 방법이 없었다.

이러한 문제를 해결하려는 방안으로 n-ary 방식과 공백 노드를 활용하는 방법이 연구되었다. 공백 노드를 이용하는 방법은 그림2와 같이 중간에 연결해 주는 노드를 하나 인위적으로 만들고 그 노드와 시간, 공간 등의 자원과 관계를 맺어주는 방법이다. 그러나 이러한 방법으로도 역사적 지식을 표현하는 데 어려움이 있다. 그 이유는 첫째, 공백 노드를 사용하더라도 여전히 行爲를 관계 속성으로 표현하기 어려우며, 둘째, 역사서에서 나오는 다양한 관계를 표현할 수 있는 적절한 기준이 아직 없기 때문이다. 사람마다 서로 다른 기준을 만들고 서로 다른 관계를 적용한다면 역사 자료의 통합은 요원해질 것이다.


지식을 표현하는 것이 단순히 이항 관계로는 표현할 수 없는 것들이 너무 많다. 정확하게 말하면 표현할 수 있는 것이 그렇게 많지 않다. 역사서에 나오는 주요한 사건이 언제 일어났는지 어디에서 일어났는지 원인은 무엇인지 등에 대해서 사전에 프로퍼티로 지정해 놓은 범위 안에서 표현할 수 있다. 더블린코어의 온톨로지에서 보면 책의 저자는 누구이고 언제 간행되었고 등 사전에 정해진 것만 담을 수 있다.

역사서의 경우에 조선왕조실록이 몇 책이고, 국보 몇 호이고, 언제 간행되었는지 등등의 메타데이터에 대해서는 충분히 담을 수 있는데 만약 본문 내용을 대상으로 표현한다면 거의 표현할 수 있는 방안이 없다.


개체와 개체 사이에 발생하는 관계를 프로퍼티가 아닌 인스턴스로 표현하는 방법을 제안하였다. 인스턴스로 표현한다는 것은 클래스로 분류한다는 의미이다. 행위를 클래스로 표현한다는 것은 클래스를 잘 분류만 해 놓으면 개체와 개체를 연결할 때 복잡한 관계라도 쉽게 표현할 수 있다.

온톨로지 설계

클래스 설계

프로퍼티 설계

논항

의미적 완결성을 문장을 구성하기 위하여 서술어 기능을 가지는 어휘가 자신의 자리값(valency)과 의미격 틀(θ-frame)에 따라 문장에 나타날 것을 요구하는 필수 성분이다


의미역

한 문장이 완성되기 위해 꼭 필요한 문장 성분과 그 문장 안에 있는 동사나 형용사 등의 술어가 맺고 있는 의미적 관계

본 논문에서 적용한 의미역

연번 프로퍼티 속성 내용
1 action AC 구체적인 행위를 표현함
2 agent AG 행위를 한 주체, 행동주
3 effector EF 영향주
4 companion CO 행위를 할 때 참여한 행위자
5 patient PA 피동주, 사건에서 영향을 입는 것, 상태의 변화를 겪는 것
6 theme TE 이동체, 대상
7 manner MA 방법
8 location LO 발생위치, 처소, 장소명사와 함께 처소를 나타낸다.
9 source SR 기점, 출발점
10 route RT 경로, 지나온 경로
11 goal GO 도착점, 처소의 변화, 상태나 자격의 변화
12 direction DR 이동의 방향
13 time TM 시간과 연계
14 instrument IN 도구
15 cause CA 원인
16 degree DE 정도의 표현
17 frequency FR 빈도의 표현
18 quantity QU 수량의 표현
19 role RO 자격, 역할의 표현
20 content CT 내용의 표현

지식 관계망의 개념

역사서를 잘 구조화하여 LOD로 발행한다고 해서 어느 날 갑자기 새로운 지식이 발견되는 것은 아니다. 많은 지식이 축적되어야 자연스럽게 그 사이에서 새로운 가치를 발견해 낼 수 있을 것이다. 문제는 LOD를 구축하는데 많은 시간과 비용이 걸린다는 것이다.

지금까지 설명한 온톨로지 모델을 적용하여 역사적 지식을 LOD로 발행하면 상당수의 지식을 서로 연결할 수 있겠지만 학자들의 연구에 의해 정제된 심도 있는 지식의 수준까지 도달할 수는 없다. 그렇기 때문에 사전 등의 잘 정리된 지식을 LOD로 발행할 필요가 있다. 지식 관계망은 역사 자료의 연계 및 통합을 위해 설계한 온톨로지를 확장 및 보완한 개념으로 어휘 간 관계에 있어 정제화와 구조화, 계층화라는 세 가지 요소가 추가 혹은 강화된 개념이다. 지식 관계망(Knowledge Network)은 하나의 지식 노드와 관련된 다른 노드를 서로 연결해서 분절화된 지식을 의미적으로 연결해 주는 네트워크를 의미한다.
지식 관계망은 역사적 지식을 통합할 수 있는 모델을 제공하며, 어휘 간의 관계를 의미적으로, 내용적으로 엮을 수 있게 한다. 어휘 간의 관계를 의미적으로는 同義語, 類義語, 反意語 등 의미에 따른 관계를 엮어 주는 것이고, 내용적으로는 項羽의 字는 羽고 名은 籍이고, 愛妾은 虞姬이며, 누구와 천하를 놓고 다투었는지 등의 지식 간의 관계를 엮어 주는 것이다. 이러한 관계는 의미에 따라서 관계가 형성된 것이 아닌 내용 속에서 관계가 만들어진 것이다. 즉 項羽와 項羽와 관련된 정보는 필연적이지 않고 역사서의 내용에 의해 만들어진 관계인 것이다. 이러한 관계는 지금까지 연구된 학술적 성과 혹은 정제된 지식을 바탕으로 구축된다.
예를들어 지식의 寶庫인 辭典 등에서 수집한 어휘 간의 관계, 同義語, 反意語 등의 의미론적 연관 관계와 역사의 주체인 인물 간의 관계, 인물과 사건 등을 정밀하게 정제하여 RDF 트리플로 구축하는 것이다. 간단히 말해 역사서에서 얻을 수 없는 정제된 지식을 사전을 이용하여 보완하고 구조화(Structureing)한다는 의미이다.
계층화는 어휘 간의 텍사노미를 잘 형성하여 논리적 추론을 강화하고 대체 표현을 찾는데 도움이 될 수 있다. 지식 관계망은 기존 지식을 관련 있는 지식끼리 잘 엮어서 정리하고, 분류하고, 구조화 시킨 지식의 보고라고 할 수 있다. 지식 관계망은 내부의 지식과 외부의 지식을 소통시키는 역할을 한다. 지식 관계망을 통해서 관련된 외부 지식으로 이동하고, 반대로 외부 노드에서 지식 관계망을 매개로 하여 관련된 지식으로 접근할 수 있다. 지식 관계망을 통해서 기존 LOD로 해결할 수 없는 훨씬 더 다양하고 복잡한 지식으로 접근이 가능하게 될 것이며 새로운 정보로 접근할 수 있는 소통의 교점이 된다. 지식은 점차 한 곳에 집중되고, 통합되는 경향이 있다. 그것은 정확한 정보를 쉽게 찾고 싶다는 필요성에 부응한 결과이다. 지식 관계망은 기구축된 어휘 정보를 의미 중심으로 연계된 통합 서비스를 제공한다. 지식 관계망에서는 같은 개념이 서로 다르게 사용되는 용어, 용어 간의 의미가 일치하지 않음으로서 발생하는 정보의 단절을 방지하고 특정 개념에 대해 더욱 다양하고 폭넓은 지식으로 접근할 수 있게 해 준다.


지식관계망.png

인스턴스 생성

문맥 요소 태깅

통감절요 본문 중에 있는 개체명을 파악하기 위해 직접 역주 통감절요에 태깅을 하였다.

  • 역주 통감절요의 자료량
구분 글자수 어절수
원문 872,179 122,733
번역문 1,716,971 401,715
각주 193,532 47,161
합계 2,782,682 571,609


대표명칭 정리

  • 인명 대표명칭 정리 원칙

대표명칭은 봉작호가 있는 사람과 없는 사람으로 구분한다.
왕실 인물은 성명 이외에도 봉작호가 널리 사용되기 때문에 이러한 현실을 감안하여 대표명칭을 정하였다.
왕실 인물은 다시 당대 이전과 이후로 구분합니다. 당대 이전에는 왕조명+시호+성명을 대표명칭으로 하고 당대 이후에는 왕조명+묘호+성명을 대표명칭으로 하였다.
당대 이후에는 시호가 너무 길어지기 때문에 시호로 부르면 이름이 너무 길어지기 때문이다.
이러한 원칙으로 통감절요(5대10국) 시대 인물을 모두 마크업한 후 동일 인물 여부를 확인하였다.
각 인물은 위키피디아에 상세한 정보가 담겨 있기 때문에 연계를 위해 모두 rdfs:sameAs를 이용하여 연결을 해주었다.
이러한 정보는 LOD의 4원칙 중의 4번째 규칙, 즉 풍부한 개체와 연결할 수 있도록 다른 자원의 연결정보를 포함하라는 원칙에 부합한다.
그 결과는 다음과 같다.

통감절요 출현 인명

시간정보 정리

역사 자료를 LOD로 발행하기 위해서는 시간이라는 요소는 매우 중요하다. 그렇기 때문에 본문 중에 출현하는 이벤트에 모두 시간 정보를 부착해주었다. 그런데 시간 정보와 관련해서 주의해야 할 점이 있다.
통감절요는 편년체 사서로 역사를 시간 흐름의 순서에 따라 기술하였다. 시간은 크게 연, 월, 일 등으로 구분할 수 있는데 대부분 년을 기본 단위로 하여 기술하였으며, 간혹 월일까지 기술하는 경우도 있다.
『史記』를 비롯한 紀傳體 역사 기술이 동일한 사건이 여러 곳에 중복되어 나타난다는 문제점으로 인해 司馬光은 歷史를 編年體로 기술하였다.
그런데 編年體로 역사를 기술한다고 해서 모든 문제가 해결되는 것은 아니다. 오히려 紀傳體에 없었던 새로운 문제가 생기기도 한다.
예를들어 역사적 事件이라는 것이 어느 하루에 이루어지는 것이 아니고 여러 날 혹은 몇 년에 걸쳐서 진행되기도 하기 때문에 이러한 사건을 날짜 순으로 기록한다면 전체적인 사건을 이해하는데 문제가 될 수 있다.
司馬光은 이러한 문제를 해결하기 위해 사건의 중심이 되는 날짜에 원인과 결과를 같이 기술하였다. 그러나 다른 날짜에 발생한 사건을 그날 날짜에 기록한다는 것은 자칫하면 그 날 일어난 사건으로 오해할 수 있는 여지가 있다. 이러한 문제를 해결하기 위해 司馬光은 ‘初’자를 사용함으로써 사건이 발생한 시점이 그날이 아닌 과거라는 것을 표현하였다.
이렇게 시점이 서로 다름을 표시하는 것은 ‘初’ 뿐만 아니라 ‘嘗, 先是, 少’ 등의 글자를 사용하며, 특별히 이러한 용어를 사용하지 않더라도 문맥 상에서 자연스럽게 드러나는 경우도 있다.
이러한 사례는 우리말로 번역할 때 ‘처음에, 처음으로, 이미, 이때, 있을 때에, 곧, 일찍이, 보다 앞서, 지난날에, 얼마 후, 초에, 뒤에, 여러 해가 지나도, 이보다 앞서, 뒤에, 태어나면서부터 곧바로, 곧이어, 곧장, 얼마 후, 이보다 앞서, 이보다 앞서, 뒤에[後], 젊어서부터’ 등 문맥에 따라 다양한 형태로 번역이 된다.

이러한 내용을 정확하게 파악해서 해당 시점에 발생한 사건에 대해서 정확한 시간정보를 부착해 주었다.

동사의 어깨번호 확인

본 논문의 특징 중의 하나가 개체와 개체의 관계를 프로퍼티가 아닌 인스턴스로 표현하였다는 점이다. 여기서 관계는 대부분 행위나 상태를 의미한다. 즉 서술어에 의해서 표현하는 관계이다. 탄핵하다, 미워하다, 공격하다 등의 행위와 아름답다 등의 상태를 의미한다. 결국 이러한 서술어를 표현할 수 있다는 것은 문장을 표현할 수 있다는 것이다.

자원과 자원의 관계를 인스턴스로 표현한다는 것은 관계의 설정이 프로퍼티에 비해서 훨씬 자유롭다는 것을 의미한다. 예를들어 CIDOC-CRM 같은 표준에서 문화재를 기술하기 위해서 엔티티와 관계 프로퍼티를 미리 지정해 놓은 표준이 존재한다. 이 표준에 따라 문화재와 관련된 사항을 정리한다. 그런데 만약 표준에 정의되지 않은 새로운 관계가 발견될 수 있다. 이럴 경우에 프로퍼티를 새로 추가해야 한다. 실제로 CIDOC-CRM에서 표준이 변경될 때마다 새로운 관계가 추가되는 것을 확인할 수 있다. 그런데 이러한 관계를 인스턴스로 표현한다면 새로운 관계가 발견되더라고 기존의 클래스를 변경하거나 추가하지 않고도 클래스의 인스턴스값을 추가함으로써 관계를 표현할 수 있다. 즉 설계의 변경없이도 새로운 관계를 수용할 수 있다는 것이다.

관계를 인스턴스로 표현한다는 것은 동사와 형용사를 인스턴스로 사용해야 한다. 그러나 우리말 동사와 형용사는 동형이의어가 존재한다. 즉 형태는 같으나 그 의미가 다른 어휘가 많다는 의미이다. 이를 구분해 주기 위해서 본 논문에서는 표준국어대사전의 어깨번호를 적용한다. 아래 문장에서 이르다는

ㄱ. 項王이 스스로 탈출할 수 없음을 헤아리고는 그 기병들에게 이르기를 --이르다02
ㄴ. 吳起가 이르자 그에게 정사를 맡겨 정승으로 삼았다 --이르다01

ㄱ.은 말하다는 의미이고 ㄴ.은 도착하다는 의미이다. 같은 형태이면서 의미가 서로 다르기 때문에 이를 정확하게 구분해 주어야 한다.

원문과 번역문의 연계

한문을 우리말로 번역할 때 원문에 사용된 어휘를 되도록 살려서 번역하기도 하고, 우리말로 쉽게 풀어서 번역하기도 한다. 한자어를 살펴서 번역할 때는 명사는 대부분 우리말에서도 그래로 나타나나, 동사의 경우 단순히 한자어에 ‘하다’를 붙여서 번역하기도 한다. 여하튼 한문에 사용된 어휘와 그를 번역한 대역어를 정리한다는 것은 향후 번역에 참조할 수 있다는 점에서 필요한 일일 것이다. 원문을 기준으로 번역된 대역어를 살펴보면 '하다01'이 107번 사용되어 가장 많이 사용되었음을 확인할 수 있으며 번역문을 기준으로 사용된 한자어를 살펴보면 '爲'자가 104번 사용되었다.

원문 기준 번역문의 대역어 정리

번역문 기준 원문의 대역어 정리

의미역 부착

역사서의 본문 내용을 표현하기 위해 본문 중 출현하는 서술어와 나머지 개체의 관계를 의미역으로 표현하였다. 이를 RDF 트리플로 만들기 위해서는 복잡하지만 데이터 내에 직접 태깅하는 방법을 적용하였다. 아래 데이터를 보면 내용 중에 event라는 엘리먼트가 있으며 이 엘리먼트 내에는 VV, EF, PA, TE 등의 속성이 있다. 이 속성은 행위나 상태를 나타내는 서술어와의 관계를 표현하는 것으로 온톨로지에서 eventRole라는 오브젝트 프로퍼티로 변환이 된다. 이 방법은 관계의 검증을 쉽게 할 수 있다는 장점이 있다. 만약 관계를 표현하는데 데이터를 보면서 엑셀에서 정리한다면 한번 추출된 데이터는 원 데이터와 격리된 별개의 데이터이기 때문에 사람들이 그 자료를 활용하여 무엇인가를 할 수가 없다. 또한 검증하는 것도 쉽지 않다. 원래 위치를 찾는 것 자체가 난해한 일이 될 것이다. 그러나 이 방법을 사용하면 데이터 내에 모든 정보가 다 들어 있기 때문에 검증이 쉬우며, 누구든지 관심이 있는 사람이라면 가져다가 새롭게 수정하거나 활용할 수 있다.


<place id="" name="浙東">浙東</place> 지방이 <event VV="소란하다" EF="浙東">소란하였는데</event> <position id=" 安南都護">安南都護</position> <person type="" name="王式" S="王式" P="position" O="安南都護">王式</person>이 <event VV="토벌하다" AG="王式" PA="裘甫">토벌하여</event> <event VV="평정하다" AG="王式" TE=" 浙東 ">평정하였다</event>

의미역의 검증

XML 문서 내에 여러가지 속성으로 이벤트를 표현했는데 이러한 복잡한 구조로 태그가 제대로 부착되었는지 확인하는 것을 쉽지 않다. 그렇기 때문에 쉽게 검증할 수 있는 방법이 필요하다. 논 연구에서는 XSL을 적용하여 관계를 쉽게 확인할 수 있는 방법을 사용하였다. XML 문서 내에 있는 태그 요소를 색상과 부호를 이용하여 가독성이 있게 구분해 주고, event는 관계를 표현하여 구체적인 관계를 파악할 수 있게 하였다. 이 방법으로 전체 데이터의 관계와 이벤트를 확인하였다.

LOD 발행

팀 버너즈 리의 LOD 발행 원칙

1. URI를 이용하여 자원을 식별하라.
2. HTTP(프로토콜)를 이용하라.
3. RDF 또는 SPARQL 등의 표준화
3. 다른 자원으로의 연결(link)한다.

LOD 발행

Model 단계

RDF는 Subject, Predicate, Object의 트리플 형태로 이루어져 있으므로 일반적인 역사서에 나타나는 行爲나 事件을 표현하는데는 취약하다. 이를 해결하기 위한 방법으로 Ⅲ장에서 역사적 지식을 이벤트와 의미역을 이용하여 표현하는 것으로 설계하였으며, 역사서에서 쉽게 얻을 수 없는 정제된 지식을 수용할 수 있도록 지식 관계망이란 개념을 도입하여 최종적인 모델이 완성되었다. 이러한 모델링에 사용한 도구는 Protégé5.2을 이용하였으며 기본 언어는 OWL-DL를 사용하였다.

Generate 단계

URI 부여

일반적으로 RDB를 온톨로지로 변환할 때는 RDB에 부여된 ID 등을 이용하여 URI를 발행하며 되기 때문에 특별한 어려움을 없으나 자연어를 대상으로 RDF를 발행하기 위해서는 이를 모두 정리하고 고유한 식별자를 부여해야 한다. 앞서 인명과 지명의 대표명칭 정리는 모두 URI가 중복되어 부여되는 것을 막아준다.

Store 단계, Publish 단계

본 논문에서는 ‘Virtuoso RDF Store’를 사용하여 RDF 트리플을 저장하였다. RDF 데이터베이스에 저장된 RDF 트리플을 웹에서 발행(Publish)하여 외부에서 데이터를 사용할 수 있도록 하는 단계이다. Linked Data를 외부로 공개하고 HTTP를 통해 유통하기 위해서는 외부의 응용 서비스나 데이터와의 접점 제공을 위한 SPARQL Endpoint가 필요하다.

인터링킹

수작업에 의한 인터링킹
LIMES을 이용한 인터링킹

LIMES 홈페이지 동영상

SILK를 이용한 인터링킹

활용 방안

  • 데이터셋 통계 :
통감절요 내용 비고
대상 자료 『通鑑節要』 通鑑節要 卷48, 49, 50 전체 50권 중 3권
사건 이벤트 1,866건

지식 관계망 구축

  • 데이터셋 다운로드
제목 내용
OWL 파일 다운로드 다운로드
통감절요 RDF 마크업 데이터 다운로드


  • 연구논문 다운로드(HWP) : [1]

통감절요의 시각화

일반적인 자료를 RDF 트리플로 만들 경우에 RDF 트리플은 자원과 자원의 주어-술어-목적어의 단순한 구조로 표현했기 때문에 시각적 표현도 어렵지 않게 가능하다. 그러나 역사자료의 경우 시간이라는 요소 때문에 여러가지 시각적으로 표현할 수 있는 것이 제한이 될 수 밖에 없다. 그 이유는 역사 자료의 경우 시간의 흐름에 따라 관계가 변할 수 있는 시간과 공간을 한꺼번에 표현할 수 있는 적절한 방법이 알려지지 않았기 때문이다. 그렇지만 역사 자료에서도 정적인 관계와 일부 동적인 관계의 표현을 시도해 보았다.

역사적 배경 황소의 난이 발생하면서 세력이 대단했었는데 황소의 부장 중에 주온이라는 사람이 당나라에 항복하면서 황소의 난은 진압이 되게 된다. 당나라 소종 때 주온에게 전충이라는 이름을 하사했는데 이 주전충이 소종을 죽이고 당 애제를 세운다. 애제는 결국 주전충에게 선양을 하게 되고 주전충은 後梁을 건국한다. 주전충을 얼마 안있어 애제를 독살한다. 주전충의 양자가 주우문이 있었는데 주전충이 이 양자를 좋아하여 제위를 주우문에게 물려주려고 하였으나 서자인 朱友珪가 馮廷諤을 시켜 주전충을 시해하고 황제에 오른다. 이것을 본 3남 朱友貞이 위박군을 포섭하여 결국 朱友珪를 죽이고 대신 황제에 오른다. 그러나 朱友貞더 얼마 안 있다가 後唐 莊宗 李存勖의 침입으로 결국 자살하면서 後梁은 끝이 난다. 李存勖의 아버지는 李克用인데 李克用은 새로운 나라를 세우지 않았으나 결국 李存勖은 後唐을 건국한다. 李克用에게는 양자인 李嗣源이 있었는데 뒤에 李嗣源이 반란을 일이키면서 쫒기던 李存勖은 유시에 맞아 죽는다. 그래서 李嗣源이 황제에 오른다. 李嗣源이 죽자 3男인 李從厚가 황제가 되었는데 얼마 후 양자인 李從珂가 반란을 일으켜 황제가 된다. 李從珂는 李從厚를 살해한다. 李從珂는 원래 石敬瑭하고 경쟁하는 관계였는데 李從珂는 石敬瑭이 두려워 권력을 뺏으려고 했다. 石敬瑭은 부장인 劉知遠이 반역을 권하자 결국 石敬瑭은 거란의 도움을 받아 군사를 일이킨다. 石敬瑭에게 패한 李從珂는 불 속에 뛰어 들어 자살하고 만다. 이렇게 하여 後唐이 멸망하고 後晉이 건국된다. 石敬瑭이 죽자 조카인 石重貴이 황제가 되었는데 어린 石重貴은 劉知遠을 의심한다. 劉知遠이 걱정하자 부장인 郭威가 자립을 권하자 결국 劉知遠는 자립하여 後漢을 건국하다. 石重貴는 거란을 잘 섬기지 못하여 결국 거란의 침입으로 황제의 자리에서 물러나게 된다. 劉知遠이 죽자 아들인 劉承祐가 황제가 되었는데 황제에 오르자 고명대신을 죽이게 된다. 이에 외방에 있던 郭威는 반란을 일으켜서 劉承祐은 전쟁 도중에 난군에 시해당한다. 郭威는 조카인 劉贇을 황제로 세웠으나 얼마 안있어 郭威은 劉贇을 폐하고 後周를 세운다.



Neo4j01.jpg


SPARQL

Linked Data를 외부로 공개하고 HTTP를 통해 유통하기 위해서는 외부의 응용 서비스나 데이터와의 접점 제공을 위한 SPARQL Endpoint가 필요하다.

본 데이터는 저작자표시-동일조건변경허락 4.0 국제 (CC BY-SA 4.0)의 조건을 따르고 있다.


역사 자료 텍스트의 전자적 기술에 의한 지식 관계망 구현 연구 SPARQL Endpoint: 바로가기


SPARQL 활용 예시


// 五代十國 시대에 황제를 시해한 사람은?

PREFIX kno: <http://dh.aks.ac.kr/ontologies/historicevent/kno#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select distinct ?person ?action ?patient
where {
?event2 kno:agent ?person .
?event2 kno:action ?action .
FILTER regex( str(?action ),"시해하다02")
?event2 kno:patient ?patient .
}

결과보기



// 馮廷諤이 어떤 行爲를 했는지 찾는 쿼리?

PREFIX kno: <http://dh.aks.ac.kr/ontologies/historicevent/kno#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select * 
where {
?event kno:agent ?agent .
?event kno:action ?action .
?event kno:patient ?patient .
FILTER regex( str(?agent ),'馮廷諤' )
}

결과보기


// 朱全忠이 蔣玄暉를 시켜 唐昭宗을 시해했음을 조회하는 쿼리

PREFIX kno: <http://dh.aks.ac.kr/ontologies/historicevent/kno#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select distinct ?agent ?action1 ?agent2 ?action2 ?patient 
where {
?event1 kno:agent ?agent .
?event1 kno:action ?action1 .
?event1 kno:theme ?event2 .
?event2 kno:agent ?agent2.
?event2 kno:action ?action2 .
?event2 kno:patient ?patient .
FILTER regex( str(?action2),"시해하다" ).
FILTER regex( str(?patient),"昭宗" )
}

결과보기


// 912년에 발생한 사건을 조회하는 쿼리

PREFIX kno: <http://dh.aks.ac.kr/ontologies/historicevent/kno#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select ?agent ?action ?patient
where {
?event kno:agent ?agent.
?event kno:time kno:912.
?event kno:action ?action.
?event kno:patient ?patient
}

결과보기



// 朱友貞과 朱友珪의 관계를 조회하는 쿼리

PREFIX kno: <http://dh.aks.ac.kr/ontologies/historicevent/kno#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select *
where {
{kno:後梁郢王朱友珪 ?x kno:後梁末帝朱友貞.}
}

결과보기


// 죽음 중 死으로 표현된 것을 조회하는 쿼리

PREFIX kno: <http://dh.aks.ac.kr/ontologies/historicevent/kno#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select distinct *
where {
?event kno:translateWord kno:死.
?event kno:agent ?agent
}

결과보기


// 죽음 중 殂으로 표현된 것을 조회하는 쿼리

PREFIX kno: <http://dh.aks.ac.kr/ontologies/historicevent/kno#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select distinct *
where {
?event kno:translateWord kno:殂.
?event kno:agent ?agent
}

결과보기


// 죽음과 관련된 어휘를 조회하는 쿼리

PREFIX kno: <http://dh.aks.ac.kr/ontologies/historicevent/kno#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX xml: <http://www.w3.org/XML/1998/namespace>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select distinct *
where {
?event kno:action kno:죽다01.
?event kno:agent ?agent
}

결과보기


지식의 활용

결론

본 연구는 여러 기관에 분산되어 개별적으로 제공되고 있는 역사 자료를 연계 및 통합하기 위한 방안을 제시하고자 다음과 같은 연구를 수행하였다.
첫째, 역사 자료를 연계 및 통합하기 위한 방법으로 行爲와 狀態를 중심으로 LOD로 발행할 것을 제안하였으며 그에 필요한 구체적인 온톨로지 모델을 제시하였다.
또한 󰡔譯註 通鑑節要󰡕의 본문 내용을 意味役을 적용하여 직접 LOD로 발행함으로써 역사적 지식을 표현하는 데 유용함을 보여주었다. 본 연구에서는 단순한 LOD 서비스를 메타데이터를 중심으로 LOD로 변환하는 수준에서 벗어나, 역사적 지식 자체를 RDF 트리플로 표현하고자 하였다. 둘째, 역사적 지식을 LOD로 발행하는 구체적인 방법론과 절차를 세부적으로 제시하였으며, 실제로 데이터를 어떻게 가공하고 어떤 점을 고려해야 하는지를 정밀하게 검토하고 구체적인 방법을 제시하였다. 먼저 역사서에서 사용되는 개체명을 파악하기 위해 󰡔譯註 通鑑節要󰡕를 대상으로 본문에 개체명을 마크업하였으며, 역사서에 사용된 개체명의 유형을 파악하고 이를 클래스 설계에 반영하였다. 정확한 온톨로지 설계를 위해 설계와 적용, 보완 등의 순환 반복 과정을 걸쳐서 온톨로지 모델을 정교하게 가다듬었다. 셋째, LOD 발행으로 해결하기 어려운 지능화된 연계를 위해서 지식 관계망(Knowledge Network)을 제안하고 그 온톨로지 모델을 제시하였다.

본 논문의 의의는 다음과 같다. 첫째, 단순히 二項 관계를 기반으로 하여 어떤 특정한 영역이나 내용에 대해서만 온톨로지로 표현할 수밖에 없었던 한계를 벗어나, 형식과 내용에 관계없이 대부분의 문장을 RDF 트리플로 표현할 수 있게 되었다. 둘째, 지식 관계망 모델을 통해서 지식을 확대 재생산할 수 있는 가능성을 열었다. 예를들어 󰡔漢韓大辭典󰡕과 󰡔漢語大詞典󰡕을 정교하게 가공한다고 해서 이들 자료 간의 통합에 따른 시너지 효과는 그리 크지 않다는 것이다. 그러나 본 논문에서 제공하는 온톨로지 통합 모델을 적용할 경우 지식의 확장은 크게 증가할 것이다.

참고자료

通鑑節要 데이터를 보시려면 아래 링크를 클릭하세요

通鑑節要

資治通鑑

통감절요 출현 인물

중국왕조 정리

중국 역대 왕조

중국 역사 참고 자료

中国君主列表

中國君王諸子女列表

中國皇后及妃嬪列表

5대10국의 역사

新五代史

舊五代史

중국정사

중국 왕조 연표

중국 왕조 연표 다운로드