[Python] TextRank 구현 코드

Posted by 적분 ∫2tdt=t²+c
2017.04.20 17:13 프로그래밍

앞선글(TextRank 기법을 이용한 핵심 어구 추출 및 텍스트 요약) 에서 텍스트 랭크 알고리즘을 소개하면서 직접 실험해보고자 파이썬 코드를 짰었는데요, 정리해서 공유해드립니다. 페이지랭크 계산에 networkx 패키지를 사용하므로, networkx가 설치되어있는지 확인부탁드립니다.


* 의존 패키지: networkx





사용법은 어렵지 않습니다. 다음과 같이 쓰면 됩니다.

TextRank 생성자는 인수로 window, coef, threshold를 받습니다.

* window : 문맥으로 사용할 단어의 개수. 기본값 5로 주면 특정 단어의 좌우 5개씩, 총 10개 단어를 문맥으로 사용합니다.

* coef : 동시출현 빈도를 weight에 반영하는 비율입니다. 기본값은 1.0로, 동시출현 빈도를 weight에 전부 반영합니다. 0.0일 경우 빈도를 반영하지 않고 모든 간선의 weight을 1로 동일하게 간주합니다.

* threshold: 문서 요약시 관련있는 문장으로 여길 최소 유사도값. 기본값은 0.005이고, 이 값보다 작은 유사도를 가지는 문장쌍은 관련없는문장으로 처리합니다.


문서요약시에는 loadSents로 문장을 읽어들이고, summarize로 결과를 얻습니다.




키워드 추출시에는 load로 문장을 읽어들이고, extract로 키워드를 추출합니다.




저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
이 댓글을 비밀 댓글로
  1. 감사합니다!
  2. 좋은 글 감사합니다 !! 정말 큰 도움이 되었습니다 !! ㅎㅎ
    코드를 실행해보고싶은데

    Traceback (most recent call last):
    File "C:/Users/user1/PycharmProjects/untitled12/tr.py", line 186, in <module>
    tr.loadSents(RawSentenceReader('test2.txt'), lambda sent: filter(lambda x:x not in stopword and x[1] in ('NNG', 'NNP', 'VV', 'VA'), tagger.pos(sent)))
    File "C:/Users/user1/PycharmProjects/untitled12/tr.py", line 107, in loadSents
    for sent in filter(None, sentenceIter):
    File "C:/Users/user1/PycharmProjects/untitled12/tr.py", line 26, in __iter__
    for line in open(self.filepath, encoding='utf-8'):
    File "C:\Program Files\Anaconda3\lib\codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte

    이러한 에러가 발생하는데 .. 해결방법을 모르겠어서 도움 얻고자 이렇게 댓글 남깁니다 .....!! ㅠㅠ
    답변 주시면 감사하겠습니다 !!
    • 인코딩 에러네요.
      입력파일이 utf-8로 인코딩이 되었는지 확인해보시길 바랍니다!

티스토리 툴바