[머신러닝] 파이썬 머신러닝 #7 - 문서 요약하기(TextRank Summariser)
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를 업그레이드하였다.
스팀잇 글 가져오기
원사마님이 작성한 글 "[ 하생시 ] 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)
문서 요약하기
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))
그다음은 출력할 단어 수를 50개로 설정하고 요약해본다.
print(summarize(news.text, word_count=50))
마지막으로 문장 비율을 설정하고 요약해보았다.
print(summarize(news.text, ratio=0.1))
결론은, 원사마님이 작성한 글의 핵심 문장은 "요즘은 개발은 안하고 맨날 제안서만 쓴다."입니다.
여기까지 읽어주셔서 감사합니다.
참고 블로그
- "Textrank for summarizing text" by Jan Wijffels
- "TextRank를 이용한 문서요약" by Excelsior-JH
- "‘쉽게 설명한’ 구글의 페이지 랭크 알고리즘" by 조성문
이전글
- 파이썬 머신러닝 #1 - 스팀잇 형태소 분석하기
- 파이썬 머신러닝 #2 - 스팀잇 형태소 분석해서 단어구름 만들기
- 파이썬 머신러닝 #3 - 스팀잇 아이디로 성별 예측하기
- 파이썬 머신러닝 #4 - 스팀잇 글 감정 분류하기
- 파이썬 머신러닝 #5 - 유사한 게시물 찾기
- 파이썬 머신러닝 #6 - 스팀잇에서 유사한 게시물 찾기
Sponsored ( Powered by dclick )
[데이빗 이야기 #2] 만든 사람은 있지만, 손대는 사람은 없는 완전 자동화된 암호화폐 거래소 데이빗(DAYBIT) 사용후기
안녕하세요, 디온(@donekim)입니다. 지난 번 포스팅에 이어서 오늘은 데이빗 거래소의 사...
이 글은 스팀 기반 광고 플랫폼
dclick 에 의해 작성 되었습니다.
너무 신기합니다! 좋은 정보 감사합니다!
저도 요약이 잘되는걸 보고 신기했습니다.
이걸 이용해서 재미난걸 만들어 볼수 있을것 같습니다.
응원 감사합니다.
텍스트 처리 모듈이 참 많이 나오죵ㅎㅎ
한국어 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님이 더 멋있습니다.ㅎ 그리고 코딩은 마음 놓고 있다가 하고 싶을 때 시작하세요~😀
파이썬으로 정말 다양한걸 할 수 있네요.
능력자십니다~
(보클 꾹~~)
머신러닝을 덕분에 파이썬의 매력에 푹 빠졌습니다. 파이썬을 공부할 생각은 별로 없었는데 파이썬에 재미난 모듈이 많아서 하나씩 사용해 보려고 합니다.ㅋ