사람들은 대체로 긴 글을 읽는 것을 좋아하지 않습니다. 모든 것이 빨리 변하고, 새로운 것이 하루가 멀다 쏟아지는 세상에서, 읽어야할 글 역시 폭발적으로 늘어나고 있기 때문에 천천히 모든 글을 읽어가며 따라가는 것이 현대인들에게는 특히 더 버거운 것 같습니다. 게시물에 세 줄 요약을 달아놓는 것이 괜히 웹 커뮤티니 상에서의 미덕이 된것이 아니겠지요. 귀찮은 일이 있으면 그걸 도구를 사용해서 간편하게 바꾸려고 하는것 또한 인간의 본성입니다. 그래서 당연히 긴 글을 자동적으로 요약해주는 시스템을 만들고자 여러 학자들이 수십년 동안 연구해왔는데요, 이번 포스팅에서는 자동 요약 기법 전반에 대해서 간단하게 살펴보고, 최근 연구 동향은 어떤지 정리해보고자 합니다.
주로 다음 논문의 내용을 참조하였습니다.
Gambhir, M., & Gupta, V. (2017). Recent automatic text summarization techniques: a survey. Artificial Intelligence Review, 47(1), 1-66.
Allahyari, M., Pouriyeh, S., Assefi, M., Safaei, S., Trippe, E. D., Gutierrez, J. B., & Kochut, K. (2017). Text summarization techniques: a brief survey. arXiv preprint arXiv:1707.02268.
Kasture, N. R., Yargal, N., Singh, N. N., Kulkarni, N., & Mathur, V. (2014). A survey on methods of abstractive text summarization. Int. J. Res. Merg. Sci. Technol, 1(6), 53-57.
자동 요약은 말 그래도 '요약' 작업을 컴퓨터가 대신해주도록 하는 기술입니다. 요약이란 어떤 문헌을, 그 문헌의 정보를 잘 표현할 수 있는 압축된 문장들로 표현하는 작업을 말하구요. 사실 설명은 간단해보이지만, 요약이라는 작업은 그 관점에 따라 굉장히 다양한 종류로 나누어지는 녀석입니다. 주로 연구된 자동 요약의 종류를 정리해보자면 다음과 같습니다.
가장 기본적인 것으로, 요약하려는 문서가 1개인 경우와 여러 개인 경우 사용할 수 있는 기법이 크게 달라집니다. 물론 단일 문서 요약을 여러 문서에 대해 적용하여 다중 문서 요약을 수행할 수도 있겠지만, 이 경우 여러 문서들에서 공통적인 내용이 등장할 때 중복을 제거하고 핵심만 뽑아내는데 실패하게 됩니다. 따라서 다중 문서 요약에서는 여러 문서들 사이에서 발생하는 중복을 제거하는 기법에 집중합니다.
요약문을 생성하는 방법에 따라 추출적 요약과 추상적 요약을 생각해 볼 수 있습니다. 추출적 요약은 문헌 내에서 중요한 핵심 문장들을 뽑아서 그 문장들로 요약문을 만드는 방법입니다. 반면 추상적 요약은 문헌의 내용을 잘 반영할 수 있는 추상적인 문장을 직접 생성함으로써 요약문을 만듭니다. 전자의 경우 어떤 문장이 핵심인지만을 파악하여 그걸 골라내고 예쁘게 잘 이어붙이면 되는 반면에, 후자의 경우 전체 내용을 이해하고 그 내용을 잘 표현할 수 있는 간결한 문장을 직접 작성해야하므로 상당히 고난도의 작업이 됩니다. 따라서 현재까지는 주로 추출적 요약에 대한 연구가 자동 요약 분야의 대세를 이루었으나, 최근 딥 러닝 기반의 자연언어처리 기술이 발전하면서 추상적 요약에 대한 도전이 등장하고 있습니다.
이 경우는 요약문에 어떤 내용을 포함시킬지를 바탕으로 요약 기법을 나눈 것입니다. 일반적으로 생각하는 요약은 포괄적 요약으로, 이는 문헌 내에 있는 모든 측면을 고르게 포함시키는 요약을 말합니다. 반면 사용자가 문헌 전반적인 내용을 알고 싶기보다는, 특정한 관심사만 알고 싶어할 수 있습니다. 신문을 보더라도 스포츠 부분만 보고 싶어하는 사람이 있듯이, 요약 결과도 특정 주제에 관한 것만 받아보고 싶어하는 경우라고 할 수 있죠. 이런 경우 이용자의 요구, 질의에 집중하여 요약문을 생성해야 하는데, 이를 질의집중적(query-focused) 요약, 혹은 주제집중적(topic-focused), 이용자집중적(user-focused) 요약이라고 부르기도 합니다. 이 경우는 개인화 요약과도 연결된다고 볼 수 있겠습니다.
요약을 위해서는 문헌 내에서 어떤 내용이 중요한 내용이고, 어떤 내용이 사소한 내용인지를 구분하는 작업이 필요합니다. 이를 구분하는 것을 어떻게 학습시킬지에 따라 자동 요약 기법을 지도학습 기반의 요약과 비지도학습 기반으로 나눠볼 수 있습니다. 지도학습 기반의 경우 수 많은 문헌 데이터에서 각각의 문장에 대해 중요한지, 사소한지를 라벨을 달아 훈련 데이터를 생성해 놓습니다. 그리고 이 훈련데이터를 바탕으로 새로운 문장을 입력했을때 이 문장이 중요한지 사소한지를 분류할 수 있게 분류기를 학습합니다. 이 때 분류 자질(문장의 중요도를 판별하기 위해 사용될 특성)을 선정하는 것이 중요합니다. 반면 비지도학습 기반의 경우 훈련 데이터가 필요하지 않습니다. 주어진 문헌의 특성만을 가지고 다양한 특성을 바탕으로 중요한 문장을 추출해내도록 합니다. 이에는 주로 클러스터링 기법이 활용됩니다.
지시적 요약은 문헌의 내용이 아니라 문헌 자체에 대한 설명을 통해 문헌을 요약하는 방법을 말합니다. 예를 들어 지금 이 블로그의 포스팅을 다음과 같이 요약할 수 있습니다:
자동 요약 기법에 대해서 설명하는 포스팅으로, bab2min이 2018년 12월 28일 새벽에 작성했음.
이 포스팅을 한 줄로 잘 표현한 요약이죠. 포스팅의 내용이 아니라 포스팅 자체에 대한 설명만 있는 겁니다. 흔히 말하는 포스팅에 대한 메타데이터를 표현하는 요약이라고 말할 수 있겠습니다. 반면 정보적 요약은 문헌의 내용을 설명하는 요약문을 생성하는 것을 가리킵니다. 위와 마찬가지로 이 포스팅을 정보적으로 요약한다면 다음과 같겠죠:
자동 요약은 컴퓨터를 통해 텍스트를 요약하는 기술을 가리키며, 문서 수, 문장 생성 방식, 내용 범위 등에 따라 다양한 종류의 기법이 있다. (하략...)
이것이 우리가 흔히 생각하는 요약에 걸맞는 개념이라고 할 수 있습니다.
요약하려는 문헌의 언어에 따라 요약 기법을 3가지로 분류해 볼 수도 있습니다. 먼저 단일언어 요약의 경우는, 요약하려는 문헌이 하나의 언어로 쓰여져 있고, 요약문 역시 원 문헌과 같은 언어인 경우를 가리킵니다(예: 한국어 문헌을 요약하여 한국어 요약문을 생성). 반면 다중언어 요약은 요약하려는 문헌이 여러 언어로 섞여 쓰여있는 경우에 사용합니다. 이 경우 요약문 역시 원 문헌에 있는 언어들로 쓰여야겠죠(예:한국어 & 영어가 섞인 문헌을 요약하여, 한국어 & 영어 요약문을 생성). 마지막으로 교차언어 요약의 경우는 요약하려는 문헌과 요약문이 다른 언어일 경우를 가리킵니다. 영어 논문을 읽고 한국어 요약문을 작성하는 경우가 딱 맞는 예입니다. 이 경우 기계 번역과 자동 요약 양쪽에 걸쳐 복잡한 작업을 수행해야하겠죠.
요약 대상이 일반 문헌이 아니라 웹 페이지이거나 이메일일수도 있습니다. 이들의 경우 일반 문헌과는 다른 특성을 가지기 때문에 좀더 특화된 요약 기법을 사용하는 것이 가능합니다. 먼저 웹 페이지의 경우 한 웹 페이지가 다른 웹 페이지들과 유기적으로 연결되어 있다는 특성을 가집니다. 특히 하이퍼 링크로 연결된 페이지들의 경우 서로 관련 있는 경우가 많기 때문에 이런 관련된 페이지들을 바탕으로 해당 페이지에서 말하는 내용 중 무엇이 핵심인지 파악하기 용이할 수 있습니다. 웹 페이지 요약에서는 이런 특성들을 십분 활용하고자 합니다.
이메일은 오고 가는 대화가 기록되는, 구어체와 문어체의 특성이 공존하는 매체입니다. 이런 대화체의 문헌들에서 중요한 내용을 끄집어 내기 위해서는 일반 문헌과는 다른 기법이 필요합니다.
이 경우는 요약 내용을 이용자의 입맛에 맞추어주는 기법들입니다. 사람마다 관심사가 다르기 때문에 같은 문헌의 요약을 받아보더라도, 그중에서 더 관심 있는 부분과 관심없는 부분은 사람에 따라 다르게 마련이죠. 따라서 이용자가 선호하는 패턴이나 주제를 기억해두었다가 그 내용에 알맞게 더 요약을 생성하는 것을 개인화 요약이라고 합니다.
또한 이용자가 특정 분야에 대해 어느 정도 지식이 있는 경우, 요약문에서 기존에 알고 있는 내용 말고 새로운 내용만을 보고 싶을 수 있습니다. 이런 경우 이용자가 이미 아는 것 말고 새로 업데이트된 내용만을 바탕으로 요약문을 생성할 수 있겠습니다. 이를 업데이트 요약이라고 합니다. 이런 시스템이 잘 구추된다면, 전문직 분야의 종사하는 사람들이 해당 분야의 새로운 소식들을 알아보는데 유용하게 사용할 수 있을 것이라 기대됩니다.
소셜 텍스트의 경우, 이용자들의 감성이 담겨 있는 경우가 많습니다. SNS에서 자신이 사용한 제품의 후기를 올리는 경우를 생각해보시면 좋습니다. 각각의 후기는 정말 짧고 별 내용이 없을 수 있지만, 수 십억 인구가 이렇게 올리는 SNS 내용을 보면 해당 제품에 대한 통찰력을 얻을테지요. 그렇지만 사람이 그것들을 일일히 볼수 없으니, 이를 감성에 따라 요약하여 받아보고자 하는 경우가 많습니다. 이런 경우 감성기반 요약이 사용되게 됩니다. 감성 분석(Sentiment Analysis)을 통해 주관성 여부를 판단한 뒤, 극성을 판단하여 긍정/중립/부정으로 텍스트를 분류하고 다중 문서 요약을 수행하는 식으로 요약을 수행하는 경우가 많습니다.
앞서 설명했듯이, 추출적 요약은 문헌 내의 문장들 중에서 중요한 문장만 골라냄으로써 요약을 수행합니다. 이는 바꿔말하면, 각각의 문장이 중요한지 사소한지를 분류하는 이진 분류 문제와 동일합니다. 그리고 이는 정보 검색의 주요 분야 중 하나인 자동 색인과 매우 유사합니다. 자동 색인은 결국 문헌의 내용을 가장 잘 들어내는 키워드를 뽑는 문제인데, 이는 문헌 내에 등장하는 수 많은 단어들이 주제어인지 비주제어인지 분류하는 이진 문제이기 때문이죠. 즉 자동 색인이 단어를 대상으로 중요한 것을 뽑는 것이라면, 자동 요약은 문장을 대상으로 중요한 것을 뽑는 문제라는 겁니다. 따라서 자동 색인에서 사용하던 여러 통계적 기법을 거의 그대로 자동 요약에 사용할 수 있습니다. 따라서 추출적 요약의 가장 기본적인 접근 방법은 통계적 방법이라고 할 수 있겠습니다.
중요한 단어를 찾아내는 가장 간단한 통계적 방법은 빈도 조사입니다. 이 외에도 좀더 정교한 방법으로 TF*IDF, 정보 획득량(information gain), 상호 정보량(mutual information), 기타 IDF를 변형한 척도들이 사용될 수도 있겠죠. 그리고 이렇게 얻어진 단어의 중요도를 바탕으로 전체 문장의 중요도도 계산이 가능합니다.
단어의 중요도 외에도 자주 사용되는 자질에는, 문장의 위치, 문장 내 긍정 키워드(중요문장에 자주 등장하는 키워드)의 빈도, 부정 키워드(비중요문장에 자주 등장하는 키워드)의 빈도, 문장의 중심성, 제목과의 유사도, 문장의 길이, 문장 내 수치 데이터의 유무, 개체명의 유무 등이 있습니다. 이에 대해서는 다음 논문에서 좀더 상세히 살펴볼 수 있다고 합니다.
Fattah MA, Ren F (2009) GA, MR, FFNN, PNN and GMM based models for automatic text summarization. Comput Speech Lang 23:126–144. doi:10.1016/j.csl.2008.04.002
이런 통계적 자질들은 그 자체로 비지도학습 방법으로 중요 문장을 변별하는데 쓰일수도 있고, 이를 기계학습의 입력으로 사용하여 지도학습 방법으로 분류 모델을 구축하는데에 쓰일수도 있습니다.
문헌 내에는 문헌의 주제와 관련된 문장도 있고, 그렇지 않은 문장도 섞여 있을 겁니다. 결국 우리가 문헌에서 알고싶은 부분은 문헌의 주제와 관련된 부분이므로, 이들만 추려내면 좋은 요약문을 만들수 있을 것이라는게 주제기반 접근법의 아이디어입니다. 그렇다면 어떤 문장이 주제와 얼만큼 연관되어 있는지를 파악하는게 이 기법의 핵심이 될 겁니다.
이를 측정하는 대표적인 개념이 Topic Signature인데, 이는 각 단어가 특정 주제를 얼마나 드러내는지를 보여주는 지표가 됩니다. 예를 들어 "유성우"라는 주제가 있다면, 이 주제를 드러내는 단어들에는 {천체, 별똥별, 운석, 혜성, 대기} 등이 있을 겁니다. 이런 단어들이 많이 등장하는 문장이 있다면 그 문장은 "유성우"와 관련된 문장이라고 판단할 수 있겠죠? Topic Signature를 일일히 수작업으로 만들수는 없고, 대게 통계적인 방법을 바탕으로 TS의 목록을 구합니다. 가장 간단한 것은 "유성우"와 관련된 문헌을 수집하고, 또 "유성우"와 관련없는 문헌을 수집한 다음, 관련 없는 문헌보다 관련된 문헌에서 더 자주 등장하는 단어의 목록을 추출하면 이 단어들을 TS라고 볼 수 있을 겁니다. 엄밀성을 위해서는 관련있는 문헌을 수작업으로 분류해야 하겠지만, 사실 "유성우"라는 키워드로 문헌 검색을 해서 나온 결과를 가지고도 만족할 만한 결과를 얻을수 있습니다.
이외에도 좀더 정교한 방법으로 문장의 주제 연관 여부를 측정하는 방법들이 제안되었습니다. Enhanced topic signatures, Thematic signatures 등이 있고 이에 대해서는 다음 논문에서 자세히 살펴볼 수 있습니다.
Harabagiu S, Lacatusu F (2005) Topic themes for multi-document summarization. In: SIGIR’ 05: proceedings of the 28th annual international ACM SIGIR conference on research and development in information retrieval. pp 202–209
주제 기반 접근법의 경우 위에서 설명했던 포괄적 요약뿐만 아니라 질의집중적 요약을 수행하는데 유용하게 쓰일 수 있습니다.
그래프 기반 접근법에서는 텍스트 내의 단어 혹은 문장을 각각의 정점(node)으로 보고, 이들 사이의 관계를 간선(edge)으로 표현하여 그래프 분석 기법을 적용하는 접근방법을 가리킵니다. 이에 대해서는 앞서 TextRank라는 기법을 소개한 적이 있습니다. TextRank에서는 문헌 요약을 위해 문헌을 문장 단위로 쪼개서 각 문장을 node로 설정하였고, 문장들 간의 유사도를 edge로 설정하였습니다. 그리고 PageRank를 통해 문장의 중요도 점수를 매겼죠. 이를 통해 상위 N개의 중요 문장만 골라내면 이것이 요약 결과가 되는 식입니다.
좀더 정교한 방법으로는 2013년 등장한 GRAPHSUM이 있습니다. GRAPHSUM을 간략히 설명하자면, 문헌들 내의 문장들에서 단어들을 추출하여, 단어들 간의 상관그래프를 구축합니다. 이 그래프에 PageRank를 적용하여 단어들의 중요도 점수를 계산합니다. 최종적으로 문장의 중요도를 계산하는데 이는 문장의 각 단어들의 중요도를 합한 것과 문장의 그래프 coverage를 조합하여 얻습니다. 자세한 내용은 다음 논문에서 확인할 수 있습니다.
Baralis, E., Cagliero, L., Mahoto, N., & Fiori, A. (2013). GRAPHSUM: Discovering correlations among multiple terms for graph-based summarization. Information Sciences, 249, 96-109.
그래프 기반 접근법은 대게 비지도학습적 방법이며, 별도의 학습 과정이 없다는 점 때문에 새로운 도메인에 쉽게 적용할 수 있다는 장점이 있습니다.
이는 수사구조이론(Rhetorical structure theory)에 바탕을 두고 있습니다. 이는 인간이 쓴 글들이 가지고 있는 구조를 분석하는 이론입니다. 논문이나 소설, 보고서, 하다못해 감상문 같은 글을 생각해봐도 대체로 그 구조는 비슷합니다. 먼저 제일 앞에 제목이 나오고, 그 다음 서론, 다음에는 핵심이 나오고 마지막에는 전체 내용을 마무리하는 내용이 등장하면서 전체 글이 끝나죠. 이렇게 어떤 글이라 할지라도 여러 부분으로 이뤄져 있고, 각 부분이 다른 부분과 특정한 역할을 맺고 있는데 이를 분석하는게 RST라고 할 수 있습니다. 이런 특성을 활용하면 핵심 부분을 찾아서 전체 글을 요약하는 작업도 할 수 있지 않을까 하는게 담화 기반 접근법의 요지입니다. 언어학 전공이 아니라서 더 깊이는 모르겠네요.
Mann W, Thompson S (1988) Rhetorical structure theory: toward a functional theory of text organization. Text 8:243–281
분류 문제를 해결할 수 있는 최신 방법은 역시 기계학습입니다. 중요한 문장인지 사소한 문장인지 라벨이 매겨진 수 많은 문장쌍을 입력으로 받아 새로 입력 받은 문장이 중요한지 사소한지 분류할 수 있는 분류기를 학습시킬 수 있습니다. 이에는 SVM, Naive Bayes, 의사결정트리 등의 분류기를 사용할 수 있습니다. 단, 문장은 텍스트로 이루어져 있으므로, 그 자체를 분류기의 학습으로 입력할 수는 없습니다. 그 대신 문장에서 추출한 자질들을 분류기의 학습으로 입력하게 되는데, 주로 사용하는 자질들은 위의 통계적 기법에서 소개한 자질들이 있습니다. 높은 성능을 위해서는 자질들 잘 선택해야하는데, 자질 선택의 어려움을 피하기 위해, 신경망을 이용한 분류기도 적용되고 있는 추세구요. 특히 신경망을 활용한 딥러닝의 경우 아래에서 소개할 추상적 요약 기법에서 더욱 활용되고 있습니다. 비지도학습 방법도 또한 여럿 시도되고 있는데 대표적인 것엔 클러스터링, 은닉 마르코프 모델 등이 있다고 합니다.
추상적 요약은 자연언어처리의 어려움 때문에 추출적 요약보다는 상대적으로 적게 연구가 되었습니다. 추출적 요약 기법이 잘 정제된 문헌에 대해서는 쓸만한 결과를 내면서도, 추상적 요약보다는 그 난이도가 상대적으로 낮기 때문이죠. 그런데 텍스트 길이가 짧고, 같은 의미에 대해서도 여러가지 표현 방법이 있는 소셜 텍스트들에 대해서는 추출적 요약 기법이 잘 작동하지 않습니다. 같은 의미를 뜻하는 문장이더라도 그 표현 방법이 너무나도 자유롭기에, 중복 제거가 잘 되지 않기 때문입니다. 따라서 이런 경우엔 좀더 간결하면서도 함축적으로 많은 정보를 전달할 수 있는 추상적 요약이 좋은 해결책이 될 것입니다. 추성적 요약의 주요 접근 방법에는 크게 다음과 같이 나눌 수 있습니다.
Prior Knowledge 기반, 혹은 템플릿(template) 기반 접근법이라고 봐도 무방합니다. 이는 사람이 직접 구축한 지식을 바탕으로 요약문을 생성하는 것을 가리킵니다. 문헌의 패턴에 따라 적절한 요약문의 템플릿을 미리 생성해두고, 전체 문헌 내에서 템플릿에 들어갈 내용들을 찾아서 채워넣는 것이죠. 템플릿을 수작업으로 만들기에 깔끔한 결과물이 나올 수 있지만, 얼마나 다양한 패턴에 맞춰서 템플릿을 만들지, 템플릿에 채워넣을 내용을 얼마나 잘 추출할지에 따라 전체 성능이 크게 좌우됩니다. 꽤나 품이 많이 드는 작업이라고 할 수 있겠죠. 뉴스 기사 생성이나 요약 등에 주로 사용된다고 합니다. 템플릿에 채워 넣을 내용을 추출하기 위해서는 규칙을 사용하거나(Rule-based), 온톨로지를 활용하거나, 구문을 파싱하여 tree를 이용합니다.
Harabagiu, S. M., & Lacatusu, F. (2002, July). Generating single and multi-document summaries with gistexter. In Document Understanding Conferences (pp. 11-12).
Kasture, N. R., Yargal, N., Singh, N. N., Kulkarni, N., & Mathur, V. (2014). A survey on methods of abstractive text summarization. Int. J. Res. Merg. Sci. Technol, 1(6), 53-57.
추출적 요약에서와 유사하게 그래프 기반으로 접근하는 방법 역시 시도되었습니다. Opinosis의 경우 제품 리뷰와 같이 다양하면서 여러 의견이 등장하는 문헌 집합을 요약하기 위해 그래프를 사용하였습니다. 여기에서는 각 단어를 node로 보고, 문장에서 등장하는 각 단어와 그 단어의 다음 단어를 edge로 연결하여 방향성 그래프를 생성했습니다. 이렇게 여러 opinion의 내용을 하나의 그래프로 표현하면 여러 edge들이 하나의 node로 모이고, 또 여러 edge로 갈라져 나가는 hub를 발견할 수 있고, 이를 바탕으로 weight가 높은 경로를 골라낼 수도 있습니다. weight가 높으면서 문법적으로 알맞는 경로를 골라내 문장으로 조합하는 방식으로 요약을 실시했습니다.
Ganesan, K., Zhai, C., & Han, J. (2010, August). Opinosis: a graph-based approach to abstractive summarization of highly redundant opinions. In Proceedings of the 23rd international conference on computational linguistics (pp. 340-348). Association for Computational Linguistics.
의미 기반 접근법은 문장의 의미를 해석하고, 축약하여 요약문을 생성하는 작업입니다. 이는 결국 자연언어이해(Natural Language Understanding)와 자연언어생성(Natural Language Generation)이 요구되는 접근법이라고 할 수 있겠죠. 이 방법은 다음과 같이 사람이 문헌을 요약하는 것과 유사하게 작업이 진행됩니다.
고전적인 방법에서는 중간형태를 언어학의 의미론(Semantics)에서 빌려옵니다. 의미론에서 하나의 문장은 최소 하나 이상의 Predicate과 Predicate에 딸리는 Argument를 가진다고 이야기합니다. 따라서 문장을 Predicate과 Argument로 분해할수도 있구요. 다음 예시를 보면 이해가 쉬울겁니다.
나는 오늘 영희가 좋아하던 철수를 만났다. => 만나다(나, 철수) ^ 좋아하다(영희, 철수)
만나다, 좋아하다는 각각 Predicate를 이루고, 이 Predicate의 Argument로 문장 내에 등장하는 Entity가 들어가게 됩니다. 이를 통해 문장은 트리 혹은 그래프의 형태로 표현이 가능하게 됩니다. Liu의 최근 연구에서는 Abstract Meaning Representation을 바탕으로 압축된 형태의 그래프를 형성하기 위해 통계적 기법의 모델을 사용하였습니다.
Liu, F., Flanigan, J., Thomson, S., Sadeh, N., & Smith, N. A. (2018). Toward abstractive summarization using semantic representations. arXiv preprint arXiv:1805.10399.
최근에는 중간 형태를 인간이 직접 정의해주는 대신, 딥러닝(Deep Learning)의 임베딩을 활용하는 기법도 등장하고 있습니다. 중간 의미로 N차원의 벡터가 들어가지만, 이게 어떤 의미인지는 모릅니다. 다만 인풋과 아웃풋을 적절하게 넣어주고 이를 학습하도록 하여 최적의 모델을 만들도록 하는거죠. 이때 입력되는 문헌도 여러 단어로 이뤄져 있고, 출력되는 문헌도 여러 단어로 이뤄져 있으므로 many-to-many를 다룰수 있는 RNN 모델이 애용됩니다. 특히 LSTM을 이용한 encoder-decoder sequence model이 적절할 겁니다. Paulus의 최근 연구는 강화학습을 이용해 추상적 요약 문제를 해결하고자 시도했습니다.
Paulus, R., Xiong, C., & Socher, R. (2017). A deep reinforced model for abstractive summarization. arXiv preprint arXiv:1705.04304.
자동 요약 기법을 평가하는 것도 쉬운 일이 아닙니다. 제일 정확한것은 기계가 요약해낸 내용을 여러 사람이 직접 읽고 점수를 매겨주는 것이겠지만, 사람마다 맞다고 여기는 요약의 내용이 다를 수 있기 때문에 객관적이며 체계적이기 어렵습니다. 따라서 자동요약의 결과를 체계적으로 평가하기 위해 SUMMAC(1996~1998), DUC(2000~2007), TAC(2008~) 등의 컨퍼런스에서 표준적인 evaluation set을 구축하려 노력해왔습니다.
아무래도 사람이 매번 결과를 직접 평가하기는 어렵습니다. 따라서 자동적으로 평가할 수 있는 방법들이 제안되었는데, 대표적인 것으로 ROUGE(Recall Oriented Understudy of Gisting Evaluation)가 있습니다.
ROUGE의 아이디어를 간략하게 정리하자면, 먼저 모범 답안 요약문을 만들어놓고, 자동 요약된 요약문이 모범 답안과 얼마나 유사한지를 비교하자는 것입니다. 단, 두 요약문 사이의 유사도를 계산할때 단어 단위에서 일치도를 보게 되는데, 다음 3종류가 제일 자주 사용되는 방법이라고 하네요.
n-gram 기반으로 두 요약문 사이의 유사도를 계산합니다. n-gram이라함은 연속된 n개의 단어를 하나의 단위로 보겠다는 겁니다. 모범 답안이 다음과 같다고 해봅시다.
the cat was on my keyboard
그리고 자동 요약 결과로 생성된 요약문은 다음과 같다고 해봅시다.
cat sat on the keyboard
ROUGE-1에서는 1-gram, 즉 단어 단위로 두 요약문을 비교합니다. 이 때 모범답안은 {the, cat, was, on, my, keyboard}이고, 자동 요약은 {cat, sat, on, the, keyboard}가 됩니다. Precision과 Recall은 다음과 같이 계산됩니다.
Precision = (양쪽 모두 일치하는 단어 개수) / (모범 답안의 단어 개수)
Recall = (양쪽 모두 일치하는 단어 개수) / (자동 요약 결과의 단어 개수)
따라서 ROUGE-1의 Precision = 4 / 6, Recall = 4 / 5가 됩니다.
반면 ROUGE-2에서는 2-gram을 기준으로 계산하므로, 모범 답안은 {^the, the cat, cat was, was on, on my, my keyboard, keyboard$}, 자동 요약은 {^cat, cat sat, sat on, on the, the keyboard, keyboard$} 입니다.
따라서 이때의 Precision = 1 / 7, Recall = 1 / 6이 됩니다.
n이 커질수록 연속된 단어가 일치해야하므로, 좀더 빡빡한 평가 척도가 됩니다. 반면 n = 1일 경우 어순에 상관없이 단어가 등장하기만 해도 맞다고 카운트해주겠죠.
ROUGE-L은 최장 공통 부분 수열을 가지고 평가하는 방법입니다. 좀더 쉽게 풀어쓰자면, 두 요약문에서 공통으로 등장하는 연속된 단어열 중 가장 길이가 긴 녀석을 찾겠다는 겁니다. 예를 들어 ABCDEF와 BCDADF의 최장 공통 부분 수열은 BCD가 됩니다. BCD가 연속해서 등장한 수열 중 가장 길이가 길기 때문이지요. ROUGE-L에서의 Precision과 Recall은 다음과 같이 정의됩니다.
Precision = (최장 공통 부분 수열의 길이) / (모범 답안의 단어 개수)
Recall = (최장 공통 부분 수열의 길이) / (자동 요약 결과의 단어 개수)
ROUGE-SU는 Skip-bigram과 Unigram을 포함하는 변형 척도입니다. Skip-bigram은 연속된 두 단어뿐만 아니라, 하나 건너 뛴 두 단어도 고려하는 skip-gram 기법을 말합니다. 즉 ABCD라는 단어열이 있으면 이것의 모든 skip-bigram은 AB, BC, CD 뿐만 아니라 AC, BD (사이에 단어 하나를 건너뛴 경우)도 포함하게 됩니다.
ROUGE-N에서와 같은 예문을 가지고 ROUGE-SU의 예시를 보이면 다음과 같습니다. 모범 답안의 경우 {the, cat, was, on, my, keyboard (unigram), ^the, the cat, cat was, was on, on my, my keyboard, keyboard$ (bigram), the was, cat on, was my, on keyboard (skip-bigram)}가 되고, 자동 요약 결과는 {cat, sat, on, the, keyboard (unigram), ^cat, cat sat, sat on, on the, the keyboard, keyboard$ (bigram), cat on, sat the, on keyboard (skip-bigram)}가 됩니다.
따라서 이 경우엔 Precision = 7 / 17, Recall = 7 / 14 가 됩니다.
ROUGE-SU는 한 단어를 건너뛰는 경우도 포함하기 때문에 두 단어 사이에 다른 단어가 끼어들거나, 바뀐 경우를 용인해주는, ROUGE-2보다는 관대하지만, ROUGE-1보다는 엄격한 척도라고 볼 수 있겠습니다.
지금까지 간략하게나마 자동 요약 기법에 대해서 정리해봤습니다. 사실 금방 끝날줄 알았는데, 이 분야가 생각보다 오래전부터 연구가 시작됐고, 다양하게 분화되어서 겉핥기만 하는데도 꽤 걸렸네요. 아마 이 분야 공부를 시작한다면 최근 많이 떠오르고 있는 딥러닝의 seq2seq 모델을 적용한 추상적 요약 쪽을 살펴보는게 좋을 것 같습니다. 개인적으로 이 기법의 향후 발전도 기대가 많이 되고 있어서 좀더 관련 연구를 찾아보려 하고 있어요.
[토픽모델링] 상관 토픽 모델(Correlated Topic Model) (14) | 2019.08.08 |
---|---|
단순하지만 강력한 Smooth Inverse Frequency 문장 임베딩 기법 (0) | 2019.04.24 |
단어 임베딩을 이용한 추출적 텍스트 요약 기법 (0) | 2019.02.08 |
[기계 번역] 이중 언어 데이터에서의 단어 임베딩 (Bilingual Word Embeddings from Non-Parallel Document Data) (0) | 2018.11.30 |
단어 의미의 역사적 변천을 추적하기 (1) | 2018.11.12 |
상위어 자동 추출(Hypernym Detection) 기법 정리 (1) | 2018.10.10 |
댓글 영역