728x90
반응형

편집자 주: 이 프레젠테이션은 Jesús Barrasa가 GraphConnect 뉴욕시 2018년 9월에 발표한 내용이에요.

프레젠테이션 요약

헤수스 바라사 님은 의 Telecom Solutions 이사예요. 오늘 강연에서는 Semantic 기술에 대한 배경을 이야기해주실 거예요.

바라사 님은 온톨로지에 대한 간단한 소개로 시작하는데요. 간략한 소개를 한번 살펴볼까요? 온톨로지(Ontology)는 도메인 모델에서 지식을 표현하는 형태를 말해요. 온톨로지는 지식 표현(Knowledge Representation)을 나타내는 포괄적인 용어일 수도 있는데, 추론(KR), 자연어, Machine Learning 또는 자동 학습, 음성, 시각, 로봇공학 및 문제 해결 등이 모두 이 온톨로지라는 큰 우산 아래에 속한답니다.

지식 표현은 애플리케이션 로직의 일부를 외부로 옮겨 데이터를 만들 수 있는 방식으로 데이터를 더욱 스마트하게 만드는 아이디어에요. 지식 표현의 예로는 구조화된 데이터, 자기 설명 데이터 또는 자연어 텍스트가 아닌 잘 정의된 의미론의 관점에서 설명된 데이터를 게시하는 것이 있죠.

바라사 님은 온톨로지의 예로 FIBO 온톨로지의 일부를 사용하는데요. FIBO 온톨로지 부분은 다양한 금융 용어와 관계를 설명하고 있어요. Barrasa 님은 또한 Schema.org를 사용하여 온톨로지의 예를 제공하면서 Google 검색과 비교하기도 해요.

Neo4j에서 온톨로지는 두 가지 주요 용도로 사용돼요. 첫째, 상호 운용성은 공유 어휘의 정의이고, 둘째, 조각에 대한 실행 가능한 지식인 추론이죠.

마지막으로 Barrasa 님은 비디오 예를 공유하는데요. Neo4j를 사용한 온톨로지와 그래프 neosemantics를 보여주고 있어요.

전체 프레젠테이션

저는 헤수스 바라사이고, 의 통신 솔루션 부문 이사예요. 오늘은 다른 모습으로 왔는데요. Semantic 기술 전문가 모자를 쓰고 왔어요! 전생에 Semantic 기술 분야에서 박사 학위를 취득한 후 통신 업계에서 7년을 보냈어요. 특히 RDF와 온톨로지를 집중적으로 사용해서 현실 세계의 문제를 해결했죠.

오늘은 온톨로지와 이를 Neo4j와 함께 사용하는 방법에 대해 이야기하고 싶어요.

간략한 소개

온톨로지가 아직 생소하신 분들을 위해 간략하게 소개할게요. 요즘은 AI 시대라서 정말 핫하죠. 올해의 화두는 AI인데, 최근에는 AI를 Machine Learning의 동의어로 보는 경향이 있지만, 사실은 그렇지 않아요.

AI에 속하는 몇 가지 분야를 나열해봤어요.

로봇 공학, 자연어, 음성 이해, 비전, 그리고 자동화된 학습이 있죠. 물론 Machine Learning도 있지만, 제가 이야기하고 싶은 부분은 바로 Knowledge Representation과 추론 영역이에요.

Machine Learning 스펙트럼의 반대편을 생각해 보면, 이런 문제가 있을 수 있어요. 사진 속 이미지가 비스킷인지 강아지인지 구분해내는 굉장한 모델을 만드는 Neural Network가 있다고 쳐요. 그런데 왜 그렇게 판단하는지는 설명할 수가 없어요. 그냥 작동하는 거죠. 이게 바로 블랙박스 문제예요.

AI라는 큰 우산 아래 스펙트럼의 반대편에는 Knowledge Representation이 있어요. 여기서는 추론 과정을 명확하게 만들려고 노력하죠. 우리가 무엇을 알고 있는지, 그리고 이런 추론을 어떻게 실행하는지 설명하려고 애쓰는 거예요. 이걸 더 설명 가능한 AI라고 부르기도 해요. 바로 여기가 우리가 집중하는 부분이고, 온톨로지가 딱 맞는 곳이죠.

Knowledge Representation

Knowledge Representation의 근거는 뭘까요? 음, 여기 아주 단순화된 그림이 하나 있어요.

