Python코드 몇 줄로 삶이 편해지는 법 — 토픽 모델로 뉴스 요약 봇 만들기

휴먼스케이프

안녕하세요 휴먼스케이프 테드입니다.

오늘은 python 의 다양한 라이브러리를 활용하여 뉴스 기사를 요약해 주고 슬랙으로 보내주는 기능을 만들어 보고자 합니다.

뉴스 요약은 국내 주요 포털 사이트에서 제공하고 있는 기능인데요,

이걸 가져올 수도 있겠지만, 다른 뉴스서비스에서는 제공하지 않는 경우도 많습니다.

Too much English..

그리고 뉴스 기사를 다 읽기에는 양이 너무 많기 때문에 요약하는게 필요하죠. 간단한 코드를 구현하기 위해 아래와 같은 과정으로 나누어 보겠습니다.

기사 가져오기

내용 요약

기사 보내주기

응용해보기 (여러개 가져오기)

1. 기사 가져오기

웹페이지를 읽어서 아티클을 스크래핑 해주는 라이브러리입니다. 가끔 잘 안되는 케이스가 있긴 하지만 대부분의 스크랩은 잘 되는 편입니다.

Newspaper3k: Article scraping & curation - newspaper 0.0.2 documentation Inspired by requests for its simplicity and powered by lxml for its speed: 'Newspaper is an amazing python library for…newspaper.readthedocs.io

위 라이브러리를 쓰면 단 6줄 만으로 기사 제목과 본문을 추출할 수 있습니다.

기사 추출 하기

결과는 아래와 같습니다.

휴먼스케이프, 희귀질환자 데이터 플랫폼 구축 MOU 기사 (출처 : https://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&oid=421&aid=0004031979 )

웹페이지가 깔끔할수록 군더더기 없이 잘 되는걸 볼 수 있습니다.

Scaling to 100k Users Article (출처 : https://alexpareto.com/scalability/systems/2020/02/03/scaling-100k.html )

2. 내용 요약

newspaper3k의 summary를 쓸수도 있지만, 한글은 잘 안되기 때문에 gensim 사용하려고 합니다.

뉴스 기사를 요약해주는 토픽 모델링 라이브러리로 gensim 이 있습니다.

RaRe-Technologies/gensim Gensim is a Python library for topic modelling, document indexing and similarity retrieval with large corpora. Target…github.com

gensim은 기계학습을 통해 간단하게 토픽 모델링을 할 수 있는 다양한 도구를 제공합니다. (nlp를 할 때 많이 쓸 수 있습니다. word2vec 이나 t-SNE라던가.. 등등)

아래 코드처럼 몇줄 쓰지 않고도 우리가 원하는 걸 할 수 있어요!

기사 요약하기

아래처럼 한글, 영어 모두 잘 요약할 수 있습니다.

휴먼스케이프, 희귀질환자 데이터 플랫폼 구축 MOU 기사 요약 (출처 : https://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&oid=421&aid=0004031979 )

Scaling to 100k Users Article 요약 (출처 : https://alexpareto.com/scalability/systems/2020/02/03/scaling-100k.html )

3. 기사 보내주기

기사를 단순히 보기만 하면 안되죠. 콘솔창 보다 친절한 slack이나 텔레그램을 활용해 봅시다. (여기서는 slack만 해볼거에요)

슬랙을 비롯하여 webhook 은 정말정말 간단하게 메세지를 받을 수 있게 해줍니다.

슬랙에서 제공하는 기본 webhook url을 사용하여 python 기본 http request 로 구현을 해도 몇줄 되지 않습니다 :)

참 쉽죠?

이렇게 슬랙 메세지로 오게 됩니다 :)

4. 응용해보기 (여러개 가져오기)

3번까지만 하게 되면 매번 url을 입력해야하는 번거로움이 있기 때문에, 링크가 여러개 있는 hacker news 사이트를 통해 뉴스를 가져오도록 하겠습니다.

국내 포털은 뉴스가 잘 정리가 되어있지만, hacker news 사이트는 여러 사이트의 링크들만 제공하고 있기 때문에 우리가 만든걸 적용하기에 매우 좋습니다 : )

beautifulsoup(bs4) 를 사용하여 크롤링하는것은 구글링만으로도 친절하게 설명해 주시는게 많기 때문에 바로 구현하겠습니다.

해커뉴스의 기사들을 간단히 링크만 가져오도록 해보겠습니다.

어라 돌려보니까.. 간혹 pdf 파일도 있어서 list comprehension으로 filter 했습니다.

결과는 아래 처럼 나옵니다.

위에 작성한 코드들을 다 합쳐보면 아래처럼 구현할수가 있습니다 :)

결과는 어떨까요? 위 코드를 실행해보면 각기 다른사이트 임에도 어느정도 결과가 나오는 것을 볼 수 있습니다

그 밖에 할 수 있는 것

그 밖에 할 수 있는 것들은 매우많은데, 다음과 같은 방법들로 응용 할 수 있습니다.

아침 8시에 슬랙 보내주기

챗봇으로 만들기

게시물 요약 기능 만들기

해보다가 안된다면 댓글 부탁드리겠습니다.

다음에 만나요~

Reference - https://towardsdatascience.com/scrape-and-summarize-news-articles-in-5-lines-of-python-code-175f0e5c7dfc - https://github.com/RaRe-Technologies/gensim - https://newspaper.readthedocs.io/ - https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Get to know us better! Join our official channels below.

Telegram(EN) : t.me/Humanscape KakaoTalk(KR) : open.kakao.com/o/gqbUQEM Website : humanscape.io Medium : medium.com/humanscape-ico Facebook : www.facebook.com/humanscape Twitter : twitter.com/Humanscape_io Reddit : https://www.reddit.com/r/Humanscape_official Bitcointalk announcement : https://bit.ly/2rVsP4T Email : support@humanscape.io

기업문화 엿볼 때, 더팀스

로그인

/