Semantic Web Research Center 튜토리얼


2018년 2월 26일날 KAIST가 개강하고 벌써 학교를 다닌지 1주일이 지났네요.

저는 전산학부 Semantic Web Research Center 석사과정으로 입학하게 되었습니다.

2월 첫째 주부터 연구실에서 신입생들 튜토리얼을 진행한다고 하였고, 약 8편의 논문을 읽었으며, KT AI Center에서 GIGA Genie 교육을 받기도 하였네요. 금주 세미나에 신입생 튜토리얼에 대한 발표를 하고 튜토리얼은 마무리될 것으로 생각합니다.

프로젝트는 총 6가지를 진행하는데요,
1) DBPedia - Wikipedia로부터 Semantic Web 구축과 URI 태깅 기반으로 Knowledge Base 구축
2) VTT - Video Turing Test. (비디오 대사와 스크립트를 이용하여 비디오의 지식을 추출합니다.)
3) PACS - 다형의 EMR 데이터를 학습하여 통합된 의료지원 Chatbot 개발
4) BII - 의료 관련 데이터로 의료 연관관계를 자동화로 발견하는 프로젝트
5) QAMEL - QnA on Mobile Devices
6) Exobrain - self-learning과 머신기술을 이용한 knowledge base 확장

프로젝트는 다음과 같고, 제가 튜토리얼을 진행하면서 이 프로젝트들에 기본적인 두 가지를 간단하게 소개시켜드리려 합니다.

용어 사용이 미숙치 않아서 용어가 잘못된 점이 있더라도 양해해주시고,, 댓글 남겨주시면 수정하겠습니다 ㅠ.ㅠ

- 한글 및 한국어 정보처리 (목적: Question 분석, L2K 구축)

Semantic Web Research Center라는 연구실명에 맞게 한글 및 한국어 정보처리에 연구를 매진하고 있습니다.
먼저, 한국어의 가장 큰 특징은 형태소가 단어의 끝부분에 위치한다는 것입니다.
예를 들어, 신기연은 대학원생이다. 라는 문장에서
은, 이다와 같은 형태소가 신기연과 대학원생이라는 명사뒤에 붙은 것을 확인할 수 있죠. QnA 시스템에서는 이러한 형태소 구분이 필수적인데요, 형태소 구분은 문장 분석의 일부분이랍니다.

문장 분석은 다음과 같이 구성됩니다 [1].


1) Part of Speech


문장에서 명사가 무엇이고, 부사가 무엇이고 형태소가 무엇이고 동사가 무엇인지에 대해 파악하는 작업입니다. 이를 품사 태깅이라고 불리기도 하는데요, 해당 품사가 무엇인지 알아야 QnA system이나 Knowledge Base 구축 작업에서 어떠한 지식을 요구하는지에 대해 파악할 수 있겠죠. Knowledge Base는 이후에 설명될 내용입니다만, Knowledge Base에서는 URI 태깅을 이용하여 Relation(Object, Object)와 같은 triple로 만드는 작업으로 구축이 이루어집니다. [2]

Object들간에 Relation을 만들기 위해서는 해당 동사와 주어, 목적어가 파악이 되어야 이러한 데이터를 만들겠죠? 그래서 동사 주어, 목적어 관계를 파악하기 위해 이루어져야 하는 작업이 바로 Part of Speech Tagging입니다.

2) Named entity recognition

그 다음은 알려진 entity를 구분하는 작업입니다. 예를 들어서 "마크 주커버그는 페이스북의 설립자이다." 라는 문장이 있다고 합시다[3]. 마크 주커버그는 유명인으로써 위키피디아 페이지가 따로 만들어질 정도이죠. 이러한 유명한 entity들을 만들어 일종의 페이지로 만드는 것이 바로 URI tagging입니다.[2]

이러한 Named entity를 구분하는 것이 좋은 이유는 해당 entity에서 특정한 relation에 해당하는 다른 object가 궁금할 때, 그저 URI 클릭만으로도 해당 object의 정보 페이지가 나타납니다. 우리가 QnA에서 궁금해하는 것이 유명인의 직업이나 나이지, 나는 어디에 살고 있나?와 같은 질문이 아닙니다. 그렇기 때문에 이러한 Named Entity를 구축하는 것이 QnA 시스템에서 중요하다 할 수 있죠.