대부분의 솔루션에서 애플리케이션 로직이 큰 부분을 차지하고, 데이터는 그저 데이터일 뿐인 경우가 많아요.

Knowledge Representation의 핵심 아이디어는 애플리케이션 로직의 일부를 데이터 쪽으로 옮겨서, 데이터를 더 똑똑하게 만드는 거예요. 이렇게 하면 어떤 애플리케이션에서든 반복할 필요 없이 지식을 재사용할 수 있게 되죠. 지식을 명시적으로 만드는 거니까요.

Tim Berners Lee가 Semantic Web에 대해 공유했던 Knowledge Representation 및 추론에 대한 아이디어에는 많은 장점과 훌륭한 예시들이 있어요. 혹시 기억하시나요? 당시 웹은 순전히 사람이 소비하기 위한 것이었어요. 게시된 데이터는 꽤 단순했고, 그냥 텍스트였죠. 반대편에는 애플리케이션이 아니라 클라이언트가 있었고, 그 텍스트를 이해해야 하는 건 사람이었어요.

Semantic Web을 지지하는 사람들은 자연어 텍스트를 게시하는 대신, 더 잘 구조화된 데이터, 자기 설명적인 데이터, 잘 정의된 의미론으로 설명된 데이터를 게시하자고 제안했어요. 그들은 우리가 더 스마트한 일을 할 수 있는 더 스마트한 데이터를 원했던 거죠. 그렇게 되면 해당 지식을 사용하는 범용 애플리케이션을 가질 수 있게 되니까요. 2000년대 초반에 꽤 유명해졌었죠.

온톨로지란 무엇인가?

온톨로지(Ontology)는 도메인 모델에서 지식을 표현하는 형태를 말해요. 특정 도메인을 나타내죠. 그런데 온톨로지는 다른 모델들과는 조금 다른 특별한 세 가지 특징을 가지고 있어요. 우리는 많은 경우에 모델을 만들죠. 예를 들어, 데이터베이스를 생성할 때도 모델을 만들고, 엔터티 관계 모델을 만들거나, 모델링 도구를 사용할 때도 모델을 만들고, 심지어 화이트보드에 무언가를 끄적일 때도 모델을 만들잖아요. 온톨로지는 이러한 모델들과 차별화되는 세 가지 특징을 갖춰야 한다는 거예요.

온톨로지의 첫 번째 특징은 형식적인 표현이어야 한다는 점이에요. 즉, 기계가 읽을 수 있어야 한다는 거죠. 이게 핵심이에요. 어느 정도 구조화된 형태를 가지고 있어야 해요.

두 번째 특징은 온톨로지가 특정 도메인에 대한 명시적인 설명이어야 한다는 거예요. 자연어 텍스트 설명과는 달리, 해당 도메인에 속하는 엔터티와 이들이 서로 어떻게 관련되어 있는지 명확하게 열거해야 해요. 다른 엔터티에 연결된 엔터티에 대해 이야기하고 있으니, 정말 그래프처럼 들리지 않나요? 온톨로지에 사용되는 대부분의 모델링 언어는 실제로 그래프 모델인 RDF를 기반으로 하고 있어요. 명시적인 설명은 정말 중요하답니다.

세 번째 특징은 합의된 지식, 즉 공유된 어휘라는 개념이에요. 이 어휘는 일반적으로 커뮤니티에서 공유되죠. 물론 온톨로지를 만들어서 자신만을 위해 사용할 수도 있지만, 대부분의 인기 있는 온톨로지와 여기서 보여드릴 온톨로지는 커뮤니티에서 공유하는 합의된 어휘를 포함하는 공유 온톨로지랍니다.

온톨로지의 예

위 이미지는 FIBO 온톨로지의 일부 내용이에요. 금융 업계에 종사하시는 분들이라면 아마 잘 아실 텐데요. 이 부분에서는 다양한 금융 용어와 관계를 설명하고 있어요. XML 기반이라는 것을 알 수 있고, 기존 WL 언어를 사용하고 있으며, 상단과 같은 내용을 볼 수 있죠. 클래스 설명은 카테고리이며, 비상장 회사가 무엇인지 설명하고 있네요.

폐쇄된 기업, 비상장 기업과 같은 동의어가 있다는 것을 알 수 있지만, 더 흥미롭게도 진술의 `sub-class`와 같은 것이 있어요. 비상장회사는 주식회사의 `sub-class`라는 거죠. 이 지식은 곧 유용해질 거예요.

