2016-09-16 1 views
3

파이썬에서 가독성 0.2 또는 textstat 0.3.1 패키지를 사용해 본 사람은 누구입니까? 이 주제를 다루는 SO 나 이에 관한 좋은 문서를 찾을 수 없습니다.textstat/readability 패키지에 대한 경험 Python 3

지금까지 코드는 입니다. 로컬로 저장된 txt 파일을 반복하여 결과 (가독성 측정 값)를 마스터 텍스트 파일에 인쇄합니다.

from textstat.textstat import textstat 
import os 
import glob 
import contextlib 


@contextlib.contextmanager 
def stdout2file(fname): 
    import sys 
    f = open(fname, 'w', encoding="utf-8") 
    sys.stdout = f 
    yield 
    sys.stdout = sys.__stdout__ 
    f.close() 


def readability(): 
     os.chdir(r"F:\Level1\Level2") 
     with stdout2file("Results_readability.txt"): 
       for file in glob.iglob("*.txt"): # iterates over all files in the directory ending in .txt 
         with open(file, encoding="utf8") as fin: 
           contents = fin.read() 
           if __name__ == '__main__': 
             print(textstat.flesch_reading_ease(contents)) 
             print(file.split(os.path.sep)[-1], end=" | ") 
             print(textstat.smog_index(contents), end="\n ") 
             print(file.split(os.path.sep)[-1], end=" | ") 
             print(textstat.gunning_fog(contents), end="\n ") 

이 그러나 나는이 문제가 꽤 좋은 작동합니다

  1. 가 다른 디렉토리에 내 마스터 파일을 저장할 수 있나요를? 위의 코드를 사용하는 경우 masterfile은 반복되는 파일과 동일한 디렉토리에 만들어지며 이는 무의미합니다 ...

  2. 이 패키지의 정확도는 누구나 정확합니까? Textstat과 http://www.webpagefx.com/tools/read-able/check.php/http://gunning-fog-index.com/에서 동일한 문자열을 테스트 한 결과 모든 측정에서 중요한 결과를 얻었습니까?

도움을 주시면 감사하겠습니다. "F:\Level1\Level2\Results_readability.txt" 또는 두 번째 질문에 대한 상대 경로 "..\Other\Results_readibilty.txt"

:

답변

0

은 첫 번째 질문의 경우, 당신은 단지 그것을 전체 경로를 제공, 임의의 디렉토리에 있어야 파일을 지정할 수 있습니다. YMMV. 해독 성은 정확한 과학이 아닙니다. 짧지 만 모호한 단어를 사용하는 문장은 읽기 쉽지만 보이지는 않는 문장을 구성 할 수 있습니다.

다시 말해, 음절의 수를 세는 것은 단어를 음절로 분리하는 방법을 결정하는 다양한 경험적 방법이 필요합니다. 텍스트에서 오류가 발생하면 오류가 발생합니다. 즉, textstat는 다양한 가독성 색인의 올바른 버전을 구현합니다. 결과가 다른 경우 이유를 조사 할 수 있습니다.

+0

감사합니다 . 나도 알아, 내 stdout2file 데코레이터 os.chdir 사용하여 시도했지만 작동하지 않았다. 그것은 txt 파일을 만들었지 만 어떤 내용도없이 ... 두 번째 질문 : 결과가 다소 비슷하지만 내 결과를 비교하면 아무런 문제가 없을 것입니다. 즉, 안개 - 색인 웹 사이트 23,54에서 11.55의 결과 (결과의 마지막 단락을 사용하여 큰 차이를 만드는 것)) ... 그래서이 패키지에 대한 경험과 구현의 정확성에 대해 묻는 것입니다. –

1

나는 textstat이 다른 계수를 사용한다고 생각합니다. 간단한 점검 : 하나의 음절로 구성된 한 단어로 구성된 한 문장으로 실행하십시오. 나는 텍스트 "No."를 사용 :

In: textstat.flesch_kincaid_grade("No.") 
Out: -4.6 

그러나 문학의 공식에 따라, 대답은해야 -3.4 (즉입니다 0.39 * 1 * 1-15.59 + 11.8) 답변에 대한

관련 문제