3) Co-reference

다음은 Co-reference를 구분하는 작업입니다. 그림에서 볼 수 있듯이 앞에서 언급된 인물이 뒤에서 언급된 인물과 동일인물인지를 확인하는 작업이라고 볼 수 있는데요, 이러한 확인 작업이 필요한 이유는 바로 L2K 구축을 위함입니다.

예를 들어 위키피디아에서 object-object relation triple을 추출한다고 할 때, 위키피디아의 내용은 Table, Category, 일반 서술식 문장, image 등등 수많은 정보를 함유하고 있죠. 우리가 일반 서술식 문장을 지식으로 만들 때 필요한 것이 바로 이 Co-reference 작업입니다. 예를 들어 신기연은 대학원생이다. 그는 1996년에 태어났다. 라는 작업에서 "그"라는 명사가 "신기연"과 일치하는지 일치하지 않는지 확인할 수 없다면 born-year(신기연, 1996년)과 같은 triple을 추출하는 것은 불가능할 것입니다.

4) Universal Dependency Annotation [4]


1) Part-of-Speech tagging을 기반으로 문장 내에서의 Dependency를 파악하는 작업입니다. 이 작업이 중요한 이유는 아까 들었던 예시를 통해서 확인할 수 있는데요, 제가 나중에 언급할 상식 추출 분야에서도 써먹을 수 있는 작업입니다. 아까 들었던 예시인 "마크 주커버그는 페이스북의 설립자이다."를 살펴봅시다.[2] 마크 주커버그 페이스북 설립자는 모두 명사입니다. 하지만 마크 주커버그는 하나의 명사로써 사용되어야만 하고, 페이스북이 설립자와 연결된 Dependency를 파악하지 못하면, triple을 만들때 페이스북(마크 주커버그, 설립자)와 같은 잘못된 relation(object, object) triple이 생성될 수도 있겠죠. 그래서 문장 내에서 Dependency 파악이 중요하고 이는 QnA 시스템이나 L2K 구축 모두에 중요한 작업입니다.

또, 중요하게 대두되고 있는 문제가 Universal Dependency Annotation Problem입니다. [4]multilingual-transfer 작업에서 치명적인 문제인데요, 예를 들어 제가 "마크 주커버그는 어느 회사의 설립자인가?"라는 질문을 던졌을 때, 영어 페이지의 정보를 가져와야 할 때가 있습니다. 그런데 한국어의 Dependency Annotation 형태가 영어의 Dependency Annotation 형태와 다르다면? 제가 원하는 정확한 검색 결과를 찾는데에는 문제가 있을 것입니다.


이 문장 분석들은 다중-어의 단어 문제등을 안고 있는데 이를 위해 딥러닝을 사용하기도 하
고 한국어 특질을 고려하여 Word-embedding에 Bi-LSTM을 적용하기도 합니다. [2][5]

이러한 서술식 문장을 고려하는 것만이 아니라 질문 문장을 분석해야 하는 경우도 있습니다. 이는 FrameNet을 이용하는데요, Q-Frame과 Q-FE라는 어휘-프레임 매칭을 이용하여 질문의 단서가 무엇이고 어떠한 형태의 질문을 원하는지 알 수 있죠 [6]. 더 자세한 내용은 논문을 참고하시면 좋을 듯 합니다.


- 지식 및 상식 추출

재밌는 것은, 지식과 상식을 추출할 때에 있어, 일반 서술식 문장만 사용하는 것은 아닙니다. 예를 들어 BII project 같은 경우에는, 표로 처리된 layout을 지식으로 만들어야할 때도 있고, 그림으로부터 일반적인 상식들을 추출해야하는 경우도 있습니다. [7][8]

지식 베이스를 구축하기 위해서는, 자연어 처리로만 해결되지 않는다는 점이 있다는 것이죠. 물론 자연어 처리가 중요한 부분이긴 하지만, 이미지를 처리해서 상식을 추출하는 경우도 많답니다.

지식베이스를 구축하는 가장 기본적인 방법은 Wikipedia로부터 정보를 따오는 것입니다. Wikipedia가 전문가의 작업으로 작성된 정보들을 많이 함유하다보니 여기서 발생되는 서술형 문장들을 지식베이스를 구축하는 데 사용하는 데, 이를 L2K라고 합니다. 기본적인 형태를 띤, 즉 머신이 알아볼 수 있는 데이터를 지식베이스로 구축하는 것은 B2K라고 합니다.