우리는 우리의 지식을 명시적으로 만들고 있어요. 공식적인 설명인 거죠. 주식회사에 대한 설명도 있고, 이는 이사회 합의에 따라 결정되기 때문에 이를 명시적으로 밝히고 있는 거예요. 주식회사에는 법인설립 날짜가 있으므로, 해당 특정 도메인의 모든 요소에 대한 공식적인 설명이며 공유되고 있죠. EDM 협의회에서 관리하고 공유된 어휘이며, 꽤 널리 사용되고 있답니다.

Schema.org

온톨로지의 또 다른 좋은 예는 Schema.org에요.

여러분 모두 잘 아시다시피, 는 검색 결과에서 개념과 일치하는 정보가 있을 때 위와 같은 설명을 보여주죠.

이건 사람이 읽을 수 있는 버전이고요. 예를 들어 Miles Davis의 앨범을 검색하면 제목, 설명, 아티스트 정보가 표시되는데, 이런 결과들은 Schema.org 온톨로지에 따라 설명되어 있어요.

여기 보이는 건 온톨로지 정의 그 자체는 아니고요, 특정 온톨로지에 따라 주석이 달린 콘텐츠의 일부라고 보시면 돼요.

아래에서는 이걸 앨범으로 설명해볼게요.

앨범은 이름, 설명, 장르를 가지고 있고, 아티스트 및 다른 요소들과 연결되어 있죠.

온톨로지는 이미 존재하고 널리 사용되고 있는데, 이걸 활용해서 뭔가 해보고 싶다고 생각했어요. Neo4j에 데이터도 있는데, 온톨로지도 함께 사용하고 싶어진 거죠.

온톨로지와 Neo4j

Neo4j에서 온톨로지를 사용하는 방법은 크게 두 가지가 있어요.

온톨로지의 첫 번째 용도는 바로 상호 운용성이에요. 공유된 어휘를 사용한다면, 데이터를 공유하고 그 어휘에 따라 데이터를 공개할 때 공식적인 정의가 있기 때문에 사람들이 데이터를 사용하고 이해할 수 있겠죠. 사람들은 해당 데이터를 사용하는 애플리케이션을 정의하거나 구성할 수 있게 될 거고요. 상호 운용성과 RDF는 전체 Semantic Web 개념의 핵심이라고 할 수 있어요.

두 번째 용도는 추론이에요. 온톨로지는 추론을 실행하는 데 사용하는 지식 조각을 포함하고 있죠. 추론은 가지고 있는 지식으로부터 새로운 지식을 이끌어낼 수 있는 건데요. 만약 Graph Database에 데이터가 있고, 그로부터 새로운 사실을 도출하고 싶다면 온톨로지를 사용할 수 있어요.

Neo4j에 데이터가 그래프로 저장되어 있는데, 이 데이터를 RDF로 노출하고 싶고, 비표준 어휘에 따라 노출하고 싶은 거죠. 저는 Schema.org를 사용할 예정이에요.

아키텍처 관점에서 보면 어떤 모습일까요? 관련된 요소는 무엇일까요? 우선, 데이터 저장소로 Neo4j가 있고, 제가 작업 중이고 활발하게 개발한 확장 프로그램인 neoSemantics를 사용할 거예요. neoSemantics.

RDF를 수집하고 게시할 수 있게 해주는 여러 구성 요소들이 있는데, 저는 이 구성 요소들을 사용해서 Neo4j의 데이터를 RDF로 노출하고, 특정 어휘에 따라 마이그레이션하려고 해요.

저는 즉시 답변을 얻고 싶어요. 제 데이터를 공개 온톨로지와 일치시키는 매핑을 정의할 건데요, FIBO의 개념을 따온 schema.org의 금융 확장 기능을 사용하려고 합니다.

제 계획은 해당 확장을 통해 제 Neo4j에서 쿼리를 실행하는 거예요. Cypher, 또는 http 요청을 통해서요. 저는 이 구성 요소가 제 쿼리 결과를 해당 어휘에 매핑하고, 이를 RDF로 공개해주길 바라요. schema.org의 재정적 확장과 neoSemantics 확장을 사용할 거예요.

