首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于textstat /可读性包Python 3的经验

关于textstat /可读性包Python 3的经验
EN

Stack Overflow用户
提问于 2016-09-16 18:10:29
回答 2查看 2.1K关注 0票数 4

这里有谁曾在python中使用过可读性0.2或textstat 0.3.1包?在这个问题上找不到任何东西,也找不到任何关于这个问题的好文件。

到目前为止,我的代码是:它在本地存储的大量txt文件上进行迭代,并将结果(可读性度量)打印到主文本文件中。

代码语言:javascript
复制
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. 是否可以将我的主文件存储到另一个目录中?如果我使用上面的代码,我的主文件是在与我的文件被迭代的同一个目录中创建的,这有点没有意义.
  2. 有人经验过这些包裹的精确程度吗?我刚刚在textstat和http://www.webpagefx.com/tools/read-able/check.php / http://gunning-fog-index.com/中测试了相同的字符串,并在所有度量上得到了显著不同的结果。

任何帮助都很感激。

EN

回答 2

Stack Overflow用户

发布于 2016-09-16 19:32:46

对于第一个问题,您可以指定您的文件位于任何目录中,只需给它提供完整的路径:"F:\Level1\Level2\Results_readability.txt"或相对路径"..\Other\Results_readibilty.txt"

关于第二个问题。YMMV可读性不是一门精确的科学。这是有可能构成一个句子,使用简短,但晦涩的词,似乎容易读,但不是。

再一次,要计算音节的数量,需要不同的启发式方法来决定如何将一个单词分割成音节,如果这在您的文本上失败了,就会导致错误。也就是说,textstat确实实现了各种可读性索引的正确版本。如果结果不同,您可以调查原因。

票数 1
EN

Stack Overflow用户

发布于 2017-05-25 15:50:49

我怀疑textstat使用不同的系数。简单的检查:用一个由一个音节组成的单词组成的句子运行它。我使用了文本"No."

代码语言:javascript
复制
In: textstat.flesch_kincaid_grade("No.")
Out: -4.6

但根据文献中的公式,答案应该是-3.4 (即0.39*1+11.8*1-15.59)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39537707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档