如何高效地将海量英语书籍按语言难度系数分级?

最近根据我的毕设开发了阅英API: yueing.online. 免费提供给开发者进行可读性分级所用.

资源限制的原因, 网站用了jsonformatter的设计, 而且对英文文章字数做了限制. 但是算法是原原本本从集各大神Paper之所长, 进行筛选提高再加工的成果. 有意见欢迎砸蛋, 或者私信 🙂

楼主的问题刚好是我本科毕业设计的研究方向. 虽说当时研究的主要是短篇文章的分级, 但相信给书籍分类的话也应该比较类似. 在此分享一下经验.

题主想解决的问题实际上是自然语言处理中的一个分支问题, 可读性分级.就是根据文章的阅读难度进行分级. 通常的这类问题通常有两种解决方案: 第一种简单易懂,速度快,但是准确度低. 第二种速度一般,准确度高,但是比较复杂.分别是:

一些研究者通过分析单词数,音节数,句子长度等简单特征和文章难度的关系,总结归纳出了一些静态的公式。 比如下面的Flesch–Kincaid 公式:

其中用了 words per sentence 和syllables per word 两个特征,并将其转换为0-100的分数。最后再用一个映射表,将分数映射成美国教育等级。类似以上的这个formula,这些公式尝试将难度特征用自定义的参数和运算组合起来,以此评测文章难度。这种方法问题很明显,

但是另一方面,这些公式用的都是比较简单的特征,因此算起来很快。所以要是你对准确度要求不是特别高,这些公式是可以胜任的.推荐一个网站FREE READABILITY FORMULAS : FREE READABILITY TOOLS : READABILITY SOFTWARE. 这个上面有大部分流行的阅读难度公式,还有一个分级小工具可以直接用.只不过这个东西对文章字数有一定要求,而且没有api (有个Are you human的checkbox.硬是要用的话,可以写个小脚本用jquery什么的). 大部分算出来的结果都是根据美国教育制度, 我们还需要一个美国-中国教育等级的转换表. 我之前找到过一个,但是感觉不是特别靠谱(需要的点Lexile分级介绍).

这个方式基本是按着大部分机器学习的过程的.篇幅限制,我会跳过具体的算法和背后的动机, 而直接从实现的角度来解释. 假设题主跟我一样,想将文章根据中国的教育来分级, 我们需要:

每篇文章内容完整,语法通顺,是有效的文章. 要求这个是为了避免之后提取特征的时候出现问题,下文会提到.

这个难度标签直接决定了最后能将文章分成哪些级. 具体每个标签是什么,难度跨度多大,就要看自己的应用需要. 我最后定下来的标签有这几个: 初中 – 高中 – 大学4级 – 大学6级 – 托福/雅思 – GRE. 难度依次上升.

收集这样的一个文章库还是比较头疼的事情,当时我做毕设的时候就被这个难住了. 之前的 Paper里面大部分用的是一个叫Weekly Reader的文集. 但是这个文集就包含了美国 2,3,4,5年级的英文文章. 做研究没问题,真拿来用就不太够了. 最后走投无路的时候想到为 什么不直接用中国英语考试里面的阅读题, 这样不仅容易获得文章,而且每篇文章很自然的 会有分级(初一,初二什么的). 然后我就在上扒各种卷子,然后手动复制了1200多篇 文章到数据库 (~~~~(_)~~~~) 非常蛋疼, 因为卷子形式各异,没办法写代码自动化.

有了这些东西后, 准备工作就差不多了. 下面简单介绍下过程 整个过程分为两个阶段:Training 和 Evaluation

写一个特征提取器. 这个特征提取器根据之前定下的feature set从文章中拿统计数据, 形成一个对于这篇文章的特征向量. 达到的效果就是:输入一篇文章 输出一个特征向量. 这个提取器将在Training 和 Evaluation 两个过程中用到.

将这N个向量用机器学习模型进行training. 会得到一个training model. 这个model就是你根据N个特征向量的出的经验.到这里, training过程结束. 已经准备好给没用分级的文章分级了.

用同样的特征提取器提取未知难度文章的特征. 然后用之前的training model来测试这个新的特征向量.就能得到预测的分级了. 比如用KNN的话, 就会根据跟被测向量的Euclidean_distance最近的K个training向量来判断该文章的等级.

这部分讲的比较简单, 因为基本是普通的机器学习的过程 .具体可以google.

总结一下吧, readability formula适合对准确率要求不高的应用场景. 相比而言机器学习是当前流行的方式, 而且我相信也会是未来的趋势. 实现起来确实比较难, 得一步一来. 中间还有很多要考虑的东西. 想进一步了解的话可以联系我, 我会把相关的paper和数据提供给你. 希望以上内容对你会有帮助. 🙂

当初研究这方面的初衷是想做一个专门给中国人用的英语阅读器. 适合中国人用的英语阅读软件是市场上一个比较大的空白, 有一些机会在这里面. 英语学习的网站, 像扇贝网这样的现在也在慢慢开发在线的英文阅读. 在这个应用场景下, 英语文章难度分级会有很大的实用性. 比如,

题主这个问题非常奇怪,我觉得在问之前,应该先搜下知乎的,这里的书籍推荐板块非常的成熟,内容也极其丰富

想通过读原版小说来提升英文水平,读什么书好? – 恶喵的奶爸的回答在这个回答里,我大致按难度分了一下

有哪些易读的英文著作? – 恶喵的奶爸的回答这个回答有15K的赞,按照兴趣点,适合人群,以及难度严格的分类了一大批书籍,足够看很久了

有什么英语原版爱情小说? – 恶喵的奶爸的回答这个回答也按照四六级等考试的词汇要求为参照基础对一批原版书分类,按照兴趣导向,主要是针对女孩子

有没有特别搞笑的英文原版书? – 恶喵的奶爸的回答这个回答也是按照四六级的参照标准进行分类,针对风趣幽默的导向

在词汇量并不是特别高的情况下如何有效阅读原版书? – 恶喵的奶爸的回答这个回答是我目前最得意的,严格的按照不同的象限进行分类,不仅按照兴趣,而且按照语体对原版材料进行了分类,这是目前网上研究原版书的文章里比较少见,也是容易被学习者忽略的——小说,报刊,社科,科普的语体和语言形式,措辞造句,甚至语气都是完全不一样的,需要大量的阅读和小心的查证工具书才能体会。这远不是只是简单的词汇量多寡的问题。

题主如果只是想知道所谓的“海量”原版书难度到底如何,而且只关注词汇量多寡的话(其实读了一段时间都知道词汇远远不是什么最头疼的问题,但这个其实根本上就是一个夏虫不可语冰的事儿。