Python中的可读性指数(NLP)?
自然语言处理是研究自然人类语言的自动化生成和理解。随着计算机技术融入当今几乎所有行业,这正成为越来越有趣的问题。我们将研究自然语言处理中的一个特定领域:可读性。这涉及到确定文本可读性的主题。这表明阅读或理解文本的难易程度。
可读性指数是一个数值,表示阅读和理解文本的难易程度。有几种不同的可读性测试,它们有不同的应用领域。
"可读性描述了文档易于阅读的程度" [13]。存在许多不同的测试 [9] 来计算可读性。可读性测试“被认为是对阅读难易程度的预测,但不是确定可读性的唯一方法”。
有些测试是语言中性的,但有些测试更适合某些语言。了解不同的可读性测试对我们至关重要。
可读性测试 − | 目标语言 − | 简短描述和公式 − |
---|---|---|
自动化可读性指数 (ARI) | 英语 | 旨在衡量文本的可理解性。输出是理解文本所需的大致美国年级水平。ARI = 4.71 * (characters/words) + 0.5 * (words/sentence) -21.43 |
弗莱施可读性易度指数 | 英语 | 旨在指示一段文字理解的难易程度。分数越高,表示材料越容易阅读;分数越低,表示越难阅读。FRE = 206.835 − 1.015*(total words/ total sentences) − 84.6 * (total syllables/ total words) |
弗莱施-金凯德等级 | 英语 | 旨在指示一段文字理解的难易程度。结果是一个与美国年级水平相对应的数字。FKGL = 0.39 * (total words/ total sentences) + 11.8 (total syllables/ total words) -15.59 |
科尔曼-利亚乌指数 | 英语 | 旨在衡量文本的可理解性。输出是理解文本所需的大致美国年级水平。CLI = (5.89 * (characters/ words)) − (30 *(sentences/words)) − 15.8 |
冈宁雾度指数 | 英语 | 旨在衡量英语书写样本的可读性。所得指数表示一个人需要多少年的正规教育(美国年级)才能在第一次阅读时轻松理解文本。GFI = 0.4 * (( words/ sentence) + 100 * (complex words/ words)) |
Linsear Write | 英语 | 一种英语文本的可读性指标,由空军开发,以帮助他们计算其技术手册的可读性。公式来自维基百科。
|
可读性指数 (RIX) | 西欧语言 | 这很有用,因为它可以用于任何西欧语言的文档 [3]。输出的分数在0(非常容易)到55+(非常困难)之间。RIX = (Long Words/ Sentences) (long words = words where number of characters > 6) |
Lesbarhets Index (LIX) | 西欧语言 | 这很有用,因为它可以用于任何西欧语言的文档 [2][3]。输出的指数表示一个年级水平。指数低于0.1为一年级,而7.2及以上为大学水平。LIX = (total words/ total sentences) + (long words/ total words * 100) (long words = words where number of characters > 6) |
例如,以下是通过弗莱施指数确定文本文件可读性的程序。
假设
弗莱施指数 | 文本文件阅读年级 |
---|---|
0-30 | 大学 |
50-60 | 高中 |
90-100 | 四年级 |
从上文中,弗莱施-金凯德等级公式用于计算等效的年级水平 G −
FKGL = 0.39 * (总词数/总句数) + 11.8 (总音节数/总词数) -15.59
代码
import os dire = os.getcwd() listOfdir = os.listdir(dire) while True: UserFileName = input('Enter file name:') if (UserFileName in listOfdir) and (UserFileName.endswith(".txt")): InputFile = open(UserFileName,'r') text = InputFile.read() sentence = text.count('.') + text.count('!') + text.count(';') + text.count(':') + text.count('?') words = len(text.split()) syllable = 0 for word in text.split(): for vowel in ['a','e','i','o','u']: syllable + = word.count(vowel) for ending in ['es','ed','e']: if word.endswith(ending): syllable - = 1 if word.endswith('le'): syllable + = 1 G = round((0.39*words)/sentence+ (11.8*syllable)/words-15.59) if G > = 0 and G < = 30: print ('The Readability level is College') elif G > = 50 and G < = 60: print ('The Readability level is High School') elif G > = 90 and G < = 100: print ('The Readability level is fourth grade') print ('This text has %d words' %(words)) elif UserFileName not in listOfdir: print ('This text file does not exist in current directory') elif not(UserFileName.endswith('.txt')): print ('This is not a text file.')
输出
Enter file name:dataVisualization.txt The Readability level is College This text has 64 words
广告