시작하며
인류가 언어와 문자를 사용하게 된 이후 텍스트 정보의 양은 기하급수적으로 늘어났습니다. 여기에 인터넷의 등장은 불 난 집에 기름을 부은 격이었죠. 덕분에 인류가 보유한 지식은 방대해 졌지만, 대신 필요한 정보를 뽑아 쓰는데 드는 시간과 비용도 함께 증가해버렸습니다.
여러분도 수 천 페이지의 책이나 산더미 같이 쌓인 문서를 앞에 두고 난감해 본 경험이 있지 않나요? 실례로 ‘세계적 컨설팅 회사 매킨지에서는 직원들이 매일 평균 1.8시간(주당 9.3시간)을 할애해 작업 관련 정보를 검색하고 수집하는 것으로 나타났다.’*고 하죠. 그만큼 텍스트를 수집하고, 요약한다는 것은 시간과 노력이 많이 드는 작업입니다. 그렇다 보니 예전 사람들도 기계가 인간을 대신해 긴 글을 요약해주면 좋겠다는 상상을 했던 것 같고요.
그런데 아시다시피 그것이 실제로 일어났습니다. 최근 연일 화제였던 ChatGPT나 GPT-4와 같은 인공지능, 특히 자연어처리 기술의 발전 덕분이죠. 좀 더 구체적으로는 이번에 살펴보게 될 텍스트 요약(Automatic Text Summarization, 이하 ATS)이 효과적인 해결책이 되어 주었습니다.
지금부터 ATS에 대해 전반적으로 알아보고, 실제 몇 가지를 선정해 테스트해 본 결과도 함께 비교해보겠습니다.
ATS의 목표
· 긴 글의 중요한 아이디어를 짧게 압축합니다.
· 함축적이고 설득력 있는 요약을 생성하는 동시에 중요한 정보는 유지합니다.
· 사용자가 원문을 보지 않고도 핵심적인 내용을 파악할 수 있게 도와줍니다.
ATS의 활용
· 도서 요약 (Books or Novel Summarization) 짧은 문서에서 문맥을 파악하는 것은 쉽지 않기에, ATS는 소설과 같은 비교적 긴 문서의 요약에 더 적합합니다.
· SNS 요약 (Social Posts or Tweets Summarization) 페이스북, 트위터 등 소셜 미디어를 통해 매일 엄청나게 많은 양의 메시지들이 생성됩니다. ATS를 이용하면 이렇게 방대한 메시지들 속에서 유용한 정보를 파악할 수 있습니다.
· 감정 분석 (Sentiment Analysis) 감정 분석은 사건이나 상황에 대한 사람들의 관점, 느낌, 판단을 분석하는 것을 가리킵니다. ATS는 수 많은 사람들의 생각을 요약해서 시장 분석가 등 다양한 분야의 전문가들에게 도움을 줄 수 있습니다.
· 뉴스 요약 (News Summarization) ATS는 긴 뉴스 내용 중 가장 중요한 포인트를 추출해낼 수 있습니다.
· 이메일 요약 (Email Summarization) 대부분의 이메일 내용은 잘 구조화되어 있지 않습니다. ATS는 보통 명사구를 추출하고, 언어적 방법과 기계 학습 알고리즘을 사용해 요약문을 생성할 수 있습니다.
또한 그 외에도 아래와 같은 전문 분야 문서의 요약 등 다양한 업무에 활용할 수 있습니다.
· 법률 문서 요약 (Legal Documents Summarization)
· 의학 문서 요약 (Biomedical Documents Summarization)
· 학술 문서 요약 (Summarization of Scientific Papers)
ATS의 분류
IEEE(Institute ofElectrical and Electronics Engineers, 전기전자공학자협회)에서 발간한 논문[1]에 따르면 요약 방식과 알고리즘을 분류한 구조는 위와 같습니다. 크게 보면 추출식(Extractive)과 생성식(Abstractive)의 두 가지 방식으로 분류할 수 있죠.
Extractive Text Summarization
입력 텍스트에 있는 문장들을 이용해 요약문을 구성합니다. 우선 텍스트들을 문장 단위로 자르고, 중요도에 따라 각 문장에 점수를 할당해주고, 가장 높은 점수의 문장들을 선택하는 순서로 요약 작업이 진행됩니다. 요약 결과가 입력 텍스트에 있는 문장들의 조합으로 만들어지기 때문에 비교적 안정적인 결과를 보여줍니다.
Abstractive Text Summarization
입력 텍스트의 내용을 기반으로 모델이 새로운 요약문을 생성합니다. 우선 텍스트의 주요 내용을 분석하고, 요약을 위해 일종의 의역을 하는 방식으로 진행됩니다. 따라서 요약 결과에는 원문의 내용과 의미가 담겨있기는 하지만, 요약문 자체는 원문과 다른 단어와 구조로 구성되게 됩니다.
요약 결과 비교
최근 주목받고 있는 ChatGPT를 포함한 몇 가지 요약 API들을 사용하여 얻은 결과들을 비교해보았습니다.(ChatGPT, NaverCloud, Microsoft Azure, Extractive 방식과 Abstractive 방식의 혼합형인 그래프 기반 모델 ActionPower 등)
또한 입력 텍스트로는 일반적인 문서가 아닌 대화, 그 중에서도 메신저를 이용한 대화를 선정했습니다. 문법에 어긋나는 표현들도 잘 이해하면서, 짧은 텍스트에서 맥락을 추출할 수 있는지 확인해보고 싶었거든요. 결과적으로 이를 통해 Extractive 방식과 Abstractive 방식의 차이에 대해 뚜렷하게 확인할 수 있었습니다.
참고로 분석에 사용한 대화문은 AI Hub에 공개된 한국어 대화 요약 데이터셋을 사용했습니다. 서로 다른 두 개의 대화 내용을 이어 붙여서 사용했고, 실제 입력한 데이터는 아래와 같았습니다.
P1: 아 근데 케이크 업체들 봤는데
P1: 중앙동쪽 거기는 맛만있고
P1: 디자인은 그냥그런것같애
P2: 그러게; 나도 그렇게 생각함
P3: 고잔동 케이크업체는 배달도 해쥰대
P3: 안산 앙금 떡케이크
P1: 아 거기는 시간 언제까진데?
P1: 시간 안맞으면 또 못사는거자너
P3: 거기는 예매하면서 시간조율
P3: 해서 앵간하면 갖다준다네
P2: 여기가 괜찮을것같애
P1: 아 그르네 거기도 괜찮은듯
P4: 칫솔사야하는데
P4: 쓱으로 살까?
P2: 뭘 칫솔사는것까지 물어보시남ㅋㅋㅋ
P4: 아 그 왕칫솔
P4: 또 사려나 싶어서
P4: 나 칫솔 3개월에 하나씩 바꾸거든..
P3: 바꿀때됐으면 좋은거사서 바꿔
P3: 난아직
P3: 더써도댐
P4: 칫솔 수명은 3개월이야자기
그리고 각 모델 별 요약 결과는 다음과 같았습니다.
ChatGPT
P1, P2, P3, P4의 대화에서, P1은 케이크 업체를보았고 맛은 좋지만 디자인이 평범하다고 했다. P2는 P1과 같은 생각을 가지고 있다고 했고, P3은 고잔동의케이크 업체가 배달도 해준다고 했고, 안산에 있는 앙금 떡케이크를 추천했다. P4는 칫솔을 사야한다고했고, 바꿀때됐으면 좋은 것으로 바꾸고 싶다고 했다.
NaverCloud
나도 그렇게 생각함P3: 고잔동 케이크업체는배달도 해쥰대P3: 안산 앙금 떡케이크P1: 아 거기는 시간언제까진데?P1: 시간 안맞으면 또 못사는거자너P3: 거기는 예매하면서시간조율P3: 해서 앵간하면 갖다준다네P2: 여기가 괜찮을것같애P1: 아 그르네\nP2: 뭘 칫솔사는것까지물어보시남ㅋㅋㅋP4: 아 그 왕칫솔P4: 또 사려나 싶어서P4: 나 칫솔 3개월에 하나씩바꾸거든..P3: 바꿀때됐으면 좋은거사서 바꿔P3\n난아직P3: 더써도댐P4: 칫솔 수명은 3개월이야자기
MS Azure
P1: 아 근데 케이크 업체들 봤는데 P3: 고잔동 케이크업체는배달도 해쥰대 P1: 시간 안맞으면 또 못사는거자너 P4: 나 칫솔 3개월에 하나씩바꾸거든..
MS Azure(abstractive)
P1: 케이크 업체들 많이 redistricting하는데.
ActionPower(large)
디자인은 그냥 그런 것 같다고 하자 자기도 그렇게 생각한다고 한다.\n시간 언제까지인지 물어보고 있다.', '시간 안 맞으면 또 못사는 거 아니냐고 하자 거기는 예매하면서 시간 조절을 해야 한다고 한다.\n앵간하면 갖다준다고 해서여기가 괜찮을 것 같다.\n쓱으로 살까 하다가 쓱으로 살까 한다.','칫솔을 사려고 하는데 왕 칫솔을 사야 할지 고민하고 있다.\n바꿀 때가 되면 좋은 거사서 바꾸라고 한다.\n더 써도 댐이 된다고 한다.
ActionPower(medium)
케이크 업체들을 봤는데 중앙동 쪽은 맛만 있고 디자인은 그냥 그런 것 같다.\n예매하면서 시간 조절을 해야 해서 시간이 안 맞으면 못 산다.', '칫솔을사야 하는데 쓱으로 살까 한다.\n칫솔 수명은 3개월인데더 써도 된다고 한다.
ActionPower(small)
케이크 업체들을 봤는데 중앙동 쪽은 맛만 있고 디자인은 그냥 그런 것 같다고 한다.\n칫솔을 바꿀 때가 되면 좋은 거 사서 바꾸라고 한다.
우선 ChatGPT의 요약 결과는 비교적 문장이 자연스럽고, 맥락을 잘 파악하는 것 같습니다. 다만 원문에서는 ‘칫솔을 바꿀 때가 됐으면 좋은 것으로사’라는 말은 P3이 했는데, 요약 결과는 이 부분이 정확하지 않았습니다.
Naver Cloud나 MS Azure에서 지원하는 요약 모델은 extractive 방식이라서 그런지 대화 요약에서는 만족스런 결과를 보여주지 못했습니다.
MS Azure에서는 abstractive 방식을 preview로 제공하는데, 위와 같이 한국어 요약은 성능이 좋지 않습니다.
한편 ActionPower의 요약 모델은 요약 결과의 문장 수를 다르게 설정하여 확인해봤습니다. 요약 결과 문장 수를 large로 설정한 경우 입력 텍스트가 충분히 길지 않은 탓인지 “쓱으로 살까 하다가 쓱으로 살까 한다.”, “더 써도 댐이 된다고 한다.”와 같이 어색한 문장들이 만들어진 것을 확인할 수 있었습니다. Medium이나 Small에서는 그러한 문장들이 없어졌지만, 공통적으로 대화 주체들에 대한 구분이 어렵다는 한계가 있었습니다.
이상은 한국어 대화를 요약한 결과이기 때문에 영어 대화를 요약한 결과도 비교해 보았습니다. 영어 대화 데이터는 DailyDialog 데이터셋**에서 가져왔고, 실제 입력 데이터는 다음과 같습니다.
P1: Oh , my God! I've been cheated!
P2: What? What did you buy?
P1: It's a brick! I can't believe how stupid I was. Damn it!
P2: What is it? Why did you buy a brick?
P1: There was a guy on the sidewalk. He had three new boxes, Panasonic video camera boxes. He said he had to get rid of them quick.
P2: And?
P1: So he said he'd sell me one for twenty dollars. A four-hundred-dollar camera for twenty bucks.
P2: And it's a brick?
P1: Yes.
P2: Ican't believe how stupid you are. Why didn't you open the box?
P1: Iwanted to. But he said, no, the box is still in its plastic wrap from the store. If it's opened, other people won't believe it's new.
P2: So he had the boxes wrapped in plastic.
P1: Yes, it was the kind of perfect plastic wrap that comes with new products.Look, it even had a bar-code price sticker on it! It looked brand new.
P2: But why would a guy be selling new video cameras for twenty dollars?
P1: He said he had to get rid of them. They were stolen.
P2: Aha! Now I understand. You were trying to buy stolen goods on the sidewalk. So,what I think is, you deserve to get cheated!
P1: C'mon, don't blame me! I thought it was a new camera. We could use it. We were even thinking about buying a camera. I don't understand how he could have such a perfect-looking box.
P2: That's no problem. He just has a friend who works in a shop that can do plastic wrap. That's easy. And probably it's the same shop he got the boxes from. Maybe his friend works in an electronics store. They sell video cameras there.Probably they had a couple video camera boxes lying around. So they get the idea of wrapping bricks to sell to fools like you. Twenty dollars a brick.That's a good profit if they can sell enough bricks.
P1: You're right, Sarah. I was a fool. I can't believe it. How could I fall for such a trick?
간단하게 요약하자면 P1이 길거리에서 400달러짜리 비디오 카메라가 든 박스를 20달러에 파는 사람을 만나서 구매했지만, 집에 와서 박스를 풀어보니 안에는 벽돌이 들어있었다는 내용입니다.
그리고 이에 대한 요약 결과는 다음과 같습니다.
ChatGPT
Person 1 was scammed into buying what they thoughtwas a Panasonic video camera for $20 from a man on the sidewalk, but it turnedout to be a brick. Person 2 scolds Person 1 for not checking the contents ofthe box and believes the man had stolen the boxes from an electronics store,wrapped bricks in them, and was selling them for a profit. Person 1 realizesthey were foolish to fall for the trick.
MS Azure(abstractive)
P1 tells P2 he bought a brick from a guy on the sidewalk. P2 thinks he deserves to get cheated.
ActionPower
there was a guy on the sidewalk . he had three newboxes , panasonic video camera boxes . so he said he 'd sell him one for twentydollars . a four-hundred-dollar camera for twenty bucks . why did n't you openthe box ? but he said , no , the box is still in its plastic wrap from thestore . but why would a guy be selling new video cameras for twenty dollars ?he just has a friend who works in a shop that them do plastic wrap . so theyhad a couple video camera boxes from . that's a good profit if they them sellenough bricks .
ChatGPT의 요약 결과는 (한국어 요약 결과와 비슷하게) 전체적으로 자연스러워 보였지만, 일부 사실과 다른 부분도 있었습니다.
MS Azure의 abstractive 요약 결과는 한국어보다 훨씬 나은 결과를 보여주었으나, 맥락을 파악하기 힘들 정도로 내용 소실이 많았습니다.
한편 ActionPower의 모델은 (한국어 대화 요약을 했던 것과는 다른) GitHub에 공개된 소스(https://github.com/seongminp/graph-dialogue-summary)를 이용했습니다. 다만 공개된 버전은 초창기에 개발된것인지 한국어 대화 요약 때보다 부자연스러워 보였습니다.
추가적으로 ChatGPT에 요약 결과 분량에 제한을 두고 다시 요청을 해보았습니다. 동일한 대화 내용의 요약을 요청했고, 입력한 프롬프트는 “다음 대화를 한국어 세 줄로 요약해줘”와 “Summarize this conversation to three sentences” 였습니다.
ChatGPT
1. P1맛있고 디자인이 그냥인 케이크 업체를보았다. 2. P2,P1은 중앙동쪽 케이크 업체가 괜찮을 것같다. 3. P3은 고잔동 케이크 업체는 배달도 하고 시간 안정하면 갖다준다. P4는 칫솔 사야하는데 수명이 3개월이라 바꾸고 싶다.
ChatGPT
Person 1(P1) bought a product that was supposed tobe a video camera for $20 from a guy on the sidewalk. The product was in abrand new box and wrapped in plastic with a barcode price sticker. Person 2(P2) scolds P1 for trying to buy stolen goods and being foolish for notchecking the contents of the box.
이상과 같이 최대한 사용자의 요구 사항에 맞추어 준 것을 확인할 수 있습니다. 다만 마찬가지로 일부 사실의 왜곡이나 누락 역시 확인할 수 있었습니다.
지금까지 ChatGPT를 비롯한 몇 가지 모델을 사용한 요약 결과를 비교해보았습니다. 산문 형식이 아닌 일상적인 대화임에도 불구하고 그럴싸한 요약 결과를 제공하는 것을 확인할 수 있었죠. 다만 현재 가장 앞선 인공지능 중 하나로 손 꼽히는 ChatGPT도 아직은 완벽하지 않았고, 다른 모델들도 각자 일장일단을 갖고 있음을 확인할 수 있었습니다. 결과적으로 어떤 모델이 가장 우수하다고 단정 짓기는 힘들 것 같고, 사용하는 상황에 맞는 것을 선택해서 적용하는 접근법이 필요할 것 같습니다.
마무리하며
오늘날 텍스트 요약 기술은 방대한 정보를 효율적으로 파악하기 위해 필수적인 도구가 되었습니다. ChatGPT, NaverCloud, ActionPower 등의 모델을 비교한 결과, 대화와 같은 비구조적 콘텐츠에서 일부는 자연스러운 요약을 생성했지만, 맥락을 놓치는 경우도 많았습니다. 특히 한국어에서 자연스러운 문장 표현이나 정보 소실을 최소화하는 부분에서 각 모델의 차이가 두드러졌습니다.
이와 같은 요약 기술 중에서도 LETR WORKS는 고품질 요약 능력을 바탕으로 다양한 문서 유형에 적합한 요약을 제공합니다. LETR WORKS는 텍스트의 핵심을 놓치지 않으면서, 사용자가 필요로 하는 정보만을 간결하게 전달하는 데 뛰어나며, 특히 한국어 처리에 강점을 보입니다. 이를 통해 법률 문서부터 소셜 미디어 콘텐츠에 이르기까지 폭넓은 분야에 활용할 수 있어 전문가들이 신뢰하고 활용할 수 있는 요약 도구로 자리잡고 있습니다.
* 인용 https://www.aitimes.com/news/articleView.html?idxno=140791
** http://yanran.li/dailydialog
References
[1] https://ieeexplore.ieee.org/document/9623462
[2] https://github.com/uoneway/Text-Summarization-Repo