Giter Site home page Giter Site logo

textrankr's Introduction

textrankr

Build Status Coverage Status PyPI version

Reorder sentences using TextRank algorithm.

  • Mostly designed for Korean, but not limited to.
  • Check out lexrankr, which is another awesome summarizer!
  • Not available for Python 2 anymore (if necessary, use version 0.3).

Installation

pip install textrankr

Tokenizers

Tokenizers are not included. You have to implement one by yourself.

Example:

from typing import List

class MyTokenizer:
    def __call__(self, text: str) -> List[str]:
        tokens: List[str] = text.split()
        return tokens

한국어의 경우 KoNLPy를 사용하는 방법이 있습니다. 아래 예시처럼 phrases를 쓰게되면 엄밀히는 토크나이저가 아니지만 이게 더 좋은 결과를 주는것 같습니다.

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

Usage

from typing import List
from textrankr import TextRank

mytokenizer: MyTokenizer = MyTokenizer()
textrank: TextRank = TextRank(mytokenizer)

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

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

# if verbose = False, it returns a list
summaries: List[str] = textrank.summarize(your_text_here, k, verbose=False)
for summary in summaries:
    print(summary)

Test

Use docker.

docker build -t textrankr -f Dockerfile .
docker run --rm -it textrankr

textrankr's People

Contributors

theeluwin avatar yoondonghwang avatar juice500ml avatar ohgyun avatar dongsam avatar lacti avatar

Stargazers

Keunsuk Cho avatar  avatar Kim Taehyeon avatar vitus avatar Gaeun Byun avatar Mitchel Song avatar 권기환 avatar Seungil Kim avatar Chaeeun Song avatar Inpyo Lee avatar Hwi avatar hojin avatar  avatar Jaehee Lee avatar  avatar  avatar Gnyiii avatar Deok-kyun Kim avatar Dongjin Baek avatar Jeonghyeon Kim avatar 우준호 avatar Kay Hwang avatar Jaehoon M. avatar Daniel(정현승) avatar Shin Yeongmin avatar chick_0 avatar Kim jinwook avatar Sejin  avatar SOHYEON avatar Seongmin Park avatar  avatar JY Park avatar junwoo kim avatar Jahyun Koo avatar  avatar Jinhoon Bae avatar Yuheun Kim avatar Hansol Park avatar  avatar SeungWon Seo avatar Jun Hyeok Lee avatar Milkybean avatar Soohan Bae avatar Hyunseung Jeon (aru@channel.io) avatar Kevin Ko avatar Changyoung Koh avatar Benson avatar  avatar Siluat avatar Min-Gyu Jo avatar Lambda avatar Austin Hwang avatar Cheun Young Jin avatar  avatar 유영재 avatar seunggi avatar snoop2head avatar woodong avatar HJ avatar jhjjang avatar gyunggyung avatar Nathan Lane avatar junyeop avatar Sihyun Kim avatar Jinhyuk Lee avatar Junhyun Kim avatar Minyoung Lee (carl.brain) avatar shj avatar Minho Ryang avatar Jiwung Hyun avatar Hyeonjae.kim avatar Sigrid Jin (ง'̀-'́)ง oO avatar UkDong Gim/김욱동 avatar  avatar seonghwanseol avatar Ben Seo avatar Daniel Shin avatar Yong-gyu Kim avatar Changhyun Park avatar Philographer avatar SeungjunRyu avatar Yangwook Ian Jeong avatar Changhyub avatar Hanbyul avatar Binaryeast avatar Jay avatar Junsik Choi avatar Jungwoo An avatar Donghyun Go avatar  avatar dooyeoung.ryu avatar kidevelop avatar Kim Jung Wook avatar Universe avatar 99corps avatar Wonwoo-Kim avatar Wonhong Jang avatar Mingu Kang avatar hyunjun529 avatar brooklynLife avatar

Watchers

pooh4880 avatar sl kim avatar James Cloos avatar Jeongmin Seo avatar  avatar  avatar mireado avatar 박태훈 avatar Minjae Heo avatar  avatar

textrankr's Issues

문장내 주제를 찾지 못하는 것 같습니다.

먼저, 엄청난 일을 시작하셨네요. 이 프로젝트를 지속적으로 지원합니다.

여러번 테스트를 했는데, 문장내 주제를 인식하는 알고리즘은 없는 것 같습니다.
알고리즘이 추가되면 좋겠다는 의견입니다.

Regards,
toomuchthink2016.

Java RuntimeError: Unable to load DLL

This is my rank.py:

from textrankr import TextRank

text = open('input.txt', 'r').read()
textrank = TextRank(text)
print textrank.reordered[0].text

When I run this, I've got an error:

