ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [논문리뷰] Personal Knowledge Base Construction from Text-based Lifelogs
    Data miner/Information Retrieval 2020. 3. 11. 15:27
    728x90

    SIGIR 2019 / Session 2C / Knowledge and Entities 

    Yen, A. Z., Huang, H. H., & Chen, H. H. (2019, July). Personal Knowledge Base Construction from Text-based Lifelogs. In Proceedings of the 42nd International ACM SIGIR Conference on Research and Development in Information Retrieval (pp. 185-194).

     

        이 논문에서는 Twitter와 같은 SNS에서 텍스트 데이터를 바탕으로 개개인의 삶의 사건들을 추출하여, 개개인의 Knowledge base를 구축하려 한다. 이 과정에서 다음과 같은 문제를 중점으로 해결하고자 한다. 1) SNS상의 텍스트 데이터가 모두다 개인의 삶과 연관된 것이 아니며 2)사소한 사건들은 명시적으로 표현될 수도 있으나, 암시적으로 표현되어 있는 텍스트 또한 이를 적절히 다루어야 하며, 3) Knowledge base를 구축하는데 있어서 주-술-목에서 서술어가 때로는 생략되어 있는 문제도 해소해야 한다. 4) 자연어의 서술어를 통한 관계성 파악은 모호한 작업이기도 하다. 

     

       Personal knowledge base와 관련한 연구들로서 몇몇 연구들은 주로 삶에 있어서 주요 이벤트(결혼, 승진, 시험, 졸업)를 중심으로 이와 관련한 정보들을 추출하고자 하였다. 본 논문에서는 중요 이벤트 뿐만이 아니라 사소한 삶에 있어서의 경험 정보(지역 식당 방문, 친구들과의 수다 혹은 만남)들도 포착하고자 한다. 특히 과거 Knowledge graph를 구성하는 기본단위라고 할 수 있는 triple(주-술-목)에시간과 관련한 정보도 추가하여 다룬다. 이를 quadruple form(subject, predicate, object, time)으로 정의하고 있다. 

     

    특히, SNS상의 텍스트에서 삶의 이벤트를 추출하는데 있어서 두 단계로 접근한다.

    1단계에서는 트윗 텍스트에서 명시적/암시적 삶의 이벤트인지 아닌지를 탐지하고, 감지된 삶의 이벤트에서 관계성을 담당하는 서술어predicate를 적절하게 제시한다. 

    -> 이 때, 하부테스크에 해당하는 뉴럴네트워크를 joint learning 방식으로 학습시킨다.

    2단계에서는 1단계의 모델 결과물을 바탕으로 각각의 모델이 제시한 predicate에 주-목-시간 정보를 결합하여 quadruple의 형태로 만든다. 

    주어, 목적어, 시간, 그리고 서술어(관계성)을 파악해서 quadruples의 형태로 나타낸다. 특히, 각각의 요소들은 외부 semantic parser를 통해 라벨링된다(eg. FrameNet). 최종적으로 이 parser가 태그된 quadruples들이 개개인의 knowledge base를 구축하는데 사용된다. 

        여기까지 이야기를 듣다보면, 이렇게 어렵게(?) 구축한 personal knowledge base가 어떻게 응용될 수 있는 것인지 의문이 든다. 논문의 저자는 개개인의 knowledge base가 개인에 대한 사적인 질의 응답(Question Answering)에 사용될 수 있으며, 이러한 분야가 앞으로 유망해질 것이라고 본다. SNS에 있는 여러 정보들을 바탕으로 필요할 때마다 개인의 과거 정보들을 손쉽게 얻을 수 있기 때문이다. 예를 들어, 사소한 낙서장과 같은 트위터같은 자신에 관한 소소한 이야기를 올릴 수 있는 플랫폼을 생각해보자. 다음과 같은 로그 기록이 있다고 하자. 

    "부암동에 있는 스코프에 갔는데, 브라우니 진짜 맛있더라" 2020 03 07

    "오늘 부암동에서부터 집까지 걸어왔는데 너무 멀더라" 2020 03 07

    위와 같은 트윗을 기록으로 남겼고, 이를 바탕으로 personal knowledge base가 구축이 된다면, 추후에 나는 "부암동에서 방문했던 베이커리 가게 이름이 무엇이었더라?"와 같은 질문에 "스코프"라는 답을 쉽게 얻을 수 있다.  

    논문에 소개된 트윗 예시는 다음과 같았다.

     

    앞으로 소개할 논문에 대한 디테일한 아이디어 이전에, 논문이 다루는 핵심 내용은 다음과 같다. 위의 소개한 문제의식을 가지고, 본 논문은 자체적으로 트윗 데이터를 바탕으로 개인 로그 데이터셋을 구축하며, 구축한 데이터셋을 바탕으로 quadruple form을 생성할 수 있는 모델을 개발 및 학습하였다. 

    자체적으로 개인 로그 데이터에 대한 라벨링을 통한 코퍼스 구축

       지금까지 공개된 개인 로그 데이터가 없기 때문에, 저자들은 자체 인력을 통해서 로그 데이터를 라벨링하였다. 이 코퍼스를 모델을 학습하는데 사용하였다. 라벨링하는 사람들은 트윗에 일상적인 사건 혹은 경험 데이터가 있는가의 유무 판단과 함께, Quadruples(Subject, Predicate, Object, Time) 형태의 변환을 위해 각각 트윗에서 주-술-목-시간 데이터로 표현하였다. 이렇게 작업한 트윗 데이터는 총 25,344건이다. 

       트윗들을 라벨링하였을 때, 상위 Knowledge base relation은 그들이 무엇을 보고, 무엇을 들었는지, 그리고 그들이 어디에 있는지에 대한 것이었다고 한다. (타이완 저자들이 타이완 트윗에 대해서 연구한 것이기 때문에 이를 감안하고 봐야하지만) 

     

    방법론 파트 / 그들은 personal knowledge base를 구축하기위해 어떻게 모델링 했는가? 

        첫번째 단계는 세 가지의 하위 테스크로 구성되어 있다. 세가지의 하위테스크는 서로 밀접하게 연관되어 있으므로, 세부 테스크를 joint learning의 접근방식으로 함께 학습시킨다. 

    1) 삶의 사건들을 다루고 있는가. binary classification으로 나타낸다. 

    output layer 에는 softmax layer가 쓰인다. 

    2) 삶의 사건들을 다루고 있다면, 텍스트의 predicate가 삶의 사건들을 나타내는 것들에 대한 것으로 명시적인가. 

       서술어 중에서, KB realtion으로 연결될 수 있는 서술어에 대해서 Begin, Inside라는 라벨을 붙인다. Begin은 첫번째 predicate를 뜻한다. 만약, 서술어지만 관계성으로 사용될 수 없는 predicate의 경우 Outside라고 라벨링한다. output layer 에는 sigmoid layer layer가 쓰인다. 

    3) 암시적인 삶의 사건들이라면, 적절한 predicate를 찾아본다. 

    KB relation에서 가장 적합한 predicate 후보군을 연결한다. 이 경우 multi-label classification에 해당한다. output network로서, 양방향 LSTM모델과 Conditional random field가 사용된다.

       첫번째 단계의 결과물로 개인 삶의 사건을 다루는지 여부값 (0,1) / 명시적인 predicate n개 / 암시적일 경우 m개의 predicate 후보군이 나온다. joint learning approch에 따른 아키텍쳐 구성에 따라서, 각 세부테스크는 동일한 input layer와 sentence representation을 공유한다. 각 subtask는 각자의 목적식을 만족하기 위한 특수한 output network를 가지고 있다. 

      두 번째 단계에서는 첫번째 단계의 결과물을 바탕으로 주(보통 트위터 계정 주인 자신)-술-목-시간의 형태로 나타낸다. 이는 sequence labeling problem에 해당한다.  

    Feature Representation 부분

      Feature representation에 따라서 모델의 성능이 어떻게 달라지는지도 실험하였는데, 이들이 로그 데이터를 어떻게 표현했는가는 다음과 같다. 1) 단어 단위와 문자 하나씩 개별 단위로 표현하여 실험하였다. 2) Stanford POS tags 정보를 활용하여, 각 단어어에 대한 Pos tag를 원핫 인코더로 표현하였다. 3) 트윗의 메타데이터도 활용하였다. 즉, 트윗을 작성한 작성자에 대한 정보도 넣었다. 트윗을 작성한 작성자 계정 정보와 언제 트윗이 작성되었는지도 포함하였다. 4) 기본 BERT모델의 마지막 단의 sentence의 정보를 함축하고 있는 embedding 정보를 활용하였다. 

      자연스럽게도? 단어단위와 문자단위의 embedding정보를 모두 활용하는 것이 모델의 성능이 높았다. 또한, BERT sentence embedding과 트윗의 메타데이터를 모두 포함시키는 것이 모델의 성능을 높였지만, BERT sentence embedding정보가 성능 향상에 기여하는 바가 더 컸다. 

     

    * personal knowledge base구축에 대해서 관심이 있었던터라, 시도해보고 싶었던 주제였는데... 일단 데이터 set구축이 선행되어야 한다고 하니. 내 데이터를 합리적으로, 적절하게 라벨링 하기 위해서 선행연구를 참고해서 시도해봐야겠다 :)

Designed by Tistory.