본문 바로가기

프로그래밍/Python

[Python|LexRankr] 한국어 문서 요약

반응형

lexrankr 이라는 문서요약 패키지를 테스트 해 보았음. ( https://github.com/theeluwin/lexrankr )

실행해 본 코드는 패키지 홈페이지의 예제코드이므로 별다를 것이 없다.

과거에는 설치시에 konlpy 를 설치해야 하고, scipy 와 numpy 설치에도 까다로운 부분이 있었기 때문에 윈도우에서는 약간 번거로운 점이 있었다.

하지만, 2019년 현재는 konlpy 설치는 konlpy 설치 가이드를 잘 따라하면 큰 무리가 없다. 자바sdk, 자바 홈 변수 설정 정도만 잘 신경쓰면 되고, jpype1 을 수동으로 설치할 필요가 없음. jpypye1 패키지도 pypi 에 윈도우용 바이너리가 잘 올라가 있음.

lexrankr 의 설치시 jpype1-py3 충돌문제 (2019년 12월 수정)

lexrankr 는

pip install lexrankr

을 실행하면, 잘 설치가 될 것처럼 보인다. 하지만, 파이썬 3 버전에서 문제가 있다. (파이썬 2.7 에선 문제가 없음.)

pip 로 lexrankr 를 설치하면, jpype1-py3 를 설치하게 되는데, 이미 jpype1 이 설치되어 있으면, 이 패키지와 충돌이 나면서 konlpy 의 동작이 망가지는 것 같다. 이 경우 에러메시지는 대략 다음과 비슷하다.

>>> from lexrankr import LexRank
>>> lr = LexRank()
/home/dwyoon/temp/vtest37/lib/python3.7/site-packages/konlpy/tag/_okt.py:16: UserW                                                                                  arning: "Twitter" has changed to "Okt" since KoNLPy v0.4.5.
  warn('"Twitter" has changed to "Okt" since KoNLPy v0.4.5.')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/dwyoon/temp/vtest37/lib/python3.7/site-packages/lexrankr/lexrankr.py                                                                                  ", line 154, in __init__
    self.factory = SentenceFactory(tagger=tagger, useful_tags=useful_tags, delimit                                                                                  ers=delimiters, min_token_length=min_token_length, stopwords=stopwords, **kwargs)
  File "/home/dwyoon/temp/vtest37/lib/python3.7/site-packages/lexrankr/lexrankr.py                                                                                  ", line 56, in __init__
    self.tagger = taggers.Twitter()
  File "/home/dwyoon/temp/vtest37/lib/python3.7/site-packages/konlpy/tag/_okt.py",                                                                                   line 17, in Twitter
    return Okt(jvmpath)
  File "/home/dwyoon/temp/vtest37/lib/python3.7/site-packages/konlpy/tag/_okt.py",                                                                                   line 90, in __init__
    if not jpype.isJVMStarted():
AttributeError: module 'jpype' has no attribute 'isJVMStarted'

이런 문제가 발생하면, jpype1-py3pip uninstall 해 주자. 그리고 문제가 없어지는지 확인해 보고, 혹시 문제가 계속된다면, jpype1, konlpy 를 모두 pip uninstall 했다가 다시 pip install 해 본다. 내가 테스트했을 때는 이렇게 문제가 해결됐다.

lexrankr 간단한 실습

실행해 보면 다음과 같이 잘 요약해 준다.

(물론 모든 텍스트를 잘 요약해 주는 것은 아님.)

요약시 k 아규먼트의 사용 (2018년 4월 추가)

probe 함수에 k 값을 주면, 요약문장의 갯수를 조정할 수 있다.

  • k 가 1보다 작은 값이면, 전체문장에 대한 요약문의 비율
  • k를 정수로 주면, 나오는 요약문장의 갯수

아래 캡쳐 예제를 확인하라. 단지, 아래 캡쳐는 파이썬 2.7 로 실험해 본 결과라서 print 문 문법이 다르다는 것에 주의.

728x90