Python(NLP)中的可读性索引?
自然语言处理是对自然人类语言的自动生成和理解的研究。随着计算机技术已集成到当今几乎每个行业中,这变得越来越有趣。我们将研究自然语言处理中的一个特定领域。可读性。这涉及确定文本的可读性的主题。这表明阅读或理解文本有多困难。
可读性索引是一个数字值,它指示阅读和理解文本的难易程度。有几种用于确定可读性的测试,并且它们具有不同的使用领域。
“可读性描述了阅读文档的难易程度”[13]。存在许多不同的测试[9]来计算可读性。可读性测试“被认为是阅读容易程度的预测,但不是确定可读性的唯一方法”
某些测试对语言没有影响,但是有些测试更适合某些语言。了解不同的可读性测试对我们至关重要。
ARI = 4.71 * (characters/words) + 0.5 * (words/sentence) -21.43
Flesch阅读轻松
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))
从您的写作中找到一个100字的样本。
计算易用的单词(定义为两个或更小的音节),并在每个单词上加上数字“1”,甚至包括a,an,the和其他简单单词。
计算硬词(定义为三个或三个以上的音节),并在字典所发音的每个词上放置数字“3”。
易用字数乘以“1”。
硬单词数乘以“3”。
将前两个数字加在一起。
用总数除以句子数。
RIX = (Long Words/ Sentences) (long words = words where number of characters > 6)
LIX = (total words/ total sentences) + (long words/ total words * 100) (long words = words where number of characters > 6)
例如,下面是通过flesch索引确定文本文件可读性的程序。
假设条件
从上面,flesch-kincaid等级级别公式用于计算等效等级级别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