데이터를 아무리 많이 저장해 보아도, 여기서 지식을 얻는 것은 쉽지 않다. 데이터 간의 관계를 만들고, 추론할 수 있는 구조가 없으면, 쓸모없는 파일일 뿐이다. 그래서, 데이터를 어떻게 구조화하면 지식을 효과적으로 검색할 수 있는 지에 대한 연구가 오랫동안 있어 왔다. 이 글은 다음 ? 에 해당하는 것이다.
데이터 > 빅데이터 저장 > ? > 지식 검색
지식 추론 기능
지식은 사용자의 관점에 따라 상대적인 개념이다. 예를 들어, 다음과 같은 사실 데이터가 있다고 하자.
- A는 B를 가진다.
- B는 C를 가진다.
- A는 C를 가진다.
- 지식 추론 기능 = {연역, 귀납, 유추, 확률 통계}
이 글에서는 특히 연역 기능을 컴퓨터에서 구현하기 위한 사실 데이터 표현 방법인 온톨로지와 추론 기능에 해당하는 시멘틱 정보 검색 방법을 간략히 설명한다.
지식의 표현과 시멘틱
지식은 그래프 구조로 나타낼 수 있는 데, 특히, 멀티미디어가 많은 자료들은 그래프 형식으로 자료를 매달아 놓고, 그래프 노드 간의 관계를 정의해 놓으면, 지식을 효과적으로 추가, 삭제, 검색 할 수 있는 매우 유연한 구조로 만들 수 있다.
데이터를 그래프로 표현하가 각 데이터의 관계를 정의해 놓으면 다음과 같은 의미있는 질의를 할 수 있다.
John likes Neo.
참고로, 시멘틱의 개념은 복잡 다양한 웹의 데이터를 효과적으로 검색하기 위한 방법을 개발하기 위해 발생되었다.
온톨로지 개념과 트리플 데이터 구조
시멘틱 데이터베이스를 만들수 있는 도구는 온톨로지(ontology)가 있다. 온톨로지는 도메인에 의존된 지식과 관계를 형식 기술 언어로 명세화한 것이다. 좀 더 쉽게 말하면 사물과 사물 간의 관계를 표현하는 방법이다.
An ontology is a formal, explicit specification of a shared conceptualization of a domain of interest) - T. Gruber예를 들어, 다음과 같은 사물과 관계가 포함되어 있는 문장이 있다고 하자.
John friend Susan.이 문장에는 많은 관계와 가정이 지식으로 포함되어 있다. 예를 들어, John, Susan은 사물이다. 그들과의 관계는 friend이며 friend는 최소 1명 이상 제약조건이 있다. 이를 OWL로 명세화하면 다음과 같다.
John rdf:type owl:Thing .이렇게 사물과의 관계와 의미를 명확히 형식화하는 방법을 온톨로지라 한다. 온톨로지에 대한 상세한 설명은 다음 링크를 참고한다.
Susan rdf:type owl:Thing .
John rdf:type _:x .
_:x owl:onProperty friend .
_:x owl:minCardinality "1"^^xsd:nonNegativeInteger .
온톨로지는 그래프 형식으로 지식을 표현하는 저장소 역할을 할 수 있다. 온톨로지는 보통 Triple 형식으로 데이터를 표현하는 데, 최근 실용적으로 많이 사용되는 것은 산업표준인 TTL(Terse RDF Triple Language. Turtle) 그래프 형식의 트리플 포맷이다.
트리플 형식은 다음과 같이 기본적으로 주어, 술어, 목적어 형식의 3개 데이터를 가진다. 이를 서로 연결하면 그래프 온톨로지 구조가 된다. 주어나 목적어는 그래프의 노드, 술어는 링크로 표현된다.
이를 이용해 복잡한 모델을 연결된 데이터(Linked Data)인 간단한 그래프 구조로 만들 수 있다. 이를 이용해 그래프 데이터모델에서 지식을 얻기 위한 추론을 다음과 같이 할 수 있다.
Mike → said → (triples → can be → objects)
A → has B (B → has C)
A → has B (B → has C)
온톨로지 그래프 데이터 모델 예시(ontotext)
만약, IoT 데이터를 온톨로지로 구현한다면 온톨로지를 표현하는 스키마 구조를 만들어야 하고, 다음과 같이 스키마가 반영된 온톨로지 데이터 저장소에 데이터를 얻어 저장해야 한다.
- Room → has → Property set
- Property set → has → Property IoT sensor
- Property IoT sensor → has → IoT temperature sensor
그래프 데이터는 편집기로 작성할 수도 있지만, 전용 편집기를 이용하면 편리하다. 다음과 같은 오픈소스 도구를 이용하면 좀 더 편하게 만들 수 있다.
지식 서비스 시스템 구조와 질의 언어
다음은 이를 이용한 일반적인 지식 서비스 시스템 구조를 보여준다. 대부분의 지식 서비스는 다음과 같은 구조를 가진다.
지식 서비스 시스템 구조
그래프 형식으로 표현된 지식을 검색하기 위해서는 검색 언어가 필요하다. 초창기는 SPARQL을 지원하는 JENA란 오픈소스를 사용했으나 자바를 사용하고 무거워, 최근에는 SPARQL을 좀 더 가볍고 편리하게 사용하는 Node.js기반 도구를 이용하는 경향이 많다.
앞의 지식 서비스 시스템을 구현하기 위해서는 지식 데이터를 CRUD(create, read, update, delete)하고 지식을 검색하는 서버를 제공해야 하는 데, Node.js는 서버를 매우 쉽게 만들 수 있다. 게다가, 수많은 무료 도구를 손쉽게 설치할 수 있다.
이외에 페이스 북에서는 수많은 SNS 데이터에서 지식을 검새하기 위해 그래프 DB를 오픈소스로 공개했다.
이를 이용해 다음과 같은 SNS 지식 검색을 수행할 수 있다.
- Who is John's friend? And does John's friend have family, live in Seattle, and like traveling as a hobby?
- What is John's annual income and how much will he earn at the next 10 years?
- How much will Sunny's house price rise in 10 years, and how much will maintenance cost?
물론 검색에 필요한 사실 데이터는 모두 그래프 데이터베이스에 입력되어 있어야 하며, 사실 데이터가 수치일 경우, 머신 러닝 및 통계 패키지를 이용해 계산된 예측값이 그래프 노드 어딘가에 입력되어 있어야 한다. 당연히 예측값 계산은 다양한 통계기법(회귀식, 커브피팅, 딥러닝 등)을 이용해 미리 준비해 놓어야 한다.
오픈소스 소개
시멘틱 데이터를 만들기 위한 온톨로지 도구는 다양하다. 오픈소스에도 많은 Knowledge base 구조를 제공하는 프로젝트가 많다.도구는 크게 3가지로 나뉘는 데, 지식 그래프 모델링 및 질의 도구, wiki 지식 기반 도구, 텍스트 마이닝(text mining)가 있다. wiki도구는 단순한 키워드 검색 추론을 제공한다. 온톨로지 기반의 시멘틱 검색은 그래프 링크에 해당하는 술어 관계도 포함해 지식 검색이 가능하다. 텍스트 마이닝은 텍스트에서 추출한 사실 데이터의 그래프 모델에서 지식을 질의하는 서비스를 가능하게 한다. 이때 텍스트는 워드, 문서, 도면 등이 될 수 있다. 이런 데이터는 ETL(Extract, Transform and Load) 도구를 이용해 추출할 수 있다.
- Text mining using tidytext
- Dgraph graph database
- CKan
- Neo4j graph database
- GraphDB and Dragon query engine of Facebook
- Wiki tools
- Knowledge graph js
- Ontology store
- Node JS with semantic data
- Jena for building semantic web and linked data
- Fuseki SPARQL server
- Ontology dapi based on Blockchain
이외 최근 딥러닝(Deep Learning)이 발달하면서, 이를 기반으로 한 텍스트 마이닝 기술이 발전하고 있다.
여기서는 Linked Data인 온톨로지 그래프에서 SPARQL을 통해 데이터를 질의하는 방법과 CKan 오픈 데이터 플랫폼을 이용해 개방형 데이터 지식 서비스를 제공하는 방법을 간단히 알아보겠다.
Fuseki 기반 간단한 SPARQL 서버 실행
미리 이런 도구를 설치해 놓고 필요할 때 꺼내서 사용하는 도커(docker) 기반 SPARQL 서버도 있다. fuseki는 편리한 SPARQL 서버로 미리 트리플 형식 데이터를 놓고 업로드해 놓으면 손쉽게 SPARQL 질의를 할 수 있고, 이는 인터넷 상에서 서버로 동작시킬 수 있다. 참고로, 도커는 가상머신처럼 동작하는 컨테이너이다. 이를 이용하면 복잡한 환경과 프로그램을 배포하기 쉽게 이미지로 만든 후 재사용할 수 있다.
사용은 간단하다. 도커를 설치한 후, 다음과 같이 도커 명령행 인터페이스에서 명령을 입력한다.
docker run -p 3030:3030 -e ADMIN_PASSWORD=pw123 stain/jena-fuseki
크롬에서 localhost:3030 주소를 입력하고, 아이디와 암호를 admin, pw123으로 입력한다. 그럼, 다음과 같이 query를 사용할 수 있다.
참고로, 이 글에서 사용한 fuseki 도커 이미지에 대한 상세한 설명은 아래를 참고하길 바란다.
각 도구는 목적에 맞게 활용해야 이익을 얻을 수 있다. 그러므로, 도구가 목적에 맞는 지 분석하여 기능을 이용한 후 사용해야 한다.
미리 이런 도구를 설치해 놓고 필요할 때 꺼내서 사용하는 도커(docker) 기반 SPARQL 서버도 있다. fuseki는 편리한 SPARQL 서버로 미리 트리플 형식 데이터를 놓고 업로드해 놓으면 손쉽게 SPARQL 질의를 할 수 있고, 이는 인터넷 상에서 서버로 동작시킬 수 있다. 참고로, 도커는 가상머신처럼 동작하는 컨테이너이다. 이를 이용하면 복잡한 환경과 프로그램을 배포하기 쉽게 이미지로 만든 후 재사용할 수 있다.
사용은 간단하다. 도커를 설치한 후, 다음과 같이 도커 명령행 인터페이스에서 명령을 입력한다.
docker run -p 3030:3030 -e ADMIN_PASSWORD=pw123 stain/jena-fuseki
Docker에서 fuseki 이미지 실행 모습
도커에서 실행된 fuseki 기반 SPARQL 서버
참고로, 이 글에서 사용한 fuseki 도커 이미지에 대한 상세한 설명은 아래를 참고하길 바란다.
각 도구는 목적에 맞게 활용해야 이익을 얻을 수 있다. 그러므로, 도구가 목적에 맞는 지 분석하여 기능을 이용한 후 사용해야 한다.
CKAN 기반 오픈 데이터 지식 서비스 개발
CKAN은 2010년 영국 정부에서 오픈 데이터 지식 서비스 플랫폼으로 사용된 이후, 미국 등 각국 정부에서 오픈 데이터 플랫폼 표준처럼 사용되고 있다. CKAN은 오픈 데이터 수집, 저장, 관리, Open API, RDF, GeoJSON, 지도맵피 등 다양한 기능을 오픈소스 모듈을 통해 지원한다. 무료 라이센스로 사용 및 소스 편집에 제한이 없다.
사용을 위해, 우분투가 설치되어 있다는 가정하에, 다음 링크를 참고해 CKAN을 설치한다. 참고로, postgresql DB 사용자 지정할 때 암호를 꼭 입력한다(명령어 참고).
다음과 같이 예제 데이터셋을 클릭하면, 다양한 파일 포맷이나 API를 지원해 오픈 데이터를 사용할 수 있다.
이외에, Virtuoso DB 등을 사용하면, 엑셀, 워드 등 다양한 데이터소스에서 정보를 정규적인 쿼리 식을 이용해 얻을 수 있다.
Virtuoso Server 개념도
레퍼런스
- 지식 그래프 설명 #1, #2, #3, #4
- BIM ontology, BOT app and BIM ontology visualization
- Semantic Building Information Model for Facility Management
- Intelligent System for Facility Management
- Ontology change management approach for facility management
- Ontology based facility data model for energy management
- Ontology based Reference Data Model
- Ontology based platform for BIM
- BIM Ontology
- Linked Open Vocabularies for IoT
- BIM Topology Ontology, DTU
- shorttext
- CKAN
- Virtuoso DB
잘 읽고 갑니당
답글삭제넵.
삭제감사합니다
답글삭제넵
삭제