상세 컨텐츠

본문 제목

파이썬 뉴스 기사 텍스트 글 요약하기

코딩

by 땡감 2023. 1. 26. 15:07

본문

반응형

이번 포스팅에서는 파이썬으로 뉴스나 기사를 요약하는 방법에 대해 알아보자.

머신런닝을 통해 요약하는 방법, 파이썬 모듈을 통해 요약하는 방법등

방법은 다양하지만 gensim 모듈을 통해 가장 간단하게 요약해보고자 한다.

 

가장 먼저 gensim과 newpaper 모듈을 설치해야 한다.

하지만 pip를 통해 설치되는 gensim은 글 작성 기준 4.2 버젼으로

우리가 사용해야할 함수인 summarization이 삭제되어 있는 버젼이다.

따라서 우리는 summarization 함수가 살아있는 3.8.3 버젼을 설치해야 한다.

pip를 통해 특정 버젼의 모듈을 설치할 때 pip install gensim==3.8.3 처럼 버젼을 명시하면 되지만

작성자도 그렇고 대부분의 유저가 오류가 발생한듯 했다.

오류가 발생한다면 아래링크를 타고 들어가 수동으로 설치해야 한다.

newpaper 모듈의 경우 버젼에 상관없이 정상적으로 설치가 된다.

 

 

Archived: Python Extension Packages for Windows - Christoph Gohlke

Archived: Python Extension Packages for Windows - Christoph Gohlke by Christoph Gohlke. Updated on 26 June 2022 at 07:27 UTC. This page provides 32 and 64-bit Windows binaries of many scientific open-source extension packages for the official CPython

www.lfd.uci.edu

gensim 모듈을 pip install gensim==3.8.3 으로 오류없이 설치했다면 이 과정은 생략해도 된다.

오류가 발생했다면 자신의 환경에 맞는 gensim 모듈을 다운받아 수동으로 설치해야 한다.

먼저 위의 링크로 들어가 자신의 파이썬 버젼과 설치하고자 하는 gensim 모듈의 버젼,

그리고 PC의 비트를 확인해야 한다.

위의 링크로 들어가면 gensim뿐만 아니라 다른 모듈의 아카이브들도 존재하므로

gensim으로 찾기를 통해 gensim 항목으로 가는것을 추천한다.

 

작성자의 경우 gensim 3.8.3 버젼을 파이썬 3.9버젼에 설치해야하며

작성자의 PC가 64비트이므로 위의 빨간박스의 파일을 다운받았다.

gensim 바로 다음의 숫자는 gensim 모듈의 버젼이며

cp다음의 숫자는 파이썬의 버젼이다.

비트는 amd64가 붙은 파일이 64비트 파일이다.

 

작성자의 경우 포스팅전 미리 설치가 되어 있는 상태라

위같은 메시지가 출력되지만 최초설치를 한다면 좀 더 긴 로그들을 확인할 수 있다.

이제 파이썬으로 뉴스를 요약할 준비는 모두 끝마쳤다.

python -m pip install gensim-3.8.3-cp39-cp39-win_amd64.whl (자신이 다운받은 파일명)
pip install gensim==3.8.3

 

 

gensim 모듈과 newpaer 모듈을 import 하고 요약하고자 하는 뉴스의 url을 지정한 후

summarize 함수를 호출하면 끝이다.

summarize 함수로 전달되는 인자값은 총 4개로 아래와 같다.

  • text (String, 필수) : 요약하고자하는 텍스트 원문
  • ratio (Float, 선택적) : 텍스트 원문에 대한 요약 비율
  • word_count (Int, 선택적) : 요약문에 포함될 단어의 수. ratio 인자와 같이 사용시 word_count 인자 우선함
  • spilt (Bool, 선택적) : True로 전달하면 list 형태로 반환, False로 전달하면 String으로 반환
from gensim.summarization.summarizer import summarize
from newspaper import Article


url ='https://www.ytn.co.kr/_ln/0108_202301261358498639'
news = Article(url)
news.download()
news.parse()
text = summarize(news.text, ratio=0.2)
print(text)

 

 

작성자가 요약하고자 하는 기사의 원문 중 일부분이다.

이 원문 텍스트가 어떻게 요약이 될까 프로그램을 수행해보자.

 

위가 ratio 인자를 0.2로 전달했을 경우

아래가 ration 인자를 0.1로 전달했을 경우의 결과값이다.

단 몇줄의 코드치고는 상당히 만족스러운 결과이다.

 

다만 너무나 간단한 사용법으로 요약이 가능한 모듈이라서 그런지

모든 url에 대해서 요약이 가능한것은 아니다.

위처럼 요약 결과를 출력하지 못하는 경우도 발생한다.

머신런닝을 통해 자연어를 처리하고 형태소를 분리하고 복잡한 과정을 거치면

좀 더 정교한 요약이 가능하겠지만 작성자는 이정도로 만족하고자 한다.

반응형

관련글 더보기

댓글 영역