2021年第十届数学建模国际赛小美赛C题读这篇文章有多难解题全过程文档及程序

2021年第十届数学建模国际赛小美赛

C题 读这篇文章有多难

原题再现:

  有些英语文本更容易阅读,比如低年级英语考试中出现的阅读材料。然而,有些文本很难阅读,需要读者接受一定程度的教育才能理解。让我们研究一下如何衡量英语文本的阅读难度。
  在Microsoft Word中,您可以选择显示有关文档阅读水平的信息,包括根据Flesch reading Ease测试得出的可读性分数。此测试以100分为标准对文本进行评分。分数越高,就越容易理解文档。对于大多数标准文件,您希望分数在60到70之间。

  Flesch Reading Ease分数的公式为:206.835 − (1.015 × ASL) − (84.6 × ASW)
其中:

  ASL=平均句子长度(单词数除以句子数);
  ASW=每个单词的平均音节数(音节数除以单词数)。

  这个模型很粗略,有很多不合理的地方。例如,一个长单词也可能是常用的,不会使文本变得更难,而某些术语可能很短,但是很多人都不认识的过时单词,这会使阅读变得更困难。文本的复杂逻辑结构也会使阅读变得更加困难。
  我们需要构建一个模型来评估我们在常见情况下可能看到的英语文本的阅读难度,以便将文本作为适当难度水平的语言测试的阅读材料。请详细解释模型的构造细节,包括每个参数是如何选择的。并研究如何将相应的模型推广到其他语言(如汉语,与英语非常不同)。

整体求解过程概述(摘要)

  英语文本的可读性是当今社会亟待解决的一个重大问题。现有的文章可读性索引模型,如𝐹𝑙𝑒𝑠𝑐ℎ𝑅𝑒𝑎𝑑𝑖𝑛𝑔𝐸𝑎𝑠𝑒该算法提取文本特征较为粗糙,无法获得更准确、更权威的评价标准。在此基础上,本文建立了一个模型,并计算了文章的可读性指数。
  在此基础上,本文给出了𝐹𝑙𝑒𝑠𝑐ℎ𝑅𝑒𝑎𝑑𝑖𝑛𝑔𝐸𝑎𝑠𝑒同期算法的算法,如算法、算法和算法。本文通过随机选择物理学、人文科学和计算机科学领域的文章,比较了这些算法的优缺点,并提出了一些可以在原有基础上改进的部分。
  我们发现,当一组读者对社会、文化、历史、当地条件、语言习得经验和词汇有相似的知识时,他们对某一英语文本的易读性和难度的判断也相似,并且他们的判断分布正常。因此,在此基础上,以词汇特征和句子特征为随机变量,以数学期望为可读性指标,采用离散随机变量计算数学期望的方法,通过类比建立了ERDA文章可读性指标模型。ERDA模型的可比性远高于原始线性模型。
  由于传统公式的局限性,机器学习和计算语言学的进步,以及训练数据的可用性越来越高,ai深度学习模型变得越来越准确。在此基础上,本文建立了卷积神经网络并𝐵𝑖𝐿𝑆𝑇 𝑀模型求解和计算文本的可读性指标,并分析了该算法的误差,指出了其与其他算法相比的优势。

模型假设:

  •模型输入文本中没有拼写错误的单词。

  •忽略了除中文和英文以外的其他语言的影响,阿拉伯数字和其他语言被认为对文章的可读性没有影响。

  •忽略读者自身原因造成的影响(如读者自身对专业内容的无知)

问题分析:

  针对原始模型在提取文本特征时相对粗糙的现象,我们可以首先比较不同算法对原始文本可读性指数的结果,并提出现有算法的优缺点。对于现有的文章,可以尝试人工智能深度学习方法。基于校正集,可以对从训练集获得的模型进行多次修改。最后,将所获得的模型用于计算和误差分析。此外,向量空间模型(SVM)可以用于计算,将文本简化为以项目权重为分量的矢量表示,并将分类过程简化为空间矢量运算,可以大大降低解决文章可读性索引问题的复杂性。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

import re
import pronouncing
import textstat
def word_list(filename):
’’’Return word list’’’
try:
with open(filename, ’r’, encoding=’UTF-8) as f:
content = f.read()
fog = textstat.textstat.gunning_fog(content)
smog_index = textstat.textstat.smog_index(content)
readability_index = textstat.textstat.automated_readability_index(content)
print("fog",fog)
print("smog_index",smog_index)
print("readability_index",readability_index)
except FileNotFoundError:
errmsg = filename + ’File does not exist’
print(errmsg)
else:
word_re = re.compile(r’[A-Za-z‘\’]+)
words = word_re.split(content.lower())
return words
def sentence_count(filename):
’’’Calculate sentence length’’’
try:
with open(filename, ’r’, encoding=’UTF-8) as f:
content = f.read()
except FileNotFoundError:
errmsg = filename + ’File does not exist’
print(errmsg)
else:
point_re = re.compile(r’\.)
point = point_re.split(content)
print(’sentence length:+ str(point))
return (len(point)-1)
def get_pronouncing_num(word):
’’’Count the syllables of words’’’
try:
pronunciation_list = pronouncing.phones_for_word(word)
num = pronouncing.syllable_count(pronunciation_list[0])
except Exception as e:
print(’Count syllables abnormal: Abnormal words:"’ + word + ’")
return 1
else:
return num
def get_pronouncing_nums(words):
’’’Count the total number of syllables in the text’’’
counts = 0
for word in words:
if word!="":
counts += get_pronouncing_num(word)
return counts
if __name__ == ’__main__’:
filename = ’text/.txt’
word_num = len(word_list(filename))
sentence_num = sentence_count(filename)
print("Number of words" + str(word_num) + ‘\n Number of sentences‘ +
str(sentence_num))
ASL = word_num / sentence_num
words = word_list(filename)
pronouncing_nums = get_pronouncing_nums(words)
ASW = pronouncing_nums / word_num
RE = 206.835 - (1.015 * ASL) - (84.6 * ASW)
print(’ASW:+ str(ASW))
print(’ASL:+ str(ASL))
print(’RE:+ str(RE))
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值