오늘부터 파이썬으로 사업 자동화 시키기 프로젝트 첫번째 시간으로 매일 하고 있는 뉴스 기사 요약하는 것을 파이썬을 이용해 자동화 시켜보려고 합니다.
막 구글에 "파이썬 기사 요약", "파이썬 3줄 요약", "파이썬 네이버 기사 요약"과 같이 검색을 해 나오는 내용들이 모두 잘못되었다고 먼저 이야기 하겠습니다.
"대체 왜 잘못되었다고 이야기하는거에요?"
현재 gensim에서 Summarize 라이브러리가 없기 떄문에 대다수의 요약하는 코드들은 다 먹통입니다...
저도 이걸 찾는다고 깃허브부터 시작해서 gensim 공홈, summarize를 어디서 하는지 Textrank와 같은 사이트들을 뒤져가면서 찾은 결과라서 그렇습니다 (거의 2시간동안 붙잡고 찾았습니다.)
막상 코드들은 엄청 단순하고 간단한데 그걸 못찾아서 제가 너무 당황한 나머지 멘탈이 갈렸지만 본론으로 넘어가도록 하겠습니다.
기사 요약? 어떻게 해주는건데?
파이썬 라이브러리 중 Summarize [요약]하는 라이브러리가 있어 본문 내용 속 중요하다고 여겨지는 문장들로만 보여주는 것으로 이렇게 요약을 해줄 수 있다.
재단법인 게임인재단(이사장 남궁 훈)이 주최하고 한국게임전문미디어협회(회장 이택수)가 주관하며 게임물관리위원회(위원장 이재홍)가 후원하는 ‘2021 겜춘문예’가 접수를 시작한다.5회차를 맞은 ‘겜춘문예’는 주어진 주제에 대해 게임인들이 재치가 녹아 있는 창작물을 만들어 제출하는 공모 형식의 대회로, 올해의 주제는 ‘게임 속으로 들어간 역사, 역사 속으로 들어간 게임’이며 출품 형식은 이미지다. 우리나라 또는 우리 민족의 역사 중에서 게임과 상호 투영이 가능한 것이라면 무엇이든 소재로 삼을 수 있고 이를 이모티콘, 만화, 포스터, 드로잉, 팝아트 등 이미지 형태로 자유롭게 나타내면 된다.예를 들어 게임 속 캐릭터가 실제 역사 속에 존재했다면 어떤 모습일지를 그린 인물화, 역사 속 실제 물건이 게임에서는 어떻게 표현될지를 그린 아이템 도감 등 게임인의 상상력이 발휘된 이미지 창작물이면 모두 접수할 수 있다.이와 관련해 게임인재단 측은, “올해의 주제는 매력적인 우리 역사와 인물의 게임성 탐색 과정에서 선정하게 되었다”면서, “재단 내부적으로는 이번 대회를 겜춘문예의 방향타를 더욱더 게임 쪽으로 돌리기 위한 이정표로 삼고자 한다”고 밝혔다. 또한 “대외적으로는 우리 역사가 잘못 표현되고 소비되는 근래의 미디어 현실 속에서 올바른 접근 방식에 대해 게임인들이 먼저 고민하는 계기가 되었으면 한다”고 덧붙였다.이번 공모전은 6월 1일부터 6월 30일까지 접수를 하며, 게임인이라면 누구나 참여할 수 있다. 참여 방법 역시 간단하다. 이메일(gameinfoundation@gmail.com)로 참가신청서와 함께 창작물을 제출하기만 하면 된다. 이후 한국게임전문미디어협회 기자단의 심사 및 민족문제연구소의 감수를 거쳐 최종 수상작을 선정하며, 시상식은 7월 중 열릴 예정이다. 대상 1인에게는 500만 원, 최우수상 2인에게는 각 150만 원, 우수상 4인에게는 각 50만 원의 장학금이 수여 된다.상세한 내용은 게임인재단 홈페이지 또는 페이스북을 참조하면 된다.
기사 요약 라이브러리 사용
우리나라 또는 우리 민족의 역사 중에서 게임과 상호 투영이 가능한 것이라면 무엇이든 소재로 삼을 수 있고 이를 이모티콘, 만화, 포스터, 드로잉, 팝아트 등 이미지 형태로 자유롭게 나타내면 된다.예를 들어 게임 속 캐릭터가 실제 역사 속에 존재했다면 어떤 모습일지를 그린 인물화, 역사 속 실제 물건이 게임에서는 어떻게 표현될지를 그린 아이템 도감 등 게임인의 상상력이 발휘된 이미지 창작물이면 모두 접수할 수 있다.이와 관련해 게임인재단 측은, “올해의 주제는 매력적인 우리 역사와 인물의 게임성 탐색 과정에서 선정하게 되었다”면서, “재단 내부적으로는 이번 대회를 겜춘문예의 방향타를 더욱더 게임 쪽으로 돌리기 위한 이정표로 삼고자 한다”고 밝혔다.
한글을 정식으로 지원하는 것이 아니지만 얼추 기사의 제목과 알맞은 내용들이 이렇게 요약되어 출력이된다.
현재까지 사용된 라이브러리는 feedparser, newspaper, summa 총 3가지로
feedparser는 rss 피드를 가진 사이트들의 데이터를 긇어오는데 사용되고
newspaper는 기사 내용들을 데이터화해 제목, 본문으로 나눠 주는 역할을 하고
summa는 데이터화 된 기사 본문을 요약해 출력하는 역할을 맡는다.
현재까지 진행된 코드는 이렇다.
gensim을 install하지말고 summa를 install해서 summarize를 이용하기 바란다.
import feedparser
from newspaper import Article
from summa.summarizer import summarize
# rss 링크 저장
rss_url = "http://feeds.feedburner.com/inven"
# rss 피드에 저장된 데이터를 rss_feed에 저장한다.
rss_feed = feedparser.parse(rss_url)
# rss feed에는 총 25개의 뉴스 기사만 보여짐을 확인 할 수 있다.
print(len(rss_feed.entries))
#p속에 rss_feed의 리스트크기(25)만큼 반복한다.
for p in rss_feed.entries:
# rss_feed 속 뉴스 링크 분류
url = p.link
#article에 링크 속 뉴스 본문 가져와 저장한다.
article = Article(url, language = 'ko')
article.download()
article.parse()
# 기사 본문 내용 요약
NewsFeed = article.text
NewsSum = summarize(NewsFeed)
#기사 제목
print(article.title + '\n')
#기사 본문 원본
print(NewsFeed + '\n')
#기사 본문 요약
print(NewsSum + '\n')
'Dev DBAN > 개발 이야기' 카테고리의 다른 글
파이썬으로 기사 요약하기 3편 - 메일 전송 (0) | 2021.06.04 |
---|---|
파이썬으로 기사 요약하기 2편 - 요약 파일 저장 (0) | 2021.06.02 |
[Python]파이썬 예제 프로젝트 계산기_3 (0) | 2019.12.26 |
[Python]파이썬 예제 프로젝트 계산기_2 (0) | 2019.12.25 |
[Python] 파이썬 예제 프로젝트 계산기_1 (0) | 2019.12.21 |
댓글