2019년 1월 23일 수요일

python : 한글 문서 자동 요약 - lexrank

0. 패키지 설치

pip install lexrank 

 0.1 한글 인코딩 이슈 해결
    #python 2.x 한글 이코딩 이슈 해결을 위해 아래 구문 추가

#-*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

1. LexRank.py

    num_line 에 따라 결과 라인 수가 결정 된다.
    다만, 0 ~ 1 사이의 소수점으로 입력하면 비율로 라인수가 결정 됨.

#-*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

##################################################
from lexrankr import LexRank

string_all = '''
대한민국은 민주공화국이다.
제1조 대한민국의 주권은 국민에게 있고, 모든 권력은 국민으로부터 나온다.
제2조 ① 대한민국의 국민이 되는 요건은 법률로 정한다.
제2조 ② 국가는 법률이 정하는 바에 의하여 재외국민을 보호할 의무를 진다.
제3조 대한민국의 영토는 한반도와 그 부속도서로 한다.
제4조 대한민국은 통일을 지향하며, 자유민주적 기본질서에 입각한 평화적 통일 정책을 수립하고 이를 추진한다.
제5조 ① 대한민국은 국제평화의 유지에 노력하고 침략적 전쟁을 부인한다.
제5조 ② 국군은 국가의 안전보장과 국토방위의 신성한 의무를 수행함을 사명으로 하며, 그 정치적 중립성은 준수된다.
제6조 ① 헌법에 의하여 체결·공포된 조약과 일반적으로 승인된 국제법규는 국내법과 같은 효력을 가진다.
제6조 ② 외국인은 국제법과 조약이 정하는 바에 의하여 그 지위가 보장된다.
제7조 ① 공무원은 국민전체에 대한 봉사자이며, 국민에 대하여 책임을 진다.
제7조 ② 공무원의 신분과 정치적 중립성은 법률이 정하는 바에 의하여 보장된다.
제8조 ① 정당의 설립은 자유이며, 복수정당제는 보장된다.
제8조 ② 정당은 그 목적·조직과 활동이 민주적이어야 하며, 국민의 정치적 의사형성에 참여하는데 필요한 조직을 가져야 한다.
제8조 ③ 정당은 법률이 정하는 바에 의하여 국가의 보호를 받으며, 국가는 법률이 정하는 바에 의하여 정당운영에 필요한 자금을 보조할 수 있다.
제8조 ④ 정당의 목적이나 활동이 민주적 기본질서에 위배될 때에는 정부는 헌법재판소에 그 해산을 제소할 수 있고, 정당은 헌법재판소의 심판에 의하여 해산된다.
제9조 국가는 전통문화의 계승·발전과 민족문화의 창달에 노력하여야 한다.
'''
 
lexrank = LexRank()  # can init with various settings
lexrank.summarize(string_all)
num_line = 0.3
summaries = lexrank.probe(num_line)  # `num_summaries` can be `None` (using auto-detected topics)
for summary in summaries:
    print summary

2. 결과

제2조 ① 대한민국의 국민이 되는 요건은 법률로 정한다
제3조 대한민국의 영토는 한반도와 그 부속도서로 한다
제5조 ① 대한민국은 국제평화의 유지에 노력하고 침략적 전쟁을 부인한다
제7조 ② 공무원의 신분과 정치적 중립성은 법률이 정하는 바에 의하여 보장된다
제8조 ③ 정당은 법률이 정하는 바에 의하여 국가의 보호를 받으며, 국가는 법률이 정하는 바에 의하여 정당운영에 필요한 자금을 보조할 수 있다


3.ref
- https://github.com/theeluwin/lexrankr

댓글 없음:

댓글 쓰기

추천 게시물

python: SVD(Singular Value Decomposition)로 간단한 추천시스템 만들기( feat. surprise )

svd_example In [15]: # !pip install surprise In [21]: from...