$ python rank.py
Traceback (most recent call last):
  File "rank.py", line 1, in <module>
    from textrankr import TextRank
  File "/Users/xoul/Desktop/rank/venv/lib/python2.7/site-packages/textrankr/__init__.py", line 13, in <module>
    _kkma = Kkma()
  File "/Users/xoul/Desktop/rank/venv/lib/python2.7/site-packages/konlpy/tag/_kkma.py", line 87, in __init__
    jvm.init_jvm(jvmpath)
  File "/Users/xoul/Desktop/rank/venv/lib/python2.7/site-packages/konlpy/jvm.py", line 51, in init_jvm
    '-ea', '-Xmx768m')
  File "/Users/xoul/Desktop/rank/venv/lib/python2.7/site-packages/jpype/_core.py", line 50, in startJVM
    _jpype.startup(jvm, tuple(args), True)
RuntimeError: Unable to load DLL [/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libjvm.dylib], error = dlopen(/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libjvm.dylib, 9): no suitable image found.  Did find:
    /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries/libjvm.dylib: mach-o, but wrong architecture at native/common/include/jp_platform_linux.h:45

Is there any prerequisite to run example?

Mac에서 실행 시 자바 런타임을 찾을 수 없는 문제

맥(Sierra 10.12.1)을 사용하고 있는데, 다음과 같은 코드를 실행하면

from textrankr import TextRank

다음과 같은 오류 메세지가 나옵니다.

No Java runtime present, requesting install.

image

KoNLPy에서 제가 보고했던 문제와 마찬가지로 Java 1.8의 버그인 것으로 추정됩니다. 다음과 같이 JAVA_HOME 환경 변수를 설정하면 문제 없이 동작합니다.

export JAVA_HOME=$(/usr/libexec/java_home)

참고로 저의 시스템에는 Java 1.8.0-66이 설치되어있습니다.

➜  ~ java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

있는 그대로 출력되는 문제

from textrankr import TextRank
import pandas as pd

df = pd.read_excel(r"crawling.xlsx", encoding="UTF8")
f = open("tr_result.txt", 'a')
for val in df.CONTENT:
val = str(val)
textrank = TextRank(val)
f.write(textrank.summarize(3))
f.close()

엑셀 파일에 저장되어 있는 글들을 연속적으로 textrankr로 요약해주려고 했는데요
있는 그대로 출력이 되거나 공백이 더 늘어나는 결과를 얻었습니다.
해결할 수 있는 방법이 있을까요

verbose argument error

  • iPython 7.8.0
  • Mac OS Cattalina 10.15.3
  • Jupyter notebook

제가 입력한 코드

from textrankr import TextRank
textrank = TextRank("#20200115\\n저녁 초대!\\n와인잔 속에 비치는\\n모든 것들이 화려한\\n도심속...")
print(textrank.summarize())
print(textrank.summarize(3, verbose=False))  # up to 3 sentences, returned as list

print(textrank.summarize())는 정상적으로 작동하는데,

print(textrank.summarize(3, verbose=False)) # up to 3 sentences, returned as list

가 오류를 냅니다.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-48-755b06339450> in <module>
      2 textrank = TextRank(get_text("검도"))
      3 print(textrank.summarize())
----> 4 print(textrank.summarize(3, verbose=False))  # up to 3 sentences, returned as list

TypeError: summarize() got an unexpected keyword argument 'verbose'

온점(.) 오류

재밌고 대단한 프로젝트를 개발하셨군요.
본론으로, 철쭉 위키백과를 인용하여 실험해봤습니다.

키는 25m쯤 되며 산에서 흔히 자란다.[2] 나무껍질은 회색 또는 회백색이고 세로로 불규칙하게 갈라진다. 어린 가지와 꽃자루는 끈끈하다.[1] 어린 가지에 선모가 있으나 점점 없어진다.[3] 잎은 거꾸로 된 달걀 모양이거나 넓은 타원 모양이고 털이 있다. 길이는 47 cm 정도이고, 너비는 1.52.5 cm 정도이며 보통 어긋나지만, 가지 끝에서는 45개씩 모여 난다.[2] 꽃은 4~5월에 연한 분홍색으로 잎이 나면서 피며 산형꽃차례를 이룬다. 꽃부리는 지름 5-8㎝의 깔때기 모양이며 5개로 갈라지는데, 위쪽 3개의 열편에 적갈색 반점이 있다. 수술은 10개이며 길이가 서로 다르고 암술은 1개이다. 열매는 삭과이며 길이 1.5㎝ 정도의 긴타원형 달걀꼴로 10월에 익는다.[3] 철쭉을 먹이식물로 하는 곤충으로는 극동등에잎벌의 애벌레가 있는데, 철쭉 잎 속에 알을 낳는다.

3줄요약 시 아래와 같은 결과가 나오는군요.

길이는 47 cm 정도이고, 너비는 1
2.5 cm 정도이며 보통 어긋나지만, 가지 끝에서는 4
5개씩 모여 난다
수술은 10개이며 길이가 서로 다르고 암술은 1개이다

여기서 첫줄 너비 부분 뒤에 1에서 멈춰 있는데, 의도한 결과라면 1.5~2.5cm 라고 나오고자 하는 게 맞다면 온점(.)에서 잘린 듯 합니다.

참여는 하고 싶은데 파이썬 잼병이라... 나름대로 보고 있습니다. 그럼 즐코.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.