지식그래프는 무엇인가? 대부분 문서들을 보면 지식그래프가 무엇인지 보다는 이것을 쓰면 왜 좋은가 라는 이야기로 시작한다. CS520 수업에서도 지식그래프가 무엇인지에 대한 정의는 잠깐 나오고 읽어볼 논문으로 몇가지 나오는데, 이중 하나가 지식그래프가 무엇인지 좀더 상세하게 다룬다.
두괄식으로 던져놓고 논문의 설명을 옮겨적어본다
지식그래프의 핵심은 추론이다
A knowledge graph acquires and integrates information into an ontology and applies a reasoner to derive new knowledge. - "Towards a definition of knowledge graphs."
내가 논문을 보며 이해한 지식그래프의 핵심은 추론 능력이다. 그리고 이 논문에서 왜 그런 결론을 내게 되는지 차근차근 살펴보면 된다. 위 문장을 대략 해석해보면 다음과 같다. "지식그래프는 획득한 정보를 온톨로지 기반으로 통합하고 추론을 적용하여 새로운 지식을 도출한다".
지식 그래프, 지식 베이스(Knowledge base) 차이는 무엇인가
이 논문에서 얘기하는 현재 지식그래프 정의에 대한 문제는 두가지다. 하나는 가장 처음 지식그래프를 얘기한 구글 블로그에도 정확한 정의가 없으며, 지식그래프와 지식베이스를 혼용해서 쓰고 있다는 것이다. 그 예로 지식그래프를 사용중인 Yahoo의 직원도 지식그래프와 지식 베이스의 차이를 정확히 구분하지 못한다고 이야기한다.
그렇담 지식 그래프와 지식베이스의 차이가 무엇인지 얘기를 한다면 지식그래프가 무엇인지 좀더 명확하게 설명할 수 있을 것이다.
A knowledge base (KB) is a technology used to store complex structured and unstructured information used by a computer system. The initial use of the term was in connection with expert systems, which were the first knowledge-based systems.
지식 베이스에 관한 wikipedia의 설명이다. "정형화된 또는 비정형의 데이터를 컴퓨터 시스템을 이용해 저장한느 기술"이라고 보면 되겠다. 즉 다양한 데이터를 모은다는 뜻이다. 여기서 KG(Knowledge Graph)와의 차이는 정보를 모은다고 되어있다는 것이다. 위의 KG의 정의를 보면 정보를 ontology(사실 스키마랑 같은 말이라던데)에 맞게 데이터를 모은다고 정의하고 있다.
그렇다면 이런 질문도 가능할것 같다. ontology(스키마)없이 정보를 모으는 것은 KG가 아니란 뜻이네? 맞다. 그렇다면 여기서 다시 ontology에 맞게 모으는 것이 무엇인지 겉만 핱아본다
RDF vs Property graph
RDF는 Resource Description Framework다. 쉽게 말하면 각 정보들을 w3c표준에 맞게 올리고, 이렇게 웹에 올려져있는 데이터를 모아 triple을 만드는 것이다.
만드는 예시는 아주 간략히 보면 다음과 같다.
I like RDF.
<statement> rdf:type rdf:Statement
<statement> rdf:subject <me>
<statement> rdf:predicate <likes>
<statement> rdf:object <RDF>
위의 예를 보면 I like RDF라는 Statement를
me : subject
likes : predicate
RDF : object
로 변경한 것을 볼 수 있다. 여기에 이러한 데이터에 관해 IRI를 적는다는 설명까지 봤는데 복잡했다. 아무튼 대략 내가 이해한 바로는 IRI를 붙이는 것은 정확히 어디 source에서 왔는지 알기 위함이다. 위에 변형 버전은 schema.org의 스키마들을 가지고 정형화된 체계안에서 만들어 내는 것이다.
Property Graph
속성 그래프라고 표현하는게 맞을까. 어쨋든 neo4j는 property graph다. 이 장점은 neo4j 블로그 내용을 따왔다.
위의 데이터를 각각 구조로 표현하면 아래와 같다.
RDF vs Proprety
골자만 놓고 보면 property로 하면 좀더 간편한 표현이 가능한 것으로 보면된다. 물론 neo4j 블로그에서 가져온 내용이니 어느정도 편향은 감안하고 봐야한다고 생각한다.
그럼 둘중 무엇을 써야한느가?
내가 CS520과 몇개의 논문을 보니 둘중 무엇을 언제 써야하는것은 하나의 이유라고 본다.
Semantic web(또는 web3.0)에 내 데이터를 기여하고 싶다면 RDF기반으로 하면되고, 그게 아니라 자신만의 내부 스키마로 작업하고 싶다면 neo4j와 같은 Property graph를 쓰면된다. 내가 찾아봤을때 이정도가 끝이다. 그리고 Cypher문의 장점은 같은 결과를 내기위해 써야하는 문장이 SQL에 비해서 짧다는데 있다.
어떤사람들은 불필요한 JOIN기능을 쓰지 않아서 더 낫다고 하기도 한다. 내가 봤을때 그건 그다지 장점은 아닌거 같다. 왜냐하면 Timecomplexity 측면에서 본다면 둘이 그렇게 다를거 같지는 않기 때문이다. 그래서 Cypher의 장점은 SQL보다 Query문이 짧다로 보면 될것 같다. 아직 고인물이 없는 업계라 그런지, Query문은 짧지만 Search속도가 더 빠른편은 아니다.
끝맺으며
좀더 일찍 관심을 가지고 했더라면 나에게 KG가 무슨 의미를 가지는지 알수 있었을듯 하다. 그럼에도 몇일 찾은 결과로 현재의 문제나 무엇을 왜 써야하는지 개인적으로 의미를 얻어서 좋은 일이라고 생각한다.
두서없이 쓴 경향은 있지만, 현재도 앞으로 사람들이 KG를 기반으로 많은 이야기를 할것 같다. 그때 그것이 정확히 어떤의미인지 파악하고, 냉정하게 기술력과 그들의 수준을 평가하는데 도움이 될 수 있는 글이었길 바란다
뿅.
CS520
https://neo4j.com/blog/rdf-triple-store-vs-labeled-property-graph-difference/
https://www.w3.org/wiki/RdfReification
Ehrlinger, Lisa, and Wolfram Wöß. "Towards a definition of knowledge graphs." SEMANTiCS (Posters, Demos, SuCCESS) 48.1-4 (2016): 2.
R. Akerkar and P. Sajja. Knowledge-Based Systems. Jones and Bartlett Publishers, USA, 1st edition, 2009.
https://blog.google/products/search/introducing-knowledge-graph-things-not/
https://dining-developer.tistory.com/64
'2022 > Geo Knowledge Graph' 카테고리의 다른 글
[지식 그래프] 여는 말 (0) | 2022.07.04 |
---|