TITLE : [Paper Review] Knowledge Graph Construction
YOUTUBE LINK : https://youtu.be/_THQzPiLvyI PRESENTER : 고려대학교 산업경영공학부 DSBA 연구실 DURATION : 01:05:42 PUBLISHED : 2022-12-30
Table of contents
FULL SCRIPT
안녕하세요.
이번 논문 세미나 발표를 맡은 DSBA 연구실 석사과정 노건호입니다.
오늘 세미나는 특정한 논문 하나에 집중하기보다는 제가 지난 세미나부터 계속 소개 드리고 있는 논리지 그래프에 대한 이야기를 해보려고 하는데요.
그 중에서도 특히 논리지 그래프를 만드는 방법에 대한 전반적인 소개를 주제로 진행하려고 합니다.
발표의 목체는 다음과 같습니다.
논리지 그래프 컨스트럭션에 대한 소개를 하는 것이 목표로 우선 오버뷰에서 논리지 그래프 만들기 위한 다양한 서브테스크를 예시와 함께 소개 드리려고 합니다.
그 다음 디테일 부분에서는 각각의 서브테스크 모듈들이 하는 역할을 조금 구체적으로 살펴볼 것입니다.
사실 여기서 소개 드린 각각의 서브테스크들이 각각 독립적인 연구 주제가 될 수 있는 만큼 매우 내용이 방대한 분야들인데요.
그러나 하나의 세미나로 구성하는 과정에서 많이 간추려졌기 때문에 이번 세미나에서는 구체적인 방법론 자체 소개보다는 아 논리지 그래프는 이런 과정을 통해서 만들어지는구나 라고 소개해 드리기 위한 세미나라고 이해해 주시면 감사하겠습니다.
그 다음으로는 논리지 그래프 구축하는 되게 고전적이고 중요한 베이스라인 모델인 그래프 알리엘이라는 모델을 하나 조금 더 자세하게 소개 드리려고 합니다.
네 이제 인트로덕션부터 발표 시작해 보도록 하겠습니다.
본 장표는 지난번 제 세미나의 장표 중 하나를 가져온 것으로 일반적인 텍스트 데이터를 Information Extraction System을 통해서 논리지 그래프로 만드는 과정을 나타낸 그림입니다.
빨간색으로 박스 친 부분을 보시면 왼쪽에 위키피디아 등과 같은 일반적인 텍스트를 오른쪽에 knowledge base나 knowledge graph 형태의 정형화된 데이터로 만들어주고 있는데요.
지난 발표에서는 제가 단순하게 특정한 Information Extraction System을 이용해서 다음과 같은 knowledge base와 knowledge graph를 만든다고 이야기를 했었습니다.
오늘은 이 Information Extraction System에 대해서 알아보고자 하는 것입니다.
잘 아시겠지만 본격적인 시작에 앞서서 용어도 다시 한번 짚고 넘어가도록 하겠습니다.
본 예시에서 knowledge base와 knowledge graph에 대한 용어를 표현해 놓은 것인데요.
기본적으로 knowledge base와 knowledge graph는 같은 것을 다르게 표현한 것이라고도 생각할 수 있기 때문에 기본적인 노테이션은 모두 동일합니다.
본 예시에서 노건호 제 이름과 dsba처럼 어떠한 관계의 주체 혹은 객체가 되는 것을 entity라고 이야기를 하면서 하고 주체 객체를 각각 subject, object라고 부릅니다.
혹은 그래프적 표현에서는 head나 tail이라고도 표현하곤 합니다.
그리고 그 사이에 관계를 여기서 member of라고 나와있는 관계를 relation이라고 표현하고 있습니다.
추가로 하나의 트리플 형태의 정형화된 정보를 fact라고 부르고 있고요.
그래프에서 entity는 node라고도 불리고 relation은 화살표인 edge라고도 표현되고 있습니다.
이제 용어들도 다시 복습해 보았으니 본격적으로 knowledge graph construction의 과정을 step by step으로 살펴보도록 하겠습니다.
이전 장표에서 단순하게 information extraction system이라고 한마디로 넘어갔던 knowledge graph 생성 과정은 다음과 같이 여러가지 단계의 서브테스크를 거쳐서 생성이 됩니다.
실제로 저희가 어떠한 목적을 가지고 knowledge graph를 구축을 하냐에 따라서 특정한 서브테스크나 모듈들은 사용이 되기도 하고 혹은 아예 별도의 테스크로 활용이 되기도 하는데요.
다음에 제가 가져온 6가지의 서브테스크들은 제가 관련된 분야를 공부하면서 이 정도 분야들은 전부 한번 짚고 넘어가야 knowledge graph가 어떻게 만들어지는지를 이해할 수 있겠다라고 한 것을 전부 모아온 것입니다.
색깔을 보시면 제가 특별히 3가지 서브테스크 같은 경우에는 진한색으로 표시를 했고 나머지는 흰색으로 표시를 했는데요.
진한색으로 표시한 것 같은 경우가 어떠한 목적으로 knowledge graph를 구축을 하더라도 반드시 포함되는 핵심적인 서브테스크라고 생각을 해주시면 됩니다.
지금부터 우측에 나와 있는 예시문장 Steve Jobs & Steve Wozniak Co-founded EPRIN 1977 이라는 문장을 가지고 예시를 통해 각각의 서브테스크의 역할과 과정을 가볍게 살펴보도록 하겠습니다.
첫 번째로 살펴볼 서브테스크는 Named Entity Recognition 입니다.
Named Entity Recognition은 NER 테스크로 별도의 테스크로 많이들 알고 계실텐데요.
본 과정은 과정의 이름에서 바로 나타내듯이 엔티티를 찾아내는 과정입니다.
본 문장에서 예를 들어보면 아까 knowledge base나 knowledge graph에서 어떤 주체는 혹은 객체가 될 수 있는 그러한 부분들을 찾아준다고 생각하시면 되는데요.
그림에서는 Steve Jobs와 Steve Wozniak, Apple 이 세가지가 표시가 되어 있습니다.
이 각각의 위치를 찾아주는 것 뿐만 아니라 그 각각이 어떤 종류의 엔티티인지도 지금 표현해 놓은 것을 보실 수 있습니다.
또 특히 제가 뒤쪽에 1977년이라는 숫자는 밑줄을 그어 놨는데 이렇게 표시한 이유는 제가 앞전에도 말씀드렸다시피 knowledge graph를 구축하는 목적에 따라서 서브테스크를 조금씩 다르게 활용한다고 말씀드렸는데요.
뒤쪽에 제가 조금 더 구체적인 서브테스크 설명에서 말씀드리겠지만 1977 같은 이런 숫자나 시간 같은 경우는 knowledge graph를 만들 때 엔티티로 표시를 하는 경우도 있고 하지 않는 경우도 있어서 제가 이따 설명해 드리기 위해서 표시해 놓은 것입니다.
이렇게 좀 전에 NER 테스크를 통해서 어떠한 관계의 주체나 객체가 될 수 있는 그러한 요소들을 찾았다면 이번에는 그 객체들 사이에 관계를 찾아내야 할 것입니다.
이렇게 그 둘 사이에 관계를 찾아내는 서브테스크를 relation extraction이라고 합니다.
본 테스크도 역시 이름에 그대로 드러나 있는데요.
아까 보여드렸던 동일한 문장의 예시를 통해서 어떤 식으로 이루어지는지를 살펴보도록 하겠습니다.
일전에 NER 테스크에서 저희가 스티브 잡스와 스티브 워즈니악을 사람으로 애플을 organization이라고 찾아 놓았었는데요.
여기서 저희 사람들은 읽자마자 바로 눈치를 챌 수가 있습니다.
스티브 잡스와 스티브 워즈니악이 애플이라는 어떤 단체를 만들었구나.
그래서 이 둘이 애플의 어떤 창시자, 창업자라는 이러한 관계를 가지고 있다는 걸 바로 알 수 있을 텐데요.
이러한 엔티티 사이의 관계를 추출해내는 것입니다.
그 결과를 제가 푸른색으로 써 놓았는데 보시면 스티브 잡스와 애플 이 사람과 이 집단 사이에 어떤 파운더라는 관계가 있다 라는 게 나타나 있고 또 마찬가지로 스티브 워즈니악도 애플과 파운더라는 관계를 가지고 있다고 표현이 되어 있습니다.
Named entity recognition과 relation extraction을 통해서 얻은 결과를 다시 정리하면 위쪽 보라색과 같은 결과를 얻을 수가 있습니다.
주체와 객체를 찾고 그 사이의 관계를 찾았으니까 제가 처음에 소개 드렸던 knowledge base나 knowledge graph의 형태로 바로 표현을 할 수가 있습니다.
보시면 Subject, Object, Subject, Object 그 사이의 relation의 형태로 우리가 알고 있는 트리플의 형태로 이미 정보를 추출해내는 데 성공을 했습니다.
그래서 제가 처음에 이렇게 여섯 가지의 Subtask를 knowledge graph를 만들기 위한 스텝들로 소개를 드렸지만 사실 이 두 가지 과정만 거쳐도 이미 제가 처음에 예시로 보여드렸던 knowledge base의 형태를 얻을 수가 있습니다.
그래서 이 두 과정을 사실 information extraction의 핵심이라고 이야기들을 많이 하고 이 둘만을 information extraction이라고 이야기하고 분류하는 경우도 덜어 있습니다.
그리고 또 이 두 과정을 합친 information extraction 같은 경우에는 knowledge graph 분야 이외에도 다른 과정들도 사용할 수 있습니다.
knowledge graph 분야 이외에도 다양한 NLP 테스트에서도 활용이 되고 있습니다.
제일 핵심적이라고 이야기할 수 있는 두 가지 Subtask는 종료되었지만 그 다음 Subtask들도 계속 예시를 들어보도록 하겠습니다.
제가 다음으로 말씀드린 event extraction은 사실 제가 소개 드리는 여섯 가지 Subtask 중에서도 비교적 사용되는 빈도가 적다고 개인적으로는 생각하고 있는데요.
Relation extraction과 비슷한 이름에서 알 수 있듯이 어떠한 엔티티 사이에 Relation을 추출하는 게 아니라 어떠한 Event를 추출하는 것을 목적으로 하고 있습니다.
가볍게 예시만 보여드리면 위쪽에 보면 스티브 잡스와 스티브 워지니아이 애플을 창업했다라는 이러한 문장에서 일전의 Relation extraction 같은 경우에는 이 엔티티들인 스티브 잡스와 애플 사이의 관계가 창립자다 라는 관계를 추출했다고 한다면 Event extraction을 아래에 초록색으로 표시해 놓은 것과 같이 어떠한 Organization business를 Start했다 라는 창업했다는 이벤트에 주목을 해서 사람 사이의 관계보다는 어떤 우리가 창업을 했다는 이벤트를 추출을 하고 거기에 참여자로서 스티브 잡스와 스티브 워지니아을 추출해내는 형태입니다.
여기서 Organization은 애플이라고 따로 엔티티로 표현이 되어 있고요.
이러한 이벤트 Extraction 같은 경우도 실제로 활용하는 것에 따라서 형태는 달라질 수 있으니까 이러한 Subtask가 무엇을 하는지만 짚고 넘어가시면 될 것 같습니다.
다음으로 소개해드릴 Entity Linking은 NER을 통해 얻은 엔티티에 대한 추가적인 정보를 얻기 위한 과정입니다.
Information extraction은 현재의 Corpus 내에서만 이루어지는 것이기 때문에 당연한 이야기지만 데이터에 없는 정보는 얻어낼 수가 없습니다.
예시의 경우에서는 잡스와 워지니아가 애플을 창업했다는 그러한 관계는 알아낼 수가 있지만 그들이 어떤 사람인지 애플이 뭐하는 단체인지는 알 수가 없습니다.
이러한 경우 사람들은 어떻게 할까요?
아마 구글링을 하거나 위키피디아에서 관련된 문서를 검색해 볼 것입니다.
Entity Linking은 이러한 검색의 Knowledge Graph 버전으로 NER을 통해 추출한 엔티티들을 외부 데이터베이스에서 검색을 하여서 관련된 문서를 연결하는 과정입니다.
그래서 Linking이라고 이름이 지어졌고요.
예시의 엔티티들은 매우 유명한 사람과 단체이기 때문에 아래 보이는 Wikidata라는 오픈된 데이터베이스에 이미 각각에 대한 문서가 존재합니다.
Q로 시작하는 나열 번호들은 실제로 본 엔티티들을 Wikidata에서 찾았을 때 얻을 수 있는 문서의 번호입니다.
그래서 스티브 워즈니악의 Q483382라는 문서를 실제로 Wikidata에서 검색해 보면 위쪽에 보이는 것과 같이 실제로 문서를 찾을 수가 있고 제가 한 화면만 스크린샷을 찍어와서 잘 안 보이지만 밑에 정말 이 사람에 대한 다양한 양력과 이 사람이 관련된 프로젝트 등과 같은 다양한 정보들을 다 얻을 수가 있습니다.
다음으로는 Coreference Resolution에 대해서 말씀드리겠습니다.
본 테스트는 다른 문장들 사이에서 동일한 엔티티를 지칭하는 부분을 찾아주는 것인데요.
예시를 보면 두 개의 문장이 추가되었습니다.
첫 번째 문장에서는 사람들을 스티브 잡스와 스티브 워즈니악이라고 각각의 이름을 통해서 표현을 해주었지만 두 번째 문장에서는 데이라는 대명사를 통해서 표현해주었습니다.
또 첫 번째 문장에서 애플이라고 정확히 표현되어 있던 표현은 마지막 문장에서는 Their Company라고 전혀 다른 표현으로 나타나고 있습니다.
사람들은 글을 읽으면서 바로 어떠한 표현들이 동일한 엔티티를 지칭하는지를 바로 알 수 있지만 컴퓨터는 그렇지 못하기 때문에 다양한 표현들 사이에서 동일한 객체를 찾아주는 과정을 Coreference Resolution을 통해서 완성을 하게 되는 것입니다.
그래서 Coreference Resolution이 제대로 작동을 하면 다음과 같이 동일한 사람들을 표현하는 것은 동일하게 노란색으로 표시되어 있고 애플 같은 경우에는 파란색, 메카츠 단독인 것은 초록색으로 각각 어떤 것이 서로 같은 것인지를 전부 잘 표시를 해줄 수 있게 됩니다.
이러한 과정은 Knowledge Graph의 관점에서는 그래프의 멀지라고도 생각할 수 있습니다.
만약에 다르게 표현되어 있는 그런 엔티티들을 전부 하나로 표현하지 않고 전부 각각의 노드로 그래프상에 표현을 하게 된다면 정말로 같은 형태로 표현된 엔티티가 아니라면 결국 문장마다 다 새로운 그래프를 그리게 될 것입니다.
그렇게 된다면 결국 정보라는 것이 한 문장의 단위로 어떤 바운더리를 가지고 갇히게 되고 실제로 우리가 어떤 Knowledge Graph를 통한 정보에 추론을 하는 데에는 많은 한계가 존재할 것입니다.
지금의 예시를 봐도 스티브 잡스와 워즈니아가 애플을 창업했고 데어 컴퍼니가 맥을 출시했다고 문장에서 정보를 얻었을 때 만약에 애플과 데어 컴퍼니가 같은 것인지 모르면 결국 애플이 맥을 출시했다는 정보조차도 알 수가 없습니다.
그래서 만약에 여기서 Coreference Resolution이 제대로 작동을 해서 애플과 데어 컴퍼니가 같은 엔티티라는 것을 알게 되면 이 둘을 결국 그래프상에서 하나의 노드로 표현을 하게 되고 아래에 나타난 것처럼 스티브 잡스, 스티브 워즈니아, 애플, 맥이 전부 하나의 커다란 그래프 안에서 표현될 수 있게 됩니다.
이렇게 되면 우리가 실제로 Knowledge Graph를 활용을 할 때 정보의 출현 과정이 계속해서 확장되는 멀티 호흡 문제도 풀어낼 수가 있게 됩니다.
마지막으로 설명드릴 Knowledge Graph Completion은 전체의 마지막 과정이기도 하고 처음에 Knowledge Graph Construction의 핵심으로 표시한 세 가지 태스크 중에서도 마지막 태스크입니다.
본 태스크는 이름에서도 알 수 있듯이 Knowledge Graph를 완성하는 역할로 어느 정도 Knowledge Graph가 구축되어 있을 때 시도할 수 있는 과정입니다.
NER이나 Relation Extraction과 같은 Information Extraction 시스템들이 텍스트로부터 직접적으로 정보를 추출하는 역할을 수행을 했다면 Knowledge Graph Completion은 얻어진 정보들로부터 새로운 정보를 추론하는 역할을 수행을 합니다.
예시를 보면 감이 오실 텐데요.
일전의 예시 문장들에서 우리는 이미 우측 하단에 Knowledge Graph를 얻었습니다.
창립자와 애플 사이의 관계, 애플과 맥 PC와의 관계를 텍스트로부터 얻을 수가 있었고 그를 그래프로 잘 나타냈습니다.
그런데 그래프나 텍스트에는 워즈니악과 맥 PC에 대한 어떠한 언급도 없는데 과연 이 둘 사이에 어떠한 관계도 없을까요?
아마도 워즈니악이 애플을 창업했고 애플이 맥이라는 제품을 내놓았다면 워즈니악과 맥 사이에도 어떠한 관계가 있을 텐데 현재에는 그래프에 어떠한 엣지도 표시가 되어 있지 않습니다.
여기서 Knowledge Graph Completion이 방금 제가 제기한 어떤 의문처럼 그래프 상에서 어떠한 미싱된 엣지가 있지 않을까?
이 둘 사이에는 어떤 관계가 있지 않을까?
아니면 이 엔티티와 이 엔티티 사이에는 지금 이러한 관계가 있다고 이야기하고 있는데 이 관계 말고 다른 관계도 있지 않을까?
라는 식의 그래프 상에서 새로운 정보를 출원하는 과정을 읽었습니다.
이렇게 해서 Knowledge Graph Construction 6가지 서브태스크에 대해서 간단한 예시와 함께 각각이 무엇을 의미하는지를 알아보았습니다.
이제는 각각의 서브태스크를 조금 더 자세히 설명해 볼 텐데요.
설명드렸던 순서와 같게 첫 번째로는 Named Entity Recognition에 대해서 설명드리겠습니다.
가장 먼저 Named Entity가 뭔지부터 다시 한번 짚고 넘어갈 텐데 정의를 그대로 말씀드리면 엔티티가 될 수 있는 고유명사 등의 것으로 목적에 따라서 다르게 정의한다고 되어 있습니다.
목적에 따라 다르게 정의한다는 게 무슨 의미냐면 그거에 대한 예시를 아래에 가져온 것인데 아래에 보시면 다양한 데이터셋마다 전부 다른 기준을 가지고 있습니다.
그 중에서 대표적인 Stanford NER이 구체적으로 나와 있어서 가져와 봤는데요.
Stanford NER 같은 경우에는 3가지의 경우에 대해서 정의를 다르게 해주고 있습니다.
먼저 이 엔티티를 몇 개의 클래스로 나눌까를 생각을 해봐야 되는데 아까 제가 처음에 보여드렸던 예시에서 스티브 잡스나 애플 같은 것은 사람과 오르가니제이션으로 엔티티로 표현을 했지만 1977년 같은 경우에는 어떤 knowledge graph에서는 엔티티로 표시를 하고 어떤 knowledge graph에서는 하지 않는다고 말씀드렸습니다.
그게 무슨 의미냐면 다음에도 보시는 바와 같이 만약에 엔티티를 3가지 클래스만 우리가 인정을 한다고 할 때 location과 person과 organization만 엔티티로 정의를 하고 있습니다.
named entity로요.
이렇게 정의를 한 경우에는 1977년은 named entity가 아니라 엔티티 추출 대상이 되지 않을 것입니다.
그러나 만약 7 클래스로 NER을 추출하게 된다면 여기에 데이터와 타임이 있기 때문에 1977년에는 named entity가 돼서 어떠한 knowledge graph의 하나의 노드로서 역할을 할 수가 있게 될 겁니다.
그래서 아래에 보시면 정말 데이터셋마다 다른 클래스의 수를 갖고 있고 그 각각의 클래스가 어떠한 객체들을 실제로 엔티티로 표현을 하는지는 각각 다르기 때문에 실제로 본인이 knowledge graph를 구축하고자 한다면 본인의 목적과 상황에 맞게 데이터셋을 선택하던가 본 데이터셋들의 기준을 참고해서 엔티티들의 기준을 정해야 할 것입니다.
그래서 그 다음으로는 NER의 적용과 평가에 대해서 가볍게 말씀드릴 텐데요.
일반적으로 NER의 적용은 NER 태깅을 통해서 수행이 됩니다.
NER 태깅은 많이들 아시는 BISO 태그를 가장 대표적으로 사용하는데요.
BISO 태그는 각각의 첫 글자를 딴 것으로 B 같은 경우는 begin, I는 inside, E는 end, S는 singleton, O는 outside를 의미합니다.
이 본 태그들은 각각의 named entity를 단어 단위로 표현을 해주려고 하는 건데요.
예를 들면, 만약에 스티브 잡스가 하나의 named entity로 찾아내는 것이 목적이라고 한다면 이 스티브 잡스, 이 두 가지의 워드를 엔티티의 span으로 표시해야 할 겁니다.
그래서 여기에서는 스티브라는 단어가 이 엔티티의 시작이다, begin 해서 B라는 태그를 달아주고 잡스가 본 엔티티의 마지막이기 때문에 end, E라는 태그를 달아줍니다.
마찬가지로 스티브 워즈니악에서도 스티브가 B, 워즈니악이 E. 애플 같은 경우는 하나를 가지고 엔티티가 완성이 되기 때문에 singleton의 S를 달아주게 됩니다.
만약에 World Health Organization WHO라는 문장에서 표현이 나와 있고 얘를 하나의 엔티티로 표현을 하고자 한다면 여기서는 두 개가 아니니까 가운데 health는 inside, I까지 되어서 이렇게 엔티티를 태그를 통해서 표시를 하게 됩니다.
또 이제 엔티티가 아닌 단어들 같은 경우에는 outside의 O가 붙게 됩니다.
그리고 여기서는 단순히 엔티티의 시작과 끝만 표시해주는 것은 아니고 실제로 그러한 엔티티들이 우리의 네임드 엔티티 기준에서 어떤 클래스에 해당하는지 만약 여기서는 3 클래스를 사용한 것을 제가 예시로 가져왔기 때문에 person과 organization, location 중 어딘지를 표시를 해줍니다.
그래서 스티브 잡스나 워즈니악은 person인 PER이 붙어있고 애플 같은 경우는 organization이 붙어있습니다.
WHO 같은 경우도 마찬가지로 organization이 붙어있는 것을 확인할 수 있습니다.
그래서 이러한 평가 같은 경우에는 실제로 데이터에도 이러한 태그가 정답으로 되어 있기 때문에 이러한 태깅하는 클래시피케이션의 형태이기 때문에 평가로는 precision, recall, F1 score를 토큰 단위로 평가를 수행하게 됩니다.
NER의 어프로치들에 대해서 가볍게 설명드리겠습니다.
기본적으로 전통적인 방식과 최근에 많이 사용되는 딥러닝 방식으로 구분할 수가 있는데요.
NER을 수행하는 데이터는 일반적으로 텍스트만을 가지고 있는 경우보다는 포스트깅 정보도 함께 포함되어 있는 경우가 많습니다.
그래서 아래 보여드리는 대부분의 어프로치들의 경우 포스트깅 정보를 활용한다는 것을 짚고 넘어가시면 좋을 것 같습니다.
물론 잘 사용은 안하지만 트랜지셔널 어프로치부터 먼저 설명을 드려보면 일단 가장 먼저 생각할 수 있는 룰 베이스 어프로치가 있을 수 있겠습니다.
만약에 데이터가 정말 한정되어 있거나 아니면 특정한 전문가 도메인이라고 하거나 아니면 이미 구축된 상태에서 특정한 몇 개의 룰만 추가하고자 할 때는 룰 베이스 어프로치를 사용할 수가 있는데요.
포스트깅 정보를 사용하는 것을 예로 드려드리면 직접 어떤 포스트깅의 패턴을 보고서 특정한 포스트깅이 있을 때는 이 문장이 어떠한 엔티티로 활용이 된다.
예를 들어 명사 같은 경우가 엔티티로 활용이 되는 경우가 많기 때문에 그렇게 표현을 하거나 아니면 특정하게 아예 어떠한 단어가 나오면 얘는 엔티티라고 바로 지정을 해버려라.
라는 식으로 어떤 룰을 지정해서 엔티티, 네임드 엔티티 레코리니션을 수행할 수가 있습니다.
다음으로 전통적인 카운트 방식의 임베딩을 활용할 수가 있는데요.
딥러닝 베이스드가 아니라 카운트 방식의 임베딩들도 기존의 NLP에서 많이 사용이 되어 왔습니다.
이렇게 임베딩을 완성하게 되면 사실 우리가 코사인 시뮬러티라든지 다양한 유사도를 계산을 할 수가 있게 되고 그렇게 얻은 유사들을 통해서 군지파를 수행하고 그 군지파 결과를 통해서 태깅을 시도할 수도 있습니다.
그 다음으로 스포바이스드 러닝 방식이라고 나와 있는데 스포바이스드 러닝의 방식으로는 각각의 포지션에 대해서 각각의 워드 포지션에 대해서 멀티클래스 클래시피케이션이나 아니면 시퀘어스 라벨링 테스트를 시도해 볼 수가 있습니다.
그러나 역시 최근에는 딥러닝 베이스드 어프로치들이 강세를 보이고 있는데요.
다음 그림에서 정리된 것과 같이 인풋 임베딩, 컨텍스트 인코딩, 태그 디코딩의 과정을 통해서 아웃풋을 산출합니다.
그래서 각각에서 활용될 수 있는 인풋 형태들과 디코더에서 활용할 수 있는 구조들 같은 것이 나타나 있으니까 참고하실 분들 참고하면 좋을 것 같고 여기서 예시에서 보여드리는 것과 같이 다양한 딥러닝 모델 구조들이 적용이 가능합니다.
우측의 예시를 보면 여기서 동일한 인풋들이 들어오게 되는데 만약에 MLP와 소프트 맥스를 통한 과정으로 딥러닝 어프로치를 수행하게 되면 마지막으로 소프트 맥스 클래시피케이션 형태로 태깅이 수행이 될 수가 있고 RNN의 형태를 사용한다면 시퀘어스 라벨링 테스크로도 수행할 수 있게 될 겁니다.
다음으로는 릴레이션 익스트랙션에 대해서 소개 드리겠습니다.
릴레이션 익스트랙션은 예시에서 보여드렸다시피 특정한 관계를 찾아내는 테스크로 데이터셋이 다루는 정보와 목적에 따라서 그러한 릴레이션, 관계의 종류는 정말 다르게 정의가 되고 있습니다.
NER도 마찬가지였듯이 정말 데이터셋마다 다르게 되어 있어서 그 예시를 가져왔는데요.
에이스 데이터셋과 프리베이스 논리지 그래프 데이터셋의 예시를 가져왔습니다.
에이스 데이터셋 같은 경우에는 저희가 아까 사람과 단체, 파운더 같은 것이 들어있는 role 사람과 단체의 관계를 나타내는 것에는 멤버나 오너나 클라이언트, 시티즌 같은 관계들이 포함될 수가 있고 아니면 사람들 사이에 소셜한 관계, parent, sibling, 배우자 이런 관계들이 에이스 데이터셋에는 정의가 되어 있습니다.
우측의 프리베이스 논리지 그래프 같은 경우는 공개되어 있는 매우 거대한 논리지 그래프인데요.
지금 보여드리는 릴레이션과 예시 같은 경우도 매우 작은 부분만 잘라온 거고 실제로 이렇게 큰 논리지 그래프 같은 경우에는 많게는 수천 개의 릴레이션을 포함하는 경우도 있습니다.
그래서 NER에서도 말씀드렸지만 본인이 논리지 그래프를 구축하는 어떤 목적이나 활용하고자 하는 목적에 따라서 실제로 본인이 반드시 포함해야 하는 어떤 릴레이션이 있는지를 데이터 자체에서 먼저 확인을 하고 어떤 데이터를 사용할지를 결정을 해야 할 것입니다.
그리고 일반적으로 아까 전에 이러한 릴레이션 익스트랙션도 NER과 비슷하게 슈퍼바이스드 메소드들의 접근법도 있는데요.
다음에 금방 설명을 드리겠지만 이러한 슈퍼바이스드 메소드의 경우에는 기본적으로 이 릴레이션의 종류를 모두 알고 있다는 가정에서 클래시피케이션 태스크를 수행하게 됩니다.
근데 방금 말씀드렸다시피 이러한 릴레이션이 많게는 수천 개도 있기 때문에 연구에 따라서는 일부의 릴레이션 본인이 필요한 부분만 잘라서 활용을 하기도 합니다.
이제 릴레이션 익스트랙션의 어프로치들에 대해서 말씀드리겠습니다.
이전에는 NER과 릴레이션 익스트랙션이 구분돼서 별개로 태스크로 활용하는 경우도 많았는데 최근에는 NER과 릴레이션 익스트랙션이 한 번에 동작하는 경우가 많습니다.
그래서 제가 설명드리는 어프로치들에서 그 두 가지가 조금 허용될 수 있다는 점 미리 생각해주시면 감사하겠고요.
마찬가지로 어떤 전통적인 방식부터 딥러닝 베이스드 방식 순으로 소개를 드려보도록 하겠습니다.
가장 먼저 마찬가지로 가장 쉽게 예시를 들 수 있는 룰 베이스드 릴레이션 익스트랙션이 있습니다.
만약에 아래 보이는 것과 같이 서울 is in Korea라는 문장이 있었고 여기서 서울이 city고 코리아가 country라는 것을 우리가 알 수가 있다면 단순하게 city라는 종류의 엔티티들과 country라는 종류의 엔티티들이 있다면 그 둘 사이의 관계는 아마도 is in일 것이다.
왜냐하면 이 둘이 같은 문장에 나온다면 아마도 이 country 안에 포함되어 있는 city지 않을까 라는 식으로 어떤 패턴을 통해서 룰 베이스드로 릴레이션 익스트랙션을 수행할 수 있을 겁니다.
마찬가지로 이렇게 어떤 이 엔티티들이 어떠한 클래스인지를 알 필요 없이 그냥 단순하게 어떤 특정한 단어가 오면 바로 어떤 룰을, 어떤 릴레이션을 가지고 있다고 지정을 해놓을 수도 있고요.
또 여기서는 특징적으로 세미 스포 바이오스 릴레이션 익스트랙션이라고 우리가 위에 보이는 것 같은 서울 is in Korea에서 city랑 country가 서울과 코리아에서는 이미 태깅이 되어 있다는 가정인데 만약에 이렇게 태그되어 있는 정보가 아주 적고 대부분의 경우 태그가 되어 있지 않을 때는 세미 스포 바이오스 방식으로 있는 것을 가지고 계속 확장해서 없는 것까지 정보를 포함할 수 있게 할 수가 있습니다.
그래서 밑에 나와 있는 그림이 대표적인 방식 중에 하나인 스노우볼 방식인데요.
이 데이터들의 토큰 인베이딩 상에서 소수의 라벨드 데이터와 유사한 언레이블드 데이터를 찾아서 새로 라벨링을 하는 것입니다.
그래서 새로 라벨링 된 것을 점점 더 사용 가능한 데이터로 만들어서 점점 학습에 사용되는 데이터 수를 증가시키는 건데요.
예시를 보여드리면 서울 is in Korea만 있던 상태에서 유사도가 높은, 서울이 한국에 있다는 것만 포함되어 있을 때 조금 더 토큰 인베이딩 상으로 유사도가 높은 평양이 북한에 있다가 포함이 되고 그 다음에는 도쿄는 일본에 있다가 포함이 되고 쭉쭉 가서 파리는 프랑스에 있다.
라는 식으로 점점 더 많은 태깅을 수행할 수 있게 됩니다.
물론 이제 토큰 인베이딩 상으로 제가 방금 예시를 드린 것처럼 나라의 거리에 따라서 인베이딩이 가깝지는 않겠지만 그냥 예시로 이해해 주시면 감사하겠습니다.
최근에 릴레이션 익스트랙션 점검법은 크게 디스크리미니티브와 제네레이티브 두 가지로 나눌 수가 있습니다.
먼저 디스크리미니티브에 대해서 소개 드릴 텐데요.
NER과 거의 동일하게 클래시피케이션 베이스드와 시퀀스 태깅 베이스드 두 가지의 방식이 있습니다.
우선 클래시피케이션 모델의 경우에는 일반적으로 모든 서브젝트 오브젝트의 쌍과 모든 릴레이션 조합에 대해서 이진 분류의 라이클리후들을 계산을 해서 그 확률이 최대가 되도록 학습을 합니다.
여기서 이진 분류라는 것은 모든 서브젝트 오브젝트 쌍과 모든 릴레이션 조합이기 때문에 이 서브젝트 오브젝트 사이에 이 릴레이션이 있는가?
yes or no?라는 두 가지 이진 분류로 클래시피케이션이 수행이 됩니다.
여기서 맥시먼 라이클리후드 방식으로 학습이 수행이 되고요.
시퀀스 태깅의 경우에는 우측의 예시를 보면 CP가 붉은색의 국가, 대통령을 의미하고 있는데 이처럼 릴레이션을 포함하는 올바른 NER 릴레이션 익스트랙싱 태깅을 수행하는 방법입니다.
C같은 경우에는 아래쪽에서 i번째 시즌 벡터에 대해서 실제로 확률이 가장 높은 태그를 결정하는 방식을 보이고 있습니다.
일반적으로 모두 사전학습된 랭기지 모델에 의해서 인코딩이 활용이 되기 때문에 딥러닝 베이스드 방식이라고 볼 수 있겠습니다.
이제 제너레이티브 어프로치에 대해서 말씀드리겠습니다.
방금 직전에 설명드린 디스크리미니티브 어프로치의 경우에는 물론 사전학습된 랭기지 모델을 통해서 토큰을 인베딩을 하기 때문에 우리가 그러한 랭기지 모델을 활용한다고 이야기할 수 있는데 여기서의 제너레이티브 어프로치 같은 경우에는 아주 직접적으로 시퀀스 투 시퀀스 모델 구조를 통해서 오토 리그레시브하게 서브젝트 릴레이션 오브젝트 쌍 자체를 생성하는 것입니다.
최근에는 랭기지 모델을 공부하시는 분들이 많아서 오히려 이 과정이 더 익숙하실 수도 있을 텐데요.
예시를 보면 우측의 인풋 텍스트에 대해서 스페셜 토큰들을 포함된 릴레이션 서브젝트 오브젝트 형태의 아웃풋을 얻게 됩니다.
이 스페셜 토큰을 통해서 결국 우리가 서브젝트 릴레이션 오브젝트를 구분하고 있는 텍스트를 다시 딜리니얼라이제이션을 해서 트리플 형태의 우리가 널리지 베이스의 형태로 결과를 얻는 과정을 우리가 제너레이티브 어프로치라고 이야기하고 있습니다.
그래서 이 식 같은 경우에는 우리가 일반적인 시퀀스 투 시퀀스 모델의 오토 리그레시브 생성 과정을 의미한다고 생각하시면 되고요.
여기서 시퀀스 투 시퀀스 모델로는 최근에는 T5나 바트와 같은 모델들이 잘 활용이 되고 있습니다.
평가와 같은 경우에도 결국 어프로치들이 NER과 거의 비슷했던 만큼 결국 동일하게 태그에 대한 클래시피케이션이나 아니면 시퀀스 태깅 방식에 결국 그 태그를 맞추냐 아니냐이기 때문에 결국 프린시전 리콜 F1 스코어로 평가를 수행하게 됩니다.
다음으로 코레퍼런스 레솔루션입니다.
앞전에서 가볍게 설명드렸지만 다시 한번 정의를 말씀드리면 특정한 엔티티를 표현하는 다양한 멘션들을 연결해주는 태스크로 텍스트 내에서 같은 엔티티를 의미하나 다르게 표현된 프레이즈들을 찾아준다 라고 이야기를 하고 있습니다.
여기서 이제 멘션이라는 새로운 용어가 나오는데 이 멘션이 실제로 어떤 엔티티를 표현하는지가 아니라 실제로 문장상에서 어떻게 표현됐는지의 그 표현 형태를 멘션이라고 이야기하고 있다고 생각해주시면 됩니다.
결국에는 문장상에서 다르게 표현된 것들인데 같은 거면 연결해준다 라고 생각하시면 되는데요.
아까도 말씀드렸다시피 현재까지 문장별로 따로 생선된 knowledge 그래프를 멀지해주는 역할을 수행을 해줍니다.
그래서 아까 보여드렸던 예시 그대로 가져와서 이제 애플과 데얼 컴퍼니가 연결된다는 걸 다시 한번 보여드리고요.
실제로 이제 코레퍼런스 레솔루션의 일반적인 과정은 이제 코레퍼런스 레솔루션 자체는 knowledge 그래프 이외에서도 사용이 되기 때문에 전체적인 과정은 기본적으로 멘션 디텍션과 멘션 클러스터링 두 가지 과정으로 이루어집니다.
멘션 디텍션이 엔티티를 찾아내는 과정이라고 볼 수 있고
그리고 그 멘션에 대한 클러스터링이 실제로 어떠한 멘션끼리 같은 건지를 연결해주는 거라고 보시면 되는데요.
멘션 디텍션 같은 경우는 이제 knowledge 그래프 구축 과정에서는 NER 등의 과정에서 이미 수행이 됐다고 생각을 할 수가 있습니다.
멘션 클러스터링이 무슨 뜻이냐면 이제 멘션들에 대해서 우리가 어떠한 랭기지 모드를 통해서 임베딩을 얻고 그 임베딩을 클러스터링해서 그 클러스터링 결과의 유사도를 통해서 우리가 비슷한 단어를 찾아내겠다는 게 기본적인 코레퍼런스 레솔루션의 실행 과정입니다.
그래서 지금은 이제 뭐 일반적인 트렌드와 맞게 이 두 과정이 엔드 투 엔드로 많이 일어나고 있고요.
실제로 우리가 지금도 성능이 좋고 많이 사용되는 게 스팸버트입니다.
스팸버트를 통해서 텍스트에 임베딩을 산출하고 산출된 엔티티들의 레프레젠테이션을 활용을 해서 클러스터링 하는 것으로 동일한 엔티티를 표현하는 멘션을 탐색을 합니다.
그래서 스팸버트가 요즘 각광을 받는 이유는 제 생각에는 일반적인 버트와 다르게 스팸버트 같은 경우는 하나의 엔티티가 하나의 토큰이 아니라 여러 개의 토큰인 경우도 상정을 하고 구축된 랭기지 모델이기 때문에 높은 성능을 보이는 것으로 예상이 되고요.
그리고 본 과정 같은 경우에서도 결국에는 같은 것을 찾았냐 아니냐이기 때문에 아까 전과 비슷하게 결국 프리세전 리콜 F1 스코어를 활용을 하게 됩니다.
조금 특이한 것은 상황에 따라 기준이 다른 아래 나온 4가지 모두 전부 F1 스코어를 추출하는 방법인데 조금씩 기준이 다릅니다.
각각이 어떻게 다른지 가볍게만 말씀을 드리면 어떠한 것은 엔티티 기준으로 F1 스코어를 측정을 하고 어떤 것은 멘션 기반으로 F1 스코어를 측정을 합니다.
그래서 분모가 엔티티 기반이면 애플과 데얼 컴퍼니가 전부 하나로 쳐서 얘네들 중에 몇 개를 맞췄냐가 되는 거고 멘션 기반이라는 것은 애플, 데얼 컴퍼니가 별도의 기준이 돼서 F1을 계산한다고 보시면 됩니다.
마지막에 코어, NLL, F1이 나머지 3개에 대한 평균이기 때문에 잘 모를 때는 마지막 것을 쓰는 것도 괜찮을 것 같고 본인의 목적에 따라서 평가 기준을 결정하면 될 것 같습니다.
이제 마지막으로 Knowledge Graph Completion에 대해서 말씀을 드리겠습니다.
이름에서도 알 수 있다시피 Knowledge Graph를 만드는 과정이라기보다는 Knowledge Graph를 완성하는 단계의 테스크로 Knowledge Graph Completion을 이해하기 위해서는 우리가 일반적으로 가지고 있는 Knowledge Graph의 가정을 다시 한번 생각해 보아야 합니다.
두 가지 가정이 있는데 Closed World Assumption과 Open World Assumption 두 가지가 있습니다.
Closed World Assumption 같은 경우에는 내 Knowledge Graph는 충분히 이 세상의 모든 정보를 포함을 했기 때문에 만약에 나의 Knowledge Graph에서 특정한 노드 사이에 Fact, 어떠한 관계가 존재하지 않는다면 해당 관계는 아무 관계도 없을 거고 해당 관계가 어떤 게 있다는 건 거짓일 것이다
라는
이야기이고요.
그래서 예시를 보면 만약에 좌측 하단에 Knowledge Graph가 있을 때 내가 이미 축구에 대한 Knowledge Graph를 완벽하다.
난 모든 정보를 다 포함했다 라고 이야기를 한다면 여기서 이 두 노드 사이에는 화살표가 없지 않냐.
그럼 이 둘 사이에는 어떠한 관계도 없는 것이다.
라는
이러한 접근법이 Closed World Assumption이고요.
반대로 Open World Assumption은 내가 모든 정보를 포함했을 리는 없으니까 여기 실제로 그래프 상에 화살표가 없더라도 이 둘 사이에는 어떠한 관계가 존재할 수가 있다.
없을 수도 있고 있을 수도 있기 때문에 우리가 확인을 해보면 좋겠다라는 접근법이 Open World Assumption입니다.
현실적으로 당연하게 또 우리가 만든 Knowledge Graph가 모든 정보를 포함할 수는 없기 때문에 Open World Assumption을 따르고 있고요.
그렇기 때문에 제가 아까 예시로 보여드렸던 우측 하단에 Wozniak과 Mac이나 Jobs나 Mac 사이에는 실제로 문장 사이에서 저희가 직접 축출한 관계는 없지만 얘가 애플의 사장이고 창립자면 걔네들의 제품과도 어떠한 관계가 있지 않을까 라는 합리적인 초론을 할 수 있고 이게 우리의 Knowledge Graph Open World Assumption에도 위배되지 않기 때문에 이러한 미싱 엣지를 찾는 Knowledge Graph 컴플리션 과정이 매우 타당하게 이루어질 수 있다고 생각하시면 될 것 같습니다.
Knowledge Graph 컴플리션은 자체가 또 서브태스크를 가지고 있는데요.
제가 예시를 들으면서 하나씩 다 말씀드렸었는데 다시 한번 하나씩 짚고 넘어가 보도록 하겠습니다.
크게 세 가지로 Entity Prediction과 Relation Prediction, Link Prediction 세 가지가 있습니다.
첫 번째 같은 경우에는 말 그대로 제가 글씨로 써놓은 것과 같이 Subject와 Relation, Object가 있을 때 하나의 Entity들을 비워놓고 그러면 이 Subject와 Relation과 우리가 모르는 새로운 Object 사이에는 관계가 없을까?
아니면 반대로 Subject를 지워놓고 Relation과 Object에 대해서 어떠한 Subject가 여기 올 수 있을까?
해서 여기에 적절한 Entity를 예측하는 테스트입니다.
이미 Knowledge Graph에 포함된 팩트 이하의 새로운 관계도 얻을 수 있는데요.
예를 들어서 우리가 애플과 스티브 잡스가 창립자라고 Founder라는 어떤 Relation을 찾아놨었는데 그걸 지워놓고 새로운 Relation은 CEO of라는 것을 넣어봤을 때도 또 잡스라는 새로운 관계를 얻을 수가 있습니다.
여기서 사실 Founder와 CEO는 비슷하지만 다르니까 새로운 Relation을 찾아낼 수 있다는 게 어떤 의미인지 아실 것 같습니다.
Relation Prediction 같은 경우도 마찬가지고요.
만약에 잡스와 애플이라는 Subject, Object를 넣어놓고 Relation을 비운 다음에 새로운 Relation을 탐색을 해보면 애플에서 쫓겨난 적도 있다, 쫓겨났다 라는 새로운 Relation을 찾을 수 있을 겁니다.
마지막으로 Link Prediction 같은 경우에는 Edge 간의 Missing Edge를 추측하는 테스크로 제가 계속 예시로 보여드렸던 이야기인데요.
이게 워즈니아과 맥도 관계가 있지 않을까?
여기에는 어떤 Edge가 Missing된 거 아닐까?
라고 추론해 보는 테스크입니다.
그래서 아까 설명드린 것과 같은 Knowledge Graph Completion의 서브 테스크들을 수행하기 위한 어프로치들에 대해서 살펴보도록 하겠습니다.
크게 한 3, 4가지 방법을 가져왔는데 먼저 첫 번째로 Embedding Based 방식부터 말씀드리도록 하겠습니다.
Embedding Based 방식은 Subject, Relation, Object 각각을 Embedding을 하고 그 Embedding 결과를 통해서 Knowledge Graph Completion을 수행하는 것인데요.
가장 대표적인 두 가지 Embedding 방법론을 그림으로 나타내 보았습니다.
Trance E 같은 경우에는 아래 그림처럼 Subject와 Relation의 두 가지 Embedding 벡터를 더하면 Object 벡터가 나오도록 Embedding을 수행한 것이고요.
모두 동일한 차원의 Embedding을 했다는 특징이 있습니다.
Trance R 같은 방법론은 Entity와 Relation이 서로 다른 특징을 가지고 있으니까 그 둘은 서로 다른 차원의 Embedding을 하고 만약에 그 셋을 모두 하나의 차원으로 프로젝션을 했다고 하면 Trance E와 마찬가지로 Subject와 Relation을 더하면 Object가 나올 수 있도록 Embedding을 수행하는 것입니다.
이렇게 Embedding이 잘 수행이 됐다고 한다면 Embedding을 기준으로 Entity, Relation, Link Prediction 후보들의 스코어를 다 산출할 수 있게 될 거고 얘가 Subject와 Relation을 더한 위치에 가까이 있는 새로운 오브젝트 후보를 랭크를 하든 이런 식으로 스코어를 산출할 수 있게 되니까 그 랭크에 따라서 Output을 산출해서 Knowledge Graph Completion을 수행할 수 있게 됩니다.
그 다음으로는 Link-Path Reasoning이라는 접근법이 있는데요.
일반적으로 Knowledge Graph에서는 Composition Relation이 성립한다고 가정을 합니다.
Composition Relation은 우측에 보이는 것과 같이 만약에 x, y가 R1이라는 관계로 이어져 있고 y와 z가 R2라는 관계로 이어져 있다면 3단 동법처럼 y가 연결되어 있으면 x와 z도 무언가 다른 관계지만 연결이 되어 있지 않겠냐라는 가정입니다.
그래서 결국 Wozniak과 Mac도 어떤 새로운 관계로 연결되어 있지 않겠냐라고 이야기를 하는 겁니다.
그래서 우측은 일반적인 방법론의 계열을 그림으로 나타낸 것인데요.
그래서 이것을 보면 멀티홉으로 여러가지 엔티티를 거쳐서 우리가 출원을 수행을 할 때 Relation 사이에서 적정한 Composition 결합을 통하면 새로 얻은 엔티티 사이의 Relation도 얻어낼 수가 있다고 이야기를 하는 겁니다.
조금 더 자세히 말씀드리면 엔티티1과 엔티티2 사이에 R1이라는 관계가 있다고 했을 때 여기에서 컴포지션 릴레이션이 성립을 하기 때문에 E1과 E3도 관계를 가질 것이고 그렇다면 이 둘 사이의 관계인 R’은 R1과 R2를 적정하게 조합한 것을 통해서 이 둘 사이의 관계를 얻을 수 있다.
그리고 이걸 한 번 더 반복해서 E1과 E4 같은 경우도 모든 릴레이션들을 잘 컴포지션한 새로운 R’으로 E1과 E4 사이의 관계를 찾을 수가 있다.
라고 하는 것입니다.
방금도 말씀드렸다시피 이러한 과정을 통해서 멀티홉으로 더 복잡한 과정을 출원해 나갈 수 있는 겁니다.
그래서 가장 예시를 간단하게 들어보면 단순하게 이 릴레이션들의 합을 통해서 새로운 컴포지션 된 릴레이션을 계산한다고도 생각할 수 있고 그래서 이걸 합하느냐, 가중합을 하느냐 식과 같은 다양한 각각 구체적인 방법에 따라서 구체적인 방법론이 달라진다고 생각해주시면 될 것 같습니다.
그래서 이러한 과정 같은 경우에는 사실 실제로 모든 것을 직접 수행해 볼 수는 없으니까 랜덤워크 인퍼런스라고 해서 실제로는 자동으로 무작위로 조금씩 확장해 나가면서 새로운 릴레이션을 찾는 패스파인딩을 하는 테스크로 많이들 수행을 하고 있다고 합니다.
다음으로 룰 베이스드 방식도 있는데요.
바디에서 헤드로 가는 로지컬 룰을 통해서 새로운 릴레이션을 탐색하는 방식입니다.
이 과정 같은 경우에 조금 특이해서 예시를 설명드리면 다음에 나와 있는 것과 같이 만약에 X가 Y라는 자식을 갖고 있고 Y가 성별이 남자라면 그렇다면 결국 자식인데 성별이 남자면 결국 Y는 X의 아들이지 않겠느냐 라는 식으로 어떤 논리적 추론을 통해서 새로운 릴레이션을 탐색하는 과정입니다.
그래서 이렇게 룰을 찾는 것은 룰 마이닝 툴이라고 별도의 연구 테스트들이 있고요.
북측의 경우가 KLE의 그림을 나타낸 것입니다.
여기서도 결국에는 subject 더하기 relation이 object라는 과정을 가지고 각각의 인베닝을 더하고 빼서 논리적인 관계만을 남겨놓고 그 논리적인 관계들 사이에 로지커넥티비티가 end나 or나 not같은 이런 논리적 연산을 수행하게 돼서 결국 걔가 실제로 참인지 거짓인지 이런 식으로 룰을 찾아내는 과정을 의미한다고 합니다.
그리고 마지막으로 또 triple classification based는 GNN 등을 활용해서 인베닝을 기준으로 특정한 팩트의 인베닝을 계산을 하게 돼서 그것이 참인지 거짓인지 클래시피케이션을 통해서 이진 분류를 수행하는 오히려 마지막에 설명드린게 조금 더 일반적인 방식도 접근법으로 많이 활용이 되고 있습니다.
이렇게 해서 knowledge 그래프를 만드는 전체 과정을 다 살펴보았습니다.
구체적인 방법들을 소개시켜드리지 못하고 너무 훑어가는 식으로 해서 조금 아쉬움이 남는데요.
그래도 이제 전체적으로 knowledge 그래프를 어떻게 만드는지 감은 오셨을 거라고 생각을 합니다.
그래서 이제는 entity extraction과 relation extraction을 함께 수행하는 방법론 중에서 주요한 베이스라인인 그래프 알리에를 소개하면서 마무리 해보려고 합니다.
본 논문은 ACL 2019에 게시된 논문으로 현재까지 246번 인용이 되고 있습니다.
인용 수가 많은 유의미한 논문이나 2019년의 논문으로 성능 자체가 그렇게 최근 모델에 비해서 높지는 않은데요.
그러나 당시로서는 생소했던 entity discovery와 information extraction 한 번에 수행한 초창기의 논문이고 제가 최근에 관심을 가지고 있는 그래프를 사용한 NLP 방법론이기 때문에 특별히 추가로 소개해 보려고 합니다.
본격적인 방법론 소개에 앞서서 당시의 백그라운드에 대해서 말씀드리겠습니다.
방금 전에 그래프 논문 제목을 말씀드리면서 대부분 설명드렸는데요.
본 논문은 2019년의 논문으로 relation extraction 방법론에 deep learning 기법이 이제 막 적용되던 시기입니다.
그리고 아직 많은 방법론들이 entity 추출과 relation 추출을 별도로 수행을 하던 시기였고 또 그러한 과정에서 relation 간의 관계가 아직 많이 고려되고 있지 않았습니다.
여기서 말하는 relation 간의 관계가 entity overlap이라는 것인데 이게 뭐냐면 이제 특정한 팩트들 사이에서 entity들이 겹치는 경우를 이미 합니다.
그래서 relation이 다른데 entity가 겹치는 상황이 크게 두 가지가 있는데 entity가 subject, object가 둘 다 겹치는 경우나 아니면 그 중에 하나만 겹치는 경우가 있을 겁니다.
그래서 둘 다 겹치는 epo 같은 경우에는 오바마가 미국의 대통령이다.
그리고 오바마가 미국을 통치하고 있다.
라고 하는 두 개의 팩트들이 있을 수가 있고 이 둘 사이는 사실 다른 relation이지만 충분히 둘 사이에 추론이 가능한 상황입니다.
대통령이면 당연히 정치를 하고 있을 테니까 또 이제 seo 같은 경우에는 오바마가 화이트하우스에 살고 화이트하우스는 미국의 대통령이 사는 곳이다.
라고 하면은 이 밑에 두 가지 팩트를 보면은 오바마가 그럼 미국의 대통령이겠네.
라는 것도 또 추론해 볼 수가 있습니다.
앞선 예시들처럼 relation 사이의 관계는 서로를 추론할 수 있을 만큼 강력하니까 entity와 relation 사이의 관계를 활용해서 모델링을 해야 한다는 것이 본 논문이 그때 당시에 선행된 연구들이 부족하다고 지적한 부분이면서 본인들이 개선한 모티베이션이 되겠습니다.
그래서 좀 전에 말씀드렸던 그런 백그라운드의 문제점들을 다음과 같은 방식으로 해결을 했는데요.
entity와 relation extraction의 딥러닝 모델을 적용했습니다.
여기서 이제 by LSTM과 GCN을 같이 활용을 했는데 논문에서는 각각이 시간적 공간적 정보를 학습하고 있다고 이야기하고 있습니다.
그리고 entity extraction과 relation extraction을 end-to-end로 수행을 했다고 이야기하고 to-phase 구조를 통해서 페이즈 1에서는 entity와 relation 사이의 관계를 학습하고 페이즈 2에서는 그를 활용해서 entity extraction과 relation extraction을 수행을 했다고 합니다.
그래서 전체적인 오버뷰 그림은 다음과 같습니다.
페이즈 1이 있고 페이즈 2가 있습니다.
그래서 페이즈 1에서 relation과 entity 사이의 관계를 찾고 찾아낸 관계를 활용해서 실제로 entity extraction과 relation extraction을 수행한다고 보시면 됩니다.
그래서 먼저 페이즈 1부터 소개를 드리겠습니다.
페이즈 1의 인풋 데이터는 포스트헤깅이 포함된 데이터고 한 분장씩 텍스트로 인풋을 수행하게 됩니다.
그래서 기본적으로는 by LSTM이기 때문에 LSTM의 한 워드씩 인풋되는 것을 그대로 생각해 주시면 되고 거기에 포스트헤깅이 추가됐다고 생각해 주시면 됩니다.
여기서는 이제 딥러닝 기풉들이 적용되던 시기라 이러한 인베딩의 버트나 T5 등의 최근에 커다란 랭기지 모델은 사용되지 않았고요.
사전학습된 글로브를 통해서 인베딩을 수행했습니다.
그래서 인베딩이 됐다는 의미이고 각각의 워드들의 인베딩과 포스트헤깅의 인베딩을 컨케트네이션해서 각각 시점에 LSTM의 히든 레프리젠테이션으로 인풋을 하게 됩니다.
그래서 이제 여기서 우리가 이 다음으로 또 그래프로 넘어간다고 말씀을 드렸는데 사실 LSTM의 인풋을 통한 아웃풋 결과가 사실 그래프랑은 아무 관계가 없습니다.
그래서 본 논문에서는 그래프 구조를 활용을 하기 위해서 LSTM의 아웃풋을 어떤 그래프 형태로 강제로 만들어 주는데요.
여기서 만들어 주는 방법은 우리가 아까 포스트헤깅 정보를 가지고 있는 데이터를 활용했다고 했는데 포스트헤깅의 디펜던시 파설을 그대로 활용을 합니다.
포스트헤깅의 디펜던시 파설이 무엇이 무엇을 수식을 한다 이러한 디펜던시 파설을 그대로 인접행렬로 대처해서 활용을 했습니다.
인접행렬로 만들어진 그래프에서 각 노드의 레프리젠테이션은 방금 바이 LSTM에서 학습된 각 위치 포지션의 레프리젠테이션을 각 노드의 레프리젠테이션으로 활용을 하고 있습니다.
그래서 아래 보이시는 것과 같이 LSTM에서 디펜던시 파설을 통한 디펜던시 관계를 인접행렬의 인접성이라고 생각을 하고 그래프를 그리고 각각의 레프리젠테이션은 LSTM에서 학습된 레프리젠테이션을 활용하는 그러한 GCN이 완성이 되는데요.
본 GCN 같은 경우에도 바이 GCN으로 양방향으로서 노드 간의 지역적 피처를 학습을 수행하도록 합니다.
그래서 양방향이기 때문에 다이렉티드 그래프이고 이웃하는 노드에 대해서 양방향 별도로 프로파게이트를 수행합니다.
식을 보시면 화살표가 나가는 방향, 들어오는 방향 각각 그래프 프로파게이트를 수행하고 양방향을 더해서 특정 시점에 해당 노드의 레프리젠테이션을 구하게 됩니다.
이 프로파게이트 과정을 간단하게 말씀을 드리면 여기서 N이라고 되어 있는 게 결국 이웃하는 노드들 사이에서만 이웃하는 노드의 레프리젠테이션의 특정한 방향의 가중치를 통해서 가중합을 통해서 액티베이션해서 다음 시점에 레프리젠테이션을 얻는다는 의미입니다.
반대 방향도 마찬가지이고요.
그래서 그 다음으로 우리가 GCN까지 학습을 수행해냈으니까 엔티티와 릴레이션을 여기서 추출해낼 수가 있습니다.
여기서 특징적인 것은 방금 전에 우리가 엣지를 전부 학습했는데요.
학습을 하는 과정에서 디펜더시 파설을 통한 인접행렬로 엣지를 이미 다 그려놨었는데 여기서는 이 엣지를 전부 무시를 합니다.
사실 왜냐하면 생각해보면 이 엣지는 결국 디펜더시 파설에서 말한 수식관계이기 때문에 이걸 그대로 활용을 하면 새로운 엔티티나 릴레이션이 추출되는 게 아니라 그냥 간단하게 어떻게 디펜더시 파설과 연결이 되어 있는지만 다시 재생산을 하는 거기 때문에 그걸 전부 제외하고 그걸 통해서 얻을 레프리젠테이션만을 통해서 엔티티와 릴레이션을 추출을 합니다.
모든 단어와 모든 쌍에 대해서 결국 모든 조합을 시도를 해보는 건데 모든 단어에 대해서는 원레이어 LSTM을 통해서 엔티티 클래시피케이션을 수행을 합니다.
모든 단어 노드에 대해서 얘가 엔티티냐 아니냐라는 클래시피케이션을 수행을 하고 그 정답에 대해서 카테고리컬 로스를 얻게 되고요.
그리고 릴레이션에 대해서는 모든 단어쌍 조합에 대해서 모든 릴레이션에 대해서 예측을 수행을 합니다.
뒤에서 또 말씀드리겠지만 결국 이 데이터셋에서 릴레이션이 총 몇 개고 뭐가 있는지는 다 알고 있다는 가정이기 때문에 모든 추출된 단어쌍에 대해서 모든 릴레이션이 실제로 맞느냐 아니냐는 예측을 수행하는 겁니다.
그래서 단어 1, 단어 2에 대해서 릴레이션 아래 스코어는 아래와 같이 계산이 됩니다.
그 워드의 레프리젠테이션들의 특정한 가중치를 곱해서 액티베이션 한 다음에 또 다른 가중치를 곱하는 것인데 그래서 얻은 워드 1, 워드 2 릴레이션 특정한 조합에 대한 스코어는 다시 소프트 맥스를 거쳐서 결국에는 워드 1, 워드 2에 대한 릴레이션 아래 확률로 이렇게 표현이 되게 됩니다.
결국에는 모든 조합에 대해서 다 있는 거기 때문에 모든 단어 조합 개수 곱하기 릴레이션의 종류만큼의 확률값이 나오게 되고 결국 이렇게 각각을 다 분리해 놨으니까 정답이 이 모든 조합에 대해서 원학벡터로 정답이 주어져서 이 원학벡터에 대한 또 카테고리컬 로스로 계산이 수행되게 됩니다.
이렇게 단어쌍과 릴레이션에 대한 모든 확률값을 다 구하게 되면 그를 통해서 페이즈 2로 넘어가게 되는데요.
페이즈 2에서는 방금 전에 얻은 단어쌍과 릴레이션 사이의 확률을 엔티티와 릴레이션 사이의 관계로 활용을 해서 이를 활용해서 엔티티와 릴레이션을 추출하는 과정을 실제로 수행하게 됩니다.
좀 전에 얻은 단어쌍과 릴레이션 사이의 관계를 그것 자체를 어떤 웨이트로 하는 그래프를 그리게 되는데요.
이때 그래프는 릴레이션마다 다 따로 생성을 하게 됩니다.
만약에 릴레이션이 두 개가 있는 예시를 들어보면 아래의 그림과 같이 릴레이션이 From과 Alice가 있다고 한다면 그 두 가지와 관계가 없다는 총 세 가지의 그래프를 그리게 되는데 만약에 초록색과 파란색이 Word1, Word2, W1, W2라고 한다면 Word1과 Word2 사이에 From이라는 관계를 가질 확률은 0.2 Alice의 확률은 0.5, 아무 관계도 없을 확률은 0.3 이런 식으로 우리가 실제로 페이즈 1에서 얻은 모든 정보들을 릴레이션마다 그래프를 그리게 되는 것입니다.
그래서 실제로 보면 0.2, 0.3, 0.5는 더하면 1이 돼서 이 값들이 일전에 페이즈 1에서 Word1과 Word2와 릴레이션에 대한 스코어를 Softmax한 그 결과들을 모두 사용했다는 것을 다시 생각해 볼 수가 있습니다.
여기서 그림에는 안 나타나 있지만 실제로 이 과정도 By GCN으로 방향이 있는 그래프입니다.
왜냐하면 Word1과 Word2의 순서가 바뀌면 관계의 주체와 객체가 바뀌는 것이기 때문에 그렇고요.
그림에 나타나 있지 않아도 By GCN이라는 것을 한 번 더 생각해 주시면 좋을 것 같습니다.
그래서 결국 그래프 구조의 weight라는 것은 이 이웃하는 노드들 사이에 이 weight만큼의 영향을 주고받는다는 의미로써 결국에는 이 그래프를 활용한다는 게 엔티티와 릴레이션의 관계에 따라서 서로 다른 크기의 영향을 주고받도록 하는 그래프를 만들었다고 우리가 받아들일 수가 있습니다.
그래서 결과적으로 릴레이션마다 생성된 모든 그래프들 이 각각의 모든 그래프들을 전부 결합하여 반영을 하게 된다면 페이즈 2에서는 모든 엔티티와 릴레이션 사이의 관계를 반영을 할 수가 있다고 이야기하고 있습니다.
그래서 그림을 보시면 릴레이션마다 만들어진 By GCN들을 전부 하나의 최종적인 prediction 상황으로 통합을 하게 되는데요.
그 과정의 식은 아래와 같습니다.
결국에 보시면 모든 엔티티와 모든 릴레이션 사이에 대해서 그 각각의 weight, 그 두 word 사이의 릴레이션의 확률만큼 우리가 프로파게이트하는 weight 가중치를 통해서 그래프들을 결합해서 다음 시점에 representation을 구하게 됩니다.
방금 전에 말씀드렸다시피 이것도 By GCN이기 때문에 방향에 따라서 각각 계산을 하고 그 둘을 더해서 현재 시점을 구하는 것인데 여기서는 화살표가 생략됐다고 보시면 됩니다.
그렇게 해서 최종적으로 우리가 2페이즈의 prediction, 2페이즈의 prediction 그래프를 완성하게 되면 여기서 페이즈 1에서 우리가 엔티티와 릴레이션을 추출했던 것과 마찬가지로 여기에 representation들만을 활용을 해서 이 노드들의 one-layer LSTM을 통해서 엔티티 클래시피케이션을 수행하게 되고 여기서 카테고리컬 로스를 얻게 됩니다.
그리고 또 다음으로 모든 단어쌍에 대해서 릴레이션 R1 확률을 여기서 새로 얻은 representation을 통해서 또 카테고리컬 로스를 페이즈 1과 동일하게 계산을 하면 됩니다.
그래서 트레이닝 디테일을 조금만 더 살펴보면 엔티티 익스트랙션 같은 경우에도 처음에 방범 론 소개할 때 말씀드렸다시피 BISO 태깅 방식으로 수행을 되고 모든 단어에 대해서 크로스 엔트로피 로스로 학습이 됩니다.
릴레이션 익스트랙션이 모든 단어쌍에 대해서 릴레이션 R1 확률에 대해서 학습을 하기 때문에 단어쌍을 기준으로 릴레이션을 추출하는 것이니까 정답도 스펜이 아니라 단어 단위로 결정이 되어 있습니다.
예를 들어서 버락 오바마 같은 경우에도 버락 오바마가 대통령이냐 라는 질문에서 버락 오바마 대통령 이렇게 정답이 되는 게 아니라 버락과 대통령 사이에도 정답이고 오바마 대통령 사이에도 정답 약간 이런 식으로 되어 있다고 생각해 주시면 됩니다.
전체 학습 로스 같은 경우에는 페이즈 1과 페이즈 2에 각각의 엔티티 릴레이션 로스들이 전부 더해지는데 페이즈 1, 2 사이에는 하이퍼 파라미터로 그 크기를 조절하고 있다고 생각해 주시면 될 것 같습니다.
임퍼러스 단에서는 총 3가지 방식이 있는데요.
헤드 프레딕션이라고 해서 단어쌍에 대해서 릴레이션을 어떤 확률 값으로 뽑는데 거기서 최대 값을 가는 릴레이션만 산출하는 경우가 있고 에버리지 프레딕션은 동일한 단어쌍에서 다른 릴레이션이 반복해서 산출이 된다면 전체 확률의 평균으로 최대 릴레이션을 결정한다는 의미이고 트레시홀드 프레딕션은 동일한 단어쌍에 대해서 다른 릴레이션이 산출될 때 각각을 독립적으로 고려해서 확률이 트레시홀드만 넘으면 모두 해당 단어쌍의 릴레이션으로 산출하는 것입니다.
이제 실제 실험의 데이터셋인데요.
데이터셋은 NYT와 WebLNG 두 개로 주목할 부분은 릴레이션의 수입니다.
기본적으로 모든 릴레이션의 종류를 알고 있다는 가정하에 수행된다고 말씀을 드렸었는데 아까 말씀드렸다시피 릴레이션의 수만큼 그래프를 그리게 되기 때문에 결국 본 모델에서는 릴레이션의 수가 그 모델의 복잡도가 되는 형태입니다.
그리고 이제 우리가 오버랩에 대해서 살펴보면 오버랩이 있으면 하나의 엔티티가 어떤 특정한 하나의 릴레이션으로 가까워지도록 학습이 되지 않지 않습니까?
만약에 우리가 아까 봤듯이 오바마가 미국의 대통령이다.
이런 식으로 오바마가 미국이 나오면 대통령이라고 쭉 학습을 하고 싶은데 여기서 또 다르게 통치한다라는 다른 단어가 나오면 특정한 방향으로 클래시파이어를 학습하는 걸 어떻게 방해하는 식으로 영향을 주기 때문에 조금 더 어려운 데이터라고 보시면 됩니다.
그렇게 해서 이 두 데이터에 대해서 메인 리졸트를 보여주고 있는데요.
베이스라인으로 비교하는 모델들도 아까 백그라운드에서 말씀드렸다시피 엔티티와 릴레이션을 동시에 추천하는 초창기 모델이라서 성능 자체가 그렇게 높지는 않습니다.
그럼에도 우선 당시에 오늘 설명드린 그래프 아리에이 소타를 달성하고 있고요.
페이즈 1과 비교했을 때 페이즈 2에서 확실히 성능이 향상되는 것을 확인한 것이 본 논문에서 주장하는 릴레이션과 엔티티 사이의 관계를 활용하면 좋다라는 그러한 오버랩에 대해서 지적한 부분을 개선하고 있다고 주장을 하고 있습니다.
그 다음으로 오버랩에 대해서 특정하게 컴프레이션 리졸트를 따로 보여주고 있는데 모든 릴레이션과 엔티티 쌍에 대해서 예측을 수행합니다.
그래프 아리에서는 아까도 말씀드렸다시피 모든 워드1, 워드2에 대해서 모든 릴레이션에 대해서 예측을 수행하니까 결국에는 오버랩이 있다고 하더라도 특정한 예측을 수행하지 않는 게 아니라 뭐가 나오든 말든 결국 다 수행을 하니까 본인들의 모델 같은 경우에는 오버랩에 대한 성능 하락이 적다고 주장을 하고 있습니다.
그러나 성능 향상 폭을 보면 노멀 클래스일 때에 비해서 실제로 오버랩이 발생했을 때 다른 모델들에 비해서 그렇게 성능이 많이 향상되고 있지 않기 때문에 해당 결론을 내릴 정도는 조금 성급하지 않았나 라는 생각도 들긴 합니다.
그리고 마지막으로 인퍼런스 컴프레이션 리졸트인데요.
일전에 인퍼런스를 헤드만 하거나 Threshold로 하거나 Average로 하는 세 가지 방식이 있다고 말씀을 드렸었는데 Threshold가 0.0에서 0.4 구간에서 Precision과 Recall 사이에 트레이드 오프가 조절이 되고 있는 걸 확인했으니까 본인의 목적에 따라서 Threshold 기법으로 실제로 적당하게 조정해서 활용을 할 수 있다는 결론 정도 얻을 수 있을 것 같습니다.
그리고 정리를 해보면서 Opinion을 말씀을 드리면 실제로 우측이 최근에 다양한 올해나 작년까지의 모델들까지 전부 포함된 성능표인데요.
그래프 아리엘 같은 경우에는 최근 모델들이 거의 90% 이상을 달성하는 것에 비하면 성능이 많이 떨어집니다.
다른 데는 90점인데 여긴 아직 60점대니까요.
물론 초창기 모델이기도 하지만 여기서 제가 주목한 부분은 본 모델이 Entity Recognition과 Relation Extraction을 동시에 수행한 최종 결과인데 사실 그래프 아리엘 같은 경우에도 Entity Recognition 부분만 보면 사실 성능이 거의 90%에 육박을 하고 있습니다.
이제 최근의 모델들은 월드 인베딩 시에 그래프 아리엘처럼 글로브를 쓴 게 아니라 T5나 버트 등 훨씬 무거운 모델을 사용한 건데도 첫 번째 테스트에서 그래프 아리엘이 나름 선방을 하고 있습니다.
그래서 이러한 성능 차이가 결국에는 Relation Extraction에서 확 차이가 나는 것으로 보이는데 저는 제 생각에 이번에 그래프 아리엘에서는 사용했던 By GCN 구조가 노드만 레프레젠테이션을 가지고 있는 구조이기 때문에 발생을 했다고 생각합니다.
최근에는 GCN을 수행할 때 노드에만 레프레젠테이션을 주는 게 아니라 엣지에도 레프레젠테이션을 줘서 그 엣지까지도 학습을 수행하는 경우가 많이 있는데 본 방법론 같은 경우에는 Relation을 단순히 Entity Representation에 Dependent하게 분류만 수행을 했기 때문에 이러한 Relation에 대한 성능은 많이 확보를 하지 못한 것으로 생각이 됩니다.
그래서 만약에 여기서 그래프 구조를 엣지까지 학습하게 된다면 과거의 모델임에도 나름 최근의 모델들처럼 성능이 많이 향상될 수 있지 않을까 생각했습니다.
마지막으로 컨클루션입니다.
크게 두 가지 파트로 발표가 구성되었는데요.
전체적으로 Knowledge Graph Construction에 대해서 세부적인 6개의 서브 테스트를 정리해보았습니다.
그리고 마지막으로 그래프 알리엘이라는 Knowledge Graph Construction에서 Name Entity Recognition과 Relation Extraction을 함께 수행하는 주요 베이스라인 모델을 설명을 드렸었는데요.
다시 한번 정리해드리면 Entity와 Relation Extraction을 동시에 시도한 초창기 모델이며 By LSTM과 By GCN을 연결한 모델 구조로 Entity Extraction과 Relation Extraction을 동시에 달성하였습니다.
그리고 또 두 단계의 페이지를 통해서 Entity와 Relation 사이의 관계를 반영하여 Prediction을 수행하는 모델을 제안하였습니다.
이렇게 모든 발표 마치겠습니다.
지금까지 긴 발표 들어주셔서 감사합니다.
SUMMARY
DSBA 연구실 석사과정 노건호가 발표하는 세미나는 논리지 그래프를 만드는 방법에 대한 전반적인 소개를 주제로 진행합니다.
논리지 그래프를 만드는 서브테스크를 예시와 함께 소개하고 각각의 서브테스크 모듈들이 하는 역할을 살펴볼 것입니다.
그리고 고전적이고 중요한 베이스라인 모델인 그래프 알리엘에 대해서도 자세히 소개할 예정입니다.
Information Extraction System을 통해 텍스트 데이터를 논리지 그래프로 만드는 과정과 그것을 이해하기 위해 용어를 다시 한번 짚는 과정도 있습니다.
그래서 1977년이라는 숫자는 특별히 인식하는 것이 아니고 이것은 단순하게 텍스트로만 인식되는 부분이라고 생각하고 있기 때문에 밑줄을 그어 놓은 것입니다.
기술적인 용어들을 다시 복습한 후, knowledge graph 생성 과정은 여러 가지 단계의 서브테스크를 거치며 생성됩니다.
이는 목적에 따라 특정 서브테스크 모듈이나 별도 테스크로 활용됩니다.
이 중 핵심적인 서브테스크는 Named Entity Recognition(NER)입니다.
NER은 엔티티를 찾아내고 각각이 어떤 종류의 엔티티인지를 표현합니다.
또한, 목적에 따라 숫자는 단순 텍스트로 인식되는 부분이라고 간주합니다.
Named entity recognition과 relation extraction은 knowledge graph를 만들기 위한 스텝들로 소개되었습니다.
주체와 객체를 찾고 그 사이의 관계를 찾아 트리플의 형태로 정보를 추출하는 것이 가능합니다.
따라서 이 두 과정만 거쳐도 우리가 알고 있는 knowledge base의 형태를 얻을 수 있으며, 이 둘을 information extraction의 핵심으로 분류하기도 합니다.
Knowledge Graph 분야는 NLP 테스트에서 활용되고 있으며, 이는 information extraction 같은 경우에도 다른 과정들을 합치는 것으로 이뤄집니다.
주요한 Subtask는 종료되었지만 다음 Subtask들도 예시를 들어볼 수 있습니다.
Event extraction은 어떤 Organization business를 Start했다는 이벤트를 추출하고 관련 참여자를 표현하는 것입니다.
Entity Linking은 NER을 통해 얻은 엔티티에 대한 추가적인 정보를 얻기 위한 과정으로써, 외부 데이터베이스를 통해 관련 문서를 연결하는 것입니다.
Knowledge Graph 분야는 NLP 테스트에서 활용되고 있으며, Information Extraction은 다른 과정들을 합치는 것으로 이뤄집니다.
주요한 Subtask는 종료되었지만 다음 Subtask들도 예시를 들어볼 수 있습니다.
Event Extraction은 어떤 Organization business를 Start했다는 이벤트를 추출하고 관련 참여자를 표현하는 것이고,
Entity Linking은 NER을 통해 얻은 엔티티에 대한 추가적인 정보를 얻기 위한 과정으로써 외부 데이터베이스를 통해 관련 문서를 연결하는 것입니다.
스티브 워즈니악의 Q483382라는 문서를 Wikidata에서 검색하면 다양한 정보들을 얻을 수 있고, Coreference Resolution은 다른 문장들 사이에서 동일한 엔티티를 찾아주는 과정이며, Knowledge Graph에서는 그래프의 멀지라고 생각할 수 있습니다.
다른 표현으로 나타난 엔티티들을 각각의 노드로 표현하여 같은 것인지 알 수 있게 하며, 만약 다르게 표현되어 있다면 정보를 얻기 어려워 추론에 한계가 있게 됩니다.
Wikidata에서 Q483382라는 문서를 검색하면 다양한 정보를 얻을 수 있습니다.
Coreference Resolution은 다른 문장들 사이에서 동일한 엔티티를 찾아주는 과정이며, Knowledge Graph에서는 그래프의 멀지라고 생각할 수 있습니다.
다른 표현으로 나타난 엔티티들을 각각의 노드로 표현하여 같은 것인지 알 수 있도록 하며, 만약 다르게 표현되어 있다면 정보를 얻기 어려워 추론에 한계가 있습니다.
Coreference Resolution이 제대로 작동하면 엔티티들이 그래프 상에서 하나의 노드로 표현되고, 멀티 호흡 문제도 해결될 수 있게 됩니다.
이후 Knowledge Graph Completion은 미싱된 엣지를 추론하는 과정으로, 기존 정보에서 새로운 정보를 추론합니다.
NER과 Relation Extraction이 직접적으로 정보를 추출하는 과정과는 다른 과정으로, 기존 정보를 활용해 새로운 정보를 추론하는 Knowledge Graph Completion 이 있습니다.
Named Entity는 고유명사 등의 것들로 목적에 따라 다르게 정의합니다.
각 데이터셋마다 다른 기준으로 클래스를 정의하고, 그 클래스를 BISO 태그를 통해 단어 단위로 표현하는 NER 태깅을 통해 엔티티를 추출합니다.
그리고 그 평가는 다양한 방법들이 있습니다.
Named Entity는 고유명사 등의 것들로 목적에 따라 다르게 정의되며, 데이터셋마다 다른 클래스로 정의하고 BISO 태그를 통해 단어 단위로 표현하는 NER 태깅을 통해 엔티티를 추출합니다.
평가는 다양한 방법들이 있습니다.
이러한 룰 베이스 어프로치는 단순한 패턴 매칭을 통해서 엔티티를 찾아내는 것이며, 최근에는 딥러닝 방식을 통해서 더 나은 결과를 내는 어프로치가 많이 사용되고 있습니다.
NER은 텍스트 데이터에서 네임드 엔티티를 찾아내는 것으로, 태깅하는 클래시피케이션 방식으로 평가하며, 전통적인 방식과 딥러닝 방식의 어프로치들이 있습니다.
NER은 텍스트 데이터에서 네임드 엔티티를 태깅하는 클래시피케이션 방식으로 평가하며, 전통적인 방식과 딥러닝 방식의 어프로치들로 구성되어 있습니다.
포스트깅 정보를 활용하여 엔티티를 찾아내고, 평가는 토큰 단위로 precision, recall, F1 score로 수행합니다.
포스트깅 정보를 사용하면 엔티티를 지정하거나 카운트 방식의 임베딩을 활용하여 코사인 시뮬러티를 계산하고 군지파를 수행하고 스포바이스드 러닝 방식이나 딥러닝 모델 구조를 사용할 수 있습니다.
릴레이션 익스트랙션은 특정한 관계를 찾아내는 테스크로 데이터셋이 다루는 정보와 목적에 따라 다른 관계의 종류로 정의됩니다.
ACE 데이터셋은 사람과 단체의 관계를 나타내는 멤버, 오너, 클라이언트, 시티즌, 부모, 형제, 배우자 등의 관계를 포함하고 있습니다.
공개된 프리베이스 논리지 그래프는 매우 거대하며, 릴레이션 익스트랙션은 NER과 비슷하게 슈퍼바이스드 메소드를 사용하여 클래시피케이션 태스크를 수행합니다.
최근에는 NER와 릴레이션 익스트랙션이 함께 동작하는 경우가 많고, 룰 베이스드 릴레이션 익스트랙션부터 딥러닝 베이스드 방식까지 다양한 어프로치가 있습니다.
NER과 같이 특정 단어가 오면 바로 어떤 룰이나 릴레이션을 가지고 있다고 지정하거나, 소수의 라벨드 데이터와 유사한 언레이블드 데이터를 찾아 라벨링하는 디스크리미니티브 혹은 제네레이티브 방식의 릴레이션 익스트랙션 점검법이 있습니다.
클래시피케이션 모델은 모든 서브젝트 오브젝트 쌍과 릴레이션 조합에 대해 이진 분류 라벨링을 하며, 이는 서브젝트 오브젝트 사이에 릴레이션이 있는가?
yes or no?
라는 두 가지 이진 분류로 클래시피케이션을 합니다.
디스크리미니티브와 제네레이티브 방식을 통해 소수의 라벨드 데이터를 찾아 라벨링하고, 데이터 수를 증가시키는 것으로 릴레이션 익스트랙션 점검법을 수행합니다.
현재 knowledge 그래프를 멀지해주는 역할을 수행하는 코레퍼런스 레솔루션은 멘션 디텍션과 멘션 클러스터링 두 가지 과정으로 이루어져 있으며, 스팸버트는 텍스트에 임베딩을 산출하고 엔티티들의 레프레젠테이션을 활용해 멘션을 탐색하는데 이용되고 있습니다.
기준에 따라 엔티티 기반과 멘션 기반 두 가지 방식으로 F1 스코어를 측정합니다.
이걸 다루기 위해서는 코어, NLL, F1 등이 있습니다.
이 중에서 코어, NLL, F1은 나머지 3개에 대한 평균이기 때문에 잘 모를 때는 마지막 것을 쓰는 것도 괜찮을 것 같고 본인의 목적에 따라서 평가 기준을 결정하면 될 것 같습니다.
Knowledge Graph Completion은 우리가 일반적으로 가지고 있는 Knowledge Graph의 Closed World Assumption과 Open World Assumption 두 가지 가정에 따라 미싱 엣지를 찾는 과정입니다.
이 과정에서 코어, NLL, F1 등의 평가 기준을 사용할 수 있으며, 본인의 목적에 맞게 결정하는 것이 좋습니다.
Knowledge Graph Completion은 Knowledge Graph를 완성하는 단계의 테스크로, 이 과정에서 Closed World Assumption과 Open World Assumption 두 가지 가정에 따라 미싱 엣지를 찾는 과정입니다.
이 과정에서 코어, NLL, F1 등의 평가 기준을 사용할 수 있으며, 마지막에 코어, NLL, F1이 나머지 3개에 대한 평균이기 때문에 잘 모를 때는 마지막 것을 쓰는 것도 괜찮으며 본인의 목적에 따라서 평가 기준을 결정하는 것이 좋습니다.
Knowledge Graph Completion은 Entity Prediction, Relation Prediction, Link Prediction으로 나뉘는데, 각각은 기존의 Subject, Relation, Object 중 하나를 비워놓고 나머지를 통해 예측하는 것이다.
Embedding Based 방식은 Subject, Relation, Object 각각을 Embedding을 하고 그 Embedding 결과를 통해 Knowledge Graph Completion을 수행하는 방법이며, 가장 대표적인 두 가지 Embedding 방법론이 있다.
Trance E는 Subject와 Relation의 두 가지 Embedding 벡터를 더하면 Object 벡터가 나오도록 Embedding을 수행하며, 모두 동일한 차원의 Embedding을 했다.
Trance R 방법론은 Entity와 Relation이 다른 특징을 가지므로 각각 다른 차원의 Embedding을 하고 하나의 차원으로 프로젝션하여 Subject와 Relation을 더하면 Object가 나오는 것으로 Embedding을 수행합니다.
그리고 Link-Path Reasoning이라는 접근법으로 Composition Relation이 성립하고 멀티홉으로 더 복잡한 과정을 출원해 나갈 수 있는 것입니다.
그래프 알리에는 다양한 방법론들을 통해 엔티티와 릴레이션을 추출하고 이를 통해 그래프를 만드는 방법론입니다.
단순하게 합하느냐, 가중합을 하느냐 식과 같은 방법론, 룰 베이스드 방식, 트리플 클래시피케이션 방식 등을 통해 그래프를 만들 수 있습니다.
ACL 2019에 게시된 논문으로 246회 인용되었으며, 성능은 최근 모델에 비해 높지는 않습니다.
2019년 논문으로 deep learning 기법이 적용되던 시기의 방법론 소개.
본 논문은 entity 추출과 relation 추출을 별도로 수행하는 시기에서, entity overlap이라는 관계를 고려하고 있지 않았던 상황을 개선하기 위한 모티베이션으로, LSTM과 GCN을 같이 활용해 end-to-end로 entity extraction과 relation extraction을 수행하는 방법론을 소개하고 있다.
이 논문은 포스트헤깅 데이터를 기반으로 한 딥러닝 기법인 LSTM을 통해 단어 인베딩과 포스트헤깅 인베딩을 수행하고, 이를 기반으로 한 포스트헤깅 디펜던시 파설을 인접행렬로 대처하고, 다시 단어의 위치 포지션에 따른 레프리젠테이션을 노드의 레프리젠테이션으로 활용하는 GCN을 수행하는 것을 목표로 하고 있다.
이 과정은 결국 이웃하는 노드들 사이의 특정한 방향의 가중치를 통해 액티베이션하고 레프리젠테이션을 얻는 것이다.
이를 통해 GCN을 통해 엔티티와 릴레이션을 추출할 수 있다.
단어 1, 단어 2에 대해 릴레이션 스코어는 가중치를 곱하고 소프트 맥스를 거쳐 확률로 표현되며 정답은 원핫벡터로 주어지고 카테고리컬 로스로 계산된다.
단어쌍과 릴레이션 사이의 확률값을 구하고, 그것을 활용해 엔티티와 릴레이션을 추출하는 과정을 페이즈 2로 수행합니다.
각 릴레이션마다 관계가 없는 총 세 가지 그래프를 그리고, 그 값들을 Softmax한 결과를 반영합니다.
이를 통해 방향이 있는 그래프를 그리고, 릴레이션마다 만들어진 그래프들을 전부 하나의 최종적인 prediction 상황으로 통합합니다.
이를 통해 모든 엔티티와 릴레이션 사이의 관계를 반영할 수 있습니다.
결국 모든 엔티티와 릴레이션 사이에 대한 각각의 weight 값을 통해 그래프를 결합해 다음 시점의 representation을 구하고, 엔티티 익스트랙션과 릴레이션 익스트랙션 모두 크로스 엔트로피 로스로 학습이 됩니다.
트레이닝 디테일은 방범 론 소개때 BISO 태깅 방식으로 수행되며, 전체 학습 로스는 페이즈 1과 페이즈 2의 엔티티 릴레이션 로스들이 더해지며, 하이퍼 파라미터로 크기를 조절합니다.
임퍼러스 단에는 헤드 프레딕션, 에버리지 프레딕션, 트레시홀드 프레딕션 3가지 방식이 있습니다.
데이터셋은 NYT와 WebLNG 두 개로 구성되어 릴레이션의 수에 따라 그래프를 그리게 되기 때문에 모델의 복잡도가 높아진다.
오버랩이 있으면 엔티티가 특정한 릴레이션으로 가까워지도록 학습이 되지만 다른 단어가 나오면 영향을 주기 때문에 어려운 데이터가 된다.
베이스라인 모델들은 엔티티와 릴레이션을 동시에 추천하는 초창기 모델로 성능이 높지 않지만, 그래프 아리에서는 모든 워드1, 워드2에 대해 모든 릴레이션에 대해 예측을 수행하므로 오버랩이 있다고 해도 성능 하락이 적다고 주장하고 있다.
이 모델은 최근 다양한 모델들과 비교해보면 성능이 떨어지지만 초기 모델에 비해 여전히 높은 성능을 보이고 있다는 것을 확인했다.
인퍼런스를 헤드만 하거나 Threshold로 하거나 Average로 하는 세 가지 방식 중, Threshold로 적당한 값을 조정하면 Precision과 Recall 사이에 트레이드 오프를 조절할 수 있다.
그래프 알리엘은 초기 모델로 여전히 높은 성능을 보이고 있으며, Knowledge Graph Construction에서 Name Entity Recognition과 Relation Extraction을 함께 수행하는 베이스라인 모델이다.
그래프 구조를 엣지까지 학습하면 성능이 향상될 수 있을 것으로 예상된다.
ERGCN은 초창기 모델로써, LSTM과 GCN을 연결하여 Entity Extraction과 Relation Extraction을 동시에 수행하고, 두 단계의 페이지를 통해 Entity와 Relation 사이의 관계를 반영하여 Prediction을 수행하는 모델이다.
감사합니다.