아까 한국어 처리 분야에서 말씀드렸다시피, 기존 서술형 문장을 분석하고 이를 지식 트리플로 추출해내는 데요.
다음과 같은 예시를 하나 들어볼겠습니다.
예를 들어 관계 장군(X, Y)는 "X의 장군은 Y"라는 관계이고, 수도 (X,Y)는 "X의 수도는 Y"라는 관계를 나타냅니다. 이를 행렬을 이용하여 도식화할 수 있습니다.

이 경우에 <조선, 이순신>이라는 튜플이 장군 Relation에서 1의 값을 가지고 나머지 칸은 모두 0인 행렬을 얻을 수 있습니다.

이렇게 얻은 행렬을 통해 유사한 행렬을 만드는 데요, 유사한 행렬을 만드는 이유는 우리가 직접적으로는 얻지 못했지만 간접적인 정보로 얻을 수 있는 관계 트리플을 얻기 위해서입니다. [9]

예를 들어 장군(조선, 이순신)과 고향(이순신, 한양)이라는 트리플이 있습니다.

만약 우리가 도시(조선, 한양) 이라는 트리플이 없다면, 한양은 어느 나라의 도시입니까? 라는 질문에 답할 수 없겠죠. 그러나 우리는 이순신 object가 가지고 있는 relation을 통해서, 즉 저 두 개의 트리플을 통해서 도시(조선, 한양)이라는 관계를 유추할 수도 있을 것입니다. 이렇게 스스로 지식베이스를 확장해나가는 것을 위해 행렬 분해 모델을 사용하는 것이죠.

근사 행렬에 담겨있는 정보들은 이러한 유추 관계 모델을 정리하는 행렬이라 생각하면 될 것입니다.

이외에도 그림에서, 표에서 추출하는 지식을 추출하는 방법이 있습니다. 이는 모두 제 블로그에 번역되어있으니, 참고하시길 바라고 그림에서 지식을 추출하는 방법을 소개하는 논문을 다시 한 번 리뷰, 그리고 정리하는 블로그 글을 적을 것이니 참고하시면 좋을 것 같습니다. [7][8]


[1] J. Hirschberg and C. D. Manning, Advances in natural language processing, Science, 2015.
[2] Y. Kim, Y. Hahm, J. Kim, D. Hwang, Key-Sun Choi, 한국어 텍스트의 개체 URI 탐지: 품사 태깅 독립적 개체명 인식과 중의성 해소, 한글 및 한국어 정보처리 학술대회 논문집, 2014.
[3] S. Nam, K. Han, E. Kim, S. Kwon, Y. Jung, Key-Sun Choi, 다중 어의 단어 임베딩을 적용한 기반 원격 지도 학습 - CNN 관계 추출 모델, 한글 및 한국어 정보처리 학술대회 논문집, 2017.
[4] R. McDonald, J. Nivre, et al., Universal Dependency Annotation for Multilingual Parsing, Proceedings of the 51st Annual Metting of the Association for Computational Linguistics, pages 92-97, 2013.
[5] S. Nam, Y. Hahm, Key-Sun Choi, 한국어 특질을 고려한 단어 벡터의 Bi-LSTM 기반 개체명 모델 적용, HCLT, 2017.
[6] Y. Harm, S. Nam, Key-Sun Choi, 한국어 질의응답 시스템을 위한 프레임 시멘틱스 기반 질의 의미 분석, HCLT, 2016.
[7] D. Pinto et al, Table extraction using conditional random fields, SIGIR `03 Proceddings of the 26th annual international ACM SIGIR conference on Research and Development in information retrieval, pages 235-242, 2003.
[8] M. Yatskar, V. Ordonez, et al., Stating the obvious: Extracting visual common sense knowledge, Proceedings of NAACL-HLT, pages 193-198, 2016.
[9] J. Kim, S. Nam, Key-Sun Choi, 지식베이스 확장을 위한 행렬 분해 모델, 한글 및 한국어 정보처리 학술대회 논문집, 2017.

댓글

가장 많이 본 글