By Jiaxian Shi 英文文章的难度从直觉上来讲可以从以下两方面来定义: 句子的难易程度可以从句子的长度和复杂性(从句数量,嵌套)方面来考虑。词汇的难易程度可以从词汇的长度和使用频率(专业词汇,罕见词汇)方面来考虑。通过查阅维基百科等相关资料,发现目前普遍得到运用的可读性标准为Flesch–Kincaid可读性测试指标。Flesch–Kincaid可读性测试指标由两个指标构成:Flesch Reading Ease(FRE)和Flesch–Kincaid Grade Level(FKGL)。与我们的直觉一致,两者都使用了类似的方法:句子长度和词汇长度(由音节数确定,不单纯考虑字母数)。由于两个指标对句子长度和词汇长度所采取的权重不同(包括正负号),所以两个指标的意义相反:FRE数值越高,文章就越简单,可读性也越高。而FKGL数值越高,文章就越复杂,文章的可读性也就越低。 使用Python强大的自然语言处理(NLP)包NLTK,来实现下述3个功能: 其中,断句使用NLTK提供的非监督学习的预训练模型tokenizers/punkt/,分词则使用NLTK推荐的word_tokenize函数(使用TreebankWordTokenizer和PunktSentenceTokenizer模块),分音节则使用NLTK供的SyllableTokenizer模块。需要注意的是,分词会将标点符号分为一个单词,需要手动去除。同时,分音节时会讲英语中的连字符“-”分为一个音节,也需要手动去除。另外,文章需要进行预处理,去除回车符和空格,并将非标准标点符号转换为英文标准标点符号。 统计出句数,词数和音节数后,即可根据上文提供的公式计算出FRE和FKGL了。本程序使用4段不同类型的英文文章分别计算FRG和FKGL,并使用matplotlib模块绘制出柱状图已做比较。 文章: 比较结果如下图所示: 可以发现,文章的难度为:儿童文学<侦探小说<杂志文章<学术论文,这与我们的实际感受是一致的。