개발일지

[TextRank] textrankr과 konlpy를 사용한 한국어 요약

송채채 2023. 4. 27. 14:11
반응형

konlpy 설치

https://konlpy.org/en/v0.6.0/install/

 

Installation — KoNLPy 0.6.0 documentation

Ubuntu Supported: Xenial(16.04.3 LTS), Bionic(18.04.3 LTS), Disco(19.04), Eoan(19.10) Install dependencies # Install Java 1.8 or up $ sudo apt-get install g++ openjdk-8-jdk python3-dev python3-pip curl Install KoNLPy $ python3 -m pip install --upgrade pip

konlpy.org

https://github.com/konlpy/konlpy

 

GitHub - konlpy/konlpy: Python package for Korean natural language processing.

Python package for Korean natural language processing. - GitHub - konlpy/konlpy: Python package for Korean natural language processing.

github.com

윈도우 10 기준

 

java 버전 확인하기 => 1.7 이상이어야함

java -version

필요한 라이브러리 설치

pip install JPype1>=0.7.0
pip install konlpy

 

 

textrankr 설치

https://github.com/theeluwin/textrankr

 

GitHub - theeluwin/textrankr: TextRank for Korean.

TextRank for Korean. Contribute to theeluwin/textrankr development by creating an account on GitHub.

github.com

from typing import List
from konlpy.tag import Okt

class OktTokenizer:
    okt: Okt = Okt()

    def __call__(self, text: str) -> List[str]:
        tokens: List[str] = self.okt.phrases(text)
        return tokens
from typing import List
from textrankr import TextRank

text = "서울 지진 피해에 대한 데이터 분석을 위해서는 어떤 종류의 데이터를 사용해야 할지 먼저 생각해보아야 합니다. 예를 들어, 지진 발생 시간, 지진 규모, 지진 발생 지역, 피해 규모 등의 정보가 필요할 것입니다. 서울 지진 피해 분석 예시: 서울 지역에서 최근 몇 년간 발생한 지진 데이터를 수집하여 지진 발생 건수, 지진 규모, 지진 발생 지역 등의 정보를 파악할 수 있습니다. 이를 바탕으로 서울 지역에서 지진 발생이 가장 많은 지역, 지진 규모와 피해 규모 간의 상관 관계, 지진 발생 시간대 등을 분석할 수 있습니다. 또한, 특정 지역에서의 지진 발생 시 피해 규모가 어떻게 나타나는지 분석하여 지진 대비 대응 전략을 마련할 수 있습니다. 서울 지진에 대한 데이터는 국가지진정보센터에서 제공하는 '국내 지진 정보 시스템'에서 확인할 수 있습니다. 이 시스템에서는 지난 1년간의 국내 지진 정보를 확인할 수 있으며, 서울 지역에서 발생한 지진 정보도 포함되어 있습니다. 이를 바탕으로 데이터를 수집하고 분석할 수 있습니다."

mytokenizer: OktTokenizer = OktTokenizer()
textrank: TextRank = TextRank(mytokenizer)

k: int = 3  # num sentences in the resulting summary

# summarized: str = textrank.summarize(text, k)
# print(summarized)  # gives you some text

# if verbose = False, it returns a list
summaries: List[str] = textrank.summarize(text, k, verbose=False)
for summary in summaries:
    print(summary)
    >>예를 들어, 지진 발생 시간, 지진 규모, 지진 발생 지역, 피해 규모 등의 정보가 필요할 것입니다
	>>서울 지진 피해 분석 예시: 서울 지역에서 최근 몇 년간 발생한 지진 데이터를 수집하여 지진 발생 건수, 지진 규모, 지진 발생 지역 등의 정보를 파악할 수 있습니다
	>>이를 바탕으로 서울 지역에서 지진 발생이 가장 많은 지역, 지진 규모와 피해 규모 간의 상관 관계, 지진 발생 시간대 등을 분석할 수 있습니다

사실 키워드 추출하려고 한건데 이 라이브러리는 키워드 추출 기능이 없었다..요약에 쓸 수 있음