function readability($text) { $total_sentences = 1; // one full stop = two sentences => start with 1 $punctuation_marks = array('.','?','!',':'); foreach ($punctuation_marks as $punctuation_mark) { $total_sentences += substr_count($text,$punctuation_mark); } $total_words = str_word_count($text); $total_syllable = 3; // assuming this value since I don't know how to count them $score = 206.835-(1.015*$total_words/$total_sentences)-(84.6*$total_syllables/$total_words); return $score; }
您有如何改进代码的建议吗?这是对的吗?它会起作用吗?
我希望你能帮助我.提前致谢!
>什么是句子?
说真的,这句话是什么?我们有句号,但它们也可以用于博士学位,例如,Y.M.C.A.和其他非句子最终目的.当你考虑感叹号,问号和省略号时,假设一段时间可以解决这个问题,你真的在做自己的伤害.我之前看过这个问题,如果你真的想要在真实文本中更可靠地计算句子,你需要解析文本.这可能是计算密集型,耗时且难以找到的免费资源.最后,您仍然需要担心特定解析器实现的错误率.但是,只有完整的解析才能告诉你什么是句子,什么只是句号的其他许多用途.此外,如果您正在使用“野外”文本(例如HTML),您还必须担心句子的结尾不是标点符号,而是标记结尾.例如,许多网站没有为h1和h2标签添加标点符号,但它们显然是不同的句子或短语.
>音节不是我们应该近似的东西
这是这种可读性启发式的一个主要标志,它是使其最难实现的标志.对作品中音节计数的计算分析需要假设假设的读者使用与您的音节计数生成器正在训练的方言相同的方言.声音如何围绕一个音节实际上是口音重音的主要部分.如果您不相信我,请尝试访问牙买加.这意味着即使一个人手动进行计算,它仍然是一个方言特定的分数.
>什么是单词?
不要轻易打蜡心灵,但你会发现,空间分隔的单词以及被概念化为扬声器的单词是完全不同的.这将使可计算可读性分数的概念有些可疑.
所以最后,我可以回答你的问题“它会起作用吗”.如果您希望获取一段文本并在其他指标中显示此可读性分数以提供某种可能的附加价值,那么挑剔的用户将不会提出所有这些问题.如果你正在尝试做一些科学的东西,或者甚至是一些教学方法(因为这个分数和那些最终的意图),我真的不会打扰.事实上,如果您打算使用此功能向用户提供有关他们生成的内容的任何建议,我会非常犹豫.
测量文本阅读难度的更好方法更可能是与低频词与高频词的比例以及文本中的hapax legomena的数量有关.但我不会追求这样的启发式,因为对它进行经验测试是非常困难的.