그 후에는 우리가 해당 정보를 사용하는 방법과 해당 온톨로지를 사용하여 몇 가지 기본적인 추론을 실행하는 방법을 보여드릴게요.

비디오 예시

시작해 볼까요?

Neo4j를 열어볼게요.

이건 뉴욕주에서 $30,000 이상의 대출 건들이에요. 여기서는 3개만 표시하도록 제한을 걸어놨어요.

모델은 이런 모습이에요. 대출과 차용인을 나타내는 nodes를 가지고 있죠. 익명화된 데이터라서 고유 식별자와 우편번호에 대한 연결을 갖게 돼요. 그리고 우편번호는 주와 연결되고요.

해당 데이터 중 일부를 RDF로 노출하기 위해 브라우저를 사용해서 GET 확장을 요청할 거예요. 의미론적 확장에 전달하는 유일한 매개변수는 대출 ID이고요. 이걸 실행하면 RDF 표현을 얻을 수 있어요.

RDF에 익숙하시다면, 이건 제 그래프에 있는 데이터의 Turtle 직렬화 표현이에요. 모든 부동산, 대출의 모든 속성, 그리고 차용인과 주와의 연결을 보여주죠. RDF에 대한 일반적인 매핑이라고 할 수 있어요.

이제 제가 하고 싶은 건 매핑을 정의하는 거예요. 네임스페이스를 정의하고, 사용할 어휘에 대한 링크와 여러 key-value 쌍에 대한 링크를 지정할 거예요.

제 그래프의 이 속성이 Schema.org의 이 속성과 일치한다는 의미예요. 이 category 또는 label은 이러한 다른 category에 해당한다는 거죠.

이제 매핑이 완료되었으니, transaction endpoint에 대한 요청을 다시 실행해 볼게요. 제가 매핑한 요소들은 이제 온톨로지 스키마에 따라 설명될 거예요. 이 변환은 실시간으로 이루어지죠.

제 데이터의 일부만 노출하는 방법으로 이걸 사용할 수도 있어요. 지도 데이터만 표시하는 parameter가 있다면, 온톨로지에 매핑된 데이터의 일부만 표시할 수 있는 거죠. 이건 정확히 동일한 정보이지만, 스키마 또는 온톨로지의 요소만 노출하는 거예요.

아이디어는 우리가 그래프를 가지고 있고, 그걸 그래프에 매핑하고 싶다는 거예요. 이는 해당 매핑을 정의하는 많은 작업을 단순화해 주죠. Cypher를 실행하고 모델의 더 큰 부분을 노출할 수 있지만, 두 번째 부분은 추론에 관한 것이고 그건 가져오기 부분이에요. 아이디어는 지금 온톨로지를 가져와서 온톨로지를 그래프로 가져와 추론을 실행하는 데 사용하고 싶다는 거죠.

온톨로지에서 데이터를 스트리밍할 수 있고, Schema.org와 같은 것을 얻게 돼요. 이 그래프에서 정보를 가져와 Neo4j에 넣고 모델을 만들 수 있었죠. 그게 제가 한 일이에요.

node로 표시되는 Schema.org 온톨로지의 복사본이 있고, 거기에 label이 있으며, label은 sublabel of를 통해 연결돼요. 아래는 온톨로지를 간략하게 나타낸 거예요.

아이디어는 이제 Neo4j에 온톨로지를 표현하고 이를 사용하여 몇 가지 추론을 실행한다는 것인데요. 제가 할 수 있는 일은 대출이 포함된 모델을 온톨로지에 연결하는 거예요. 저는 온톨로지를 위한 새로운 엔터티, 즉 대출을 생성할 건데요. subclass Schema.org 온톨로지의 대출 개념이죠.

저는 이렇게 말할 거예요. “좋아, 데이터베이스에 있는 모든 금융 상품을 나에게 주세요.” 아시다시피 대출 데이터베이스 어디에도 금융 상품이라는 언급이 없어요. 하지만 저는 이러한 요청을 실행하고 대출이 다음과 같이 설명되었기 때문에 이러한 대출을 받게 되는 거죠. subcategory Schema.org 온톨로지의 금융 상품.

이는 인공 지능 또는 Machine Learning 솔루션에 온톨로지 및 그래프를 구현하는 데 사용되는 많은 용도 중 일부에 불과해요.

  • Machine Learning

에이치시스템즈LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형

+ Recent posts