[지식그래프] #2. 개념화를 적용한 지식 그래프
이번 글에서는 개념화를 통해 다양한 종류의 사물과 그 사물들 간의 관계를 표현하여 지식을 명시적으로 표현해 보도록 하겠습니다. 실세계의 다양한 사물들은 서로 다양하게 다른 사물과 관련되어 있습니다. 즉 서로 다양한 연결 관계를 가지고 있습니다. 우리는 그러한 관계를 개념적으로 알고 있습니다.
예를 들어 학술분야에서는 논문이 존재합니다. 논문은 그 논문을 쓴 저자가 있습니다. 논문은 하나 이상의 주제분야를 포함하고 있습니다. 또한 논문을 쓴 저자는 사람이라는 개념의 하위 개념입니다.
이러한 개념적인 관계를 표현할 수 있습니다. 사물의 유형과 사물들간의 관계를 잘 표현하는 지식 표현체계로 온톨로지를 사용하게 됩니다. 여기에서는 RDF라는 자원 기술 프레임워크를 사용하여 온톨로지를 구성합니다.
이 글에서는 아래의 사이트에서 제공하는 데이터를 샘플로 활용하고자 합니다.
https://dpanagop-53386.medium.com/demonstrating-ml-on-graphs-11f484efbfb0
https://github.com/dpanagop/data_analytics_examples/tree/master/Arxiv_graph
위 블로그에서는 수학 주제에 대한 600개의 arXiv 논문을 추출하여 dataframe pickle 데이터를 제공하고 있습니다. 이 데이터를 활용하여 예시적으로 이번 연재에서 사용할 샘플데이터를 생성하도록 하겠습니다.
참고적으로 arXiv는 물리학, 수학, 컴퓨터 과학, 양적 생물학, 양적 금융, 통계, 전기 공학 및 시스템 과학, 경제학 분야의 학술 논문 2,036,494개에 대한 무료 배포 서비스 및 오픈 액세스 아카이브입니다. (출처: arxiv.org)
데이터는 크게 논문, 저자, 분류 3가지로 구성되어 있습니다. 이 데이터는 네트워크 분석을 위해 추출한 데이터로서 복잡하지 않지만 실제 도메인에서는 이보다 더 복잡할 것입니다. 그러나 이번 글에서 예시적으로 개념화하여 사용하기에는 충분할 것 같습니다.
먼저 논문, 저자, 분류에 대한 사물들을 개념적으로 표현해보도록 하겠습니다. 이들은 Class라는 것으로 표현이 가능합니다. 논문, 저자, 분류 각각 하나의 클래스로 표현이 됩니다. 그리고 논문과 저자, 논문과 분류 관계를 생성할 수 있습니다. 이는 ObjectProperty로 표현이 가능합니다. 또한 저자는 사람이라는 클래스의 하위 클래스라는 관계도 표현이 가능합니다. 상하위 관계를 명시함으로 인해 상위의 클래스 속성이 하위 클래스에게 상속이 가능합니다. 이를 간단히 도식화하면 아래와 같습니다.
개념적인 내용을 도식화하고 이를 RDF로 기술할 수 있습니다. 개념들을 클래스로 표현하고, 클래스간의 관계들을 관계로 표현하여 실세계의 사물들을 설명합니다. 이 결과물을 스키마 혹은 모델이라고 칭합니다. 그리고 지식의 명시적인 표현이라고도 할 수 있습니다.
@prefix ont: .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
ont:
rdf:type owl:Ontology ;
rdfs:label "arXiv 데이터 예시용 온톨로지" ;
owl:versionInfo "Created with TopBraid Composer" ;
.
ont:Article
rdf:type owl:Class ;
rdfs:label "Article" ;
rdfs:subClassOf owl:Thing ;
.
ont:Author
rdf:type owl:Class ;
rdfs:label "Author" ;
rdfs:subClassOf ont:Person ;
.
ont:Classification
rdf:type owl:Class ;
rdfs:label "Classification" ;
rdfs:subClassOf owl:Thing ;
.
ont:Person
rdf:type owl:Class ;
rdfs:label "Person" ;
rdfs:subClassOf owl:Thing ;
.
ont:arxiv_id
rdf:type owl:DatatypeProperty ;
rdfs:label "arxiv id" ;
.
ont:authored
rdf:type owl:ObjectProperty ;
rdfs:domain ont:Author ;
rdfs:label "authored" ;
rdfs:range ont:Article ;
.
ont:belongs
rdf:type owl:ObjectProperty ;
rdfs:domain ont:Article ;
rdfs:label "belongs" ;
rdfs:range ont:Classification ;
.
ont:co_author
rdf:type owl:ObjectProperty ;
rdfs:domain ont:Author ;
rdfs:label "co author" ;
rdfs:range ont:Author ;
.
ont:co_occurance
rdf:type owl:ObjectProperty ;
rdfs:label "co occurance" ;
.
스키마가 정의되면 실제 데이터를 이 스키마에 따라 표현합니다. 이를 지식과 데이터의 결합이라고도 할 수 있습니다. 예를 들어 “홍길동"이라는 사람, “홍길동”이 쓴 “지식 그래프" 라는 논문 과 같은 데이터가 있다고 하면, “홍길동”은 저자 유형 중 하나가 되고, “지식 그래프" 라는 제목을 가진 논문은 논문 유형 중 하나가 됩니다. 이를 인스턴스라고 합니다. 그리고 “홍길동"과 “지식 그래프”는 “저작하다"는 관계로 연결을 생성합니다. 이렇게 간단한 형태로 지식과 데이터를 결합하게 됩니다.
그럼 arxiv의 600개 데이터를 위와 같은 방식으로 생성을 할 수 있습니다. 생성한 샘플은 아래와 같습니다.
@prefix ont: .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rs: .
rs:arXiv_2203_02617 a ont:Article ;
rdfs:label "How to Train Unstable Looped Tensor Network" ;
ont:arxiv_id "arXiv:2203.02617" ;
ont:belongs rs:classification_11,
rs:classification_61 .
rs:classification_11 a ont:Classification ;
rdfs:label "Machine Learning" .
rs:classification_61 a ont:Classification ;
rdfs:label "Computer Vision and Pattern Recognition" .
rs:author_1130 a ont:Author ;
rdfs:label "Dmitry Ermilov" ;
ont:authored rs:arXiv_2203_02617 .
rs:author_1161 a ont:Author ;
rdfs:label "Nikolay Kozyrskiy" ;
ont:authored rs:arXiv_2203_02617 .
rs:author_191 a ont:Author ;
rdfs:label "Petr Tichavsky" ;
ont:authored rs:arXiv_2203_02617 .
rs:author_497 a ont:Author ;
rdfs:label "Anh-Huy Phan" ;
ont:authored rs:arXiv_2203_02617 .
rs:author_549 a ont:Author ;
rdfs:label "Igor Vorona" ;
ont:authored rs:arXiv_2203_02617 .
rs:author_6 a ont:Author ;
rdfs:label "Konstantin Sobolev" ;
ont:authored rs:arXiv_2203_02617 .
rs:author_796 a ont:Author ;
rdfs:label "Andrzej Cichocki" ;
ont:authored rs:arXiv_2203_02617 .
스키마로서 지식의 명시적 표현과 스키마에 따라 표현된 실제 데이터(인스턴스)는 두 가지 모두 데이터로서 활용이 됩니다. 그리고 스키마와 인스턴스는 모두 저장소에 저장을 하여 사용합니다. 따라서 데이터 뿐만 아니라 데이터의 의미까지도 저장하고 명시적으로 활용이 가능합니다. 이를 통해 새로운 지식을 발견하는데 도움이 되며, 그 의미를 문자로 표현하여, 다른 사람 혹은 저장소, 시스템과 공유할 수도 있습니다.
이번 글에서는 지식을 개념화시켜서 표현하는 것과 실제 데이터를 지식과 결합하여 지식 그래프를 구성하는 것에 대해서 간단히 살펴보았습니다. 다음 글에서는 이전 글에서 구성한 분류체계와 이번에 생성한 분류를 어떻게 통합할 수 있을지에 대해 살펴보겠습니다.
끝.