개발/etc

텍스트 요약, Text Rank 란?

Dane.Kim 2021. 11. 21.

텍스트 요약

텍스트 요약에는 크게 **추출적 요약(Extractive Summarization)**과 **추상적 요약(Abstractive Summarization)**으로 나눠진다고 한다.

추출적 요약은 말 그대로 기존의 글에서 중요도가 높거나 핵심이 되는 문장 그대로 추출해서 요약글을 만드는 것이다. 즉, 새로운 단어가 생겨나거나 새로운 문장이 생성되지 않는 요약 방법이다. 반면, 추상적 요약은 새로운 단어와 새로운 문장을 생성해서 요약을 하는 방법이다.

추출적 요약과 추상적 요약에 대해 생각해보자면, 예를들어 학생한테 독후감 과제를 냈는데 한명은 중요한 문장 그대로만 뽑아서 그대로 써왔고, 다른 학생은 자기 나름대로 새로운 문장을 써서 요약을 해왔다면 뭔가 후자 학생에게 좀더 좋은 점수를 주었을 것이다.

이렇듯 추상적 요약이 뭔가 더 사람이 요약하는 방식과 비슷하고, 퀄리티가 높은 텍스트요약 방법이지 않을까 생각한다. 다만 알고리즘이 복잡할 것이라고 예상된다.

 

TextRank

 

TextRank는 2004년에 발표된 알고리즘이다. PageRank를 기반으로 한 알고리즘으로 PageRank는 하이퍼링크를 가지는 웹 페이지가 얼마나 참조됬는지 랭크를 매기는 알고리즘이라고 보면 된다. TextRank는 이 페이지를 텍스트로 바꾼 알고리즘이라고 생각하면 된다. 즉 TextRank는 텍스트 요약에서 추출적 요약에 좋은 기능을 낼 수 있는 알고리즘이라고 생각할 수 있겠다.

이러한 TextRank를 파이썬으로 간단히 사용할 수 있다.

from gensim.summarization.summarizer import summarize

위의 코드를 이용하면 바로 사용이 가능해지며, text = ''' text ''' 와 print(summarize(text))를 하게 되면 바로 결과값이 나오게 된다. 몇 가지 기능을 추가로 설명하자면

  • summarzie(text) : 기본값에 따라 요약
  • summarize(text, ratio=0.05) : ratio 값은 0~1 사이의 실수로, 전체 문장 수에 대한 요약할 문장 수의 비를 입력하면 그 만큼 요약을 해준다. 예를 들어 10문장 글에서 2문장만 요약하고 싶다면 0.2를 입력해준다!
  • summarize(text, word_count=300) : 요약 텍스트를 구성할 단어 수 지정. word_count를 사용하면 ratio설정이 무시된다.
  • summarize(text, split=True) : True면 문장이 list로 반환되고, False(기본값)으로 설정할 시 문자열이 합쳐져 출력된다.

댓글