[머신러닝] 파이썬 머신러닝 #7 - 문서 요약하기(TextRank Summariser)

in dclick •  6 years ago  (edited)


Summary by Nick Youngson CC BY-SA 3.0 ImageCreator


안녕하세요. @anpigon입니다.

파이썬을 이용하여 문서를 쉽게 요약할 수 있는 기능을 소개합니다. 이 글은 summarization.summarizer – TextRank Summariser을 참고하여 작성한 글입니다.




gensim, newspaper 모듈 설치


문서를 요약하는데 사용할 gensim와 newspaper 모듈을 설치한다. newspaper 모듈은 파이썬 버전에 따라 설치방법이 다르다. 파이썬2에서는 pip install newspaper로 설치 한다. 그리고 파이썬3에서는 pip install newspaper3k로 설치한다. 나는 파이썬3를 사용하고 있으므로 아래와 같이 설치하였다.

$ pip install gensim newspaper3k


추가로 모듈를 설치하는데 pip 업그레이드가 필요하다는 메시지가 나와서 아래와 같이 pip를 업그레이드하였다.

1




스팀잇 글 가져오기


원사마님이 작성한 글 "[ 하생시 ] 18.10.23 하루를 생각하는 시간"으로 요약 테스트해보았다. 참고로 내가 작성한 글은 내용 대부분이 개발 코드라서 문서 요약이 되질 않았기 때문이다.

아래와 같이 URL에서 글 본문 내용을 가져온다. newspaper 모듈을 사용하면 블로그 또는 기사에서 제목과 본문 내용을 쉽게 가져올 수 있다.

from gensim.summarization.summarizer import summarize
from newspaper import Article

url = ' https://steemit.com/dclick/@wonsama/-181023--1540308198584'
news = Article(url, language='ko')
news.download()
news.parse()
print(news.text)

1




문서 요약하기


summarize에 입력 가능한 매개 변수는 다음과 같다.

  • text (str) – 요약할 테스트.
  • ratio (float, optional) – 요약에 대해 선택할 원본 텍스트의 문장 수 비율을 결정하는 0~1 사이 숫자.
  • word_count (int or None, optional) – 출력에 포함할 단어 수. 두 파라미터가 모두 제공되는 경우 ratio는 무시된다.
  • split (bool, optional) – True면 문장 list가 반환된다. False는 조인(join)된 문자열이 반환된다.


우선 추가 옵션 없이 글 내용을 요약해보자.

print(summarize(news.text))

1


그다음은 출력할 단어 수를 50개로 설정하고 요약해본다.

print(summarize(news.text, word_count=50))

2


마지막으로 문장 비율을 설정하고 요약해보았다.

print(summarize(news.text, ratio=0.1))

3


결론은, 원사마님이 작성한 글의 핵심 문장은 "요즘은 개발은 안하고 맨날 제안서만 쓴다."입니다.


여기까지 읽어주셔서 감사합니다.



참고 블로그


이전글


Sponsored ( Powered by dclick )
[데이빗 이야기 #2] 만든 사람은 있지만, 손대는 사람은 없는 완전 자동화된 암호화폐 거래소 데이빗(DAYBIT) 사용후기

안녕하세요, 디온(@donekim)입니다. 지난 번 포스팅에 이어서 오늘은 데이빗 거래소의 사...

logo

이 글은 스팀 기반 광고 플랫폼
dclick 에 의해 작성 되었습니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

너무 신기합니다! 좋은 정보 감사합니다!

저도 요약이 잘되는걸 보고 신기했습니다.
이걸 이용해서 재미난걸 만들어 볼수 있을것 같습니다.
응원 감사합니다.

텍스트 처리 모듈이 참 많이 나오죵ㅎㅎ

한국어 NPL 연구하시는 분들 덕분에 파이썬으로 한글 테스트 처리가 정말 쉬워졌습니다. tanky님도 좋은 모듈을 알고 있으면 소개 좀 해주세요.ㅋ

라즈베리파이에서 파이썬 깔고 간단히 테스트 해본 기억이 나네요.

벌써 이 모듈을 사용해보셨군요.
저는 TextRank가지고 고생하다가 이걸 발견하고 바로 해결했어요.ㅋ
파이썬에는 좋은 모듈이 많은 것 같습니다.

재밌는 기능이네요 ㅎ

이 모듈을 이용하면 자동 요약 서비스를 개발해 볼 수 있을 것 같습니다.ㅋ

Congratulations @thrufore ! you got 1.150 SBD 1st prize of holdem round 334.see more info at https://steemit.com/@steemit.holdem

JOIN HOLDEM ( needs 0.100 SBD )

개발은 안하고 제안서만쓴다..ㅋㅋ
전 일은 안하고 스팀잇만한다 ㅋㅋㅋ

뽀돌님은 스팀잇 직원 아닌가요?ㅋ

보클하고 가요~~
좋은하루 하세여~~

보클~ 보클~ 감사합니다.

유용하면서 간단하네요?!! 나중에 파이쏜 공부할때 살펴보겠습니다^^

제가 이렇게 정리한 글들이 나중에 파이썬 공부할때 도움이 되었으면 좋겠습니다.^^

잘 봤습니다.

^^ 보클하고 갑니다~

보클!, 보팅 앤 디클릭~ 감사합니다.

멋있네 멋있어...ㅜㅜ 언제 시작하나....ㅜㅜ

칭찬 감사합니다. 저는 뉴비 정착에 힘쓰시는 jisoooh님이 더 멋있습니다.ㅎ 그리고 코딩은 마음 놓고 있다가 하고 싶을 때 시작하세요~😀

파이썬으로 정말 다양한걸 할 수 있네요.
능력자십니다~
(보클 꾹~~)

머신러닝을 덕분에 파이썬의 매력에 푹 빠졌습니다. 파이썬을 공부할 생각은 별로 없었는데 파이썬에 재미난 모듈이 많아서 하나씩 사용해 보려고 합니다.ㅋ

ㅋㅋㅋㅋㅋ알찬요약

정말 알차게 요약되네요.ㅋㅋ

blockchainstudio님이 anpigon님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
anpigon님의 스캠 봇 계정이 DCLICK 광고를 사용할 수 있을까?

... 쓸때 제가 해본봐로는 steemd가면 볼 수 있는 id number로 유저정보를 가져오는 방법이 없습니다. anpigon 혹시 js library에는 있나요?
제 생각엔 일부로 안되게 해둔것 같아요. 아니면 너무 그 api호출을...

제안서 써서 시간이 없 ㅜㅜ

코딩만 잘하면 되는 개발자가 제안서까지 잘 써 하는 국내 기업들... ㅠㅠ

Hi @anpigon!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 2.468 which ranks you at #17175 across all Steem accounts.
Your rank has improved 39 places in the last three days (old rank 17214).

In our last Algorithmic Curation Round, consisting of 244 contributions, your post is ranked at #168.

Evaluation of your UA score:
  • Only a few people are following you, try to convince more people with good work.
  • The readers like your work!
  • You have already shown user engagement, try to improve it further.

Feel free to join our @steem-ua Discord server