一次关于批改网的fuzz测试
前言
本学期的期中作业要求要写一篇英语作文,完了以后还要在批改网上提交,如果分数大于90分的话,好像可以得到特等奖,有两百元的奖金。我奋斗了一下午,通过句子与句子之间疯狂使用that和which构造从句,增加连接词,将文章分数提高到了94.
通过查阅相关的资料,猜测可以通过按照规则构造句子的方式,达到高分的效果。具体尝试如下:(尝试分析过程比较无聊且枯燥,想要看结论的同学建议直接跳转总结)
分析
批改网的分数维度由四个方向组成,分别是词汇,句子,篇章结构和内容相关。
内容相关
在我94分的文章里,内容相关的分数是最低的,所以我首先在网站论坛上查找了相关的规则。
这个描述很模糊,但是大概可以知道,是通过检测文章内容之间的相关性来计算内容相关的。那么尝试一下构造fuzz:
发现内容相关度很高,但是并没有达到满相关度,但验证了我猜测的思路,它是通过匹配重复语义的词汇出现的频率来进行判断的,于是尝试构造极端fuzz payload:
果然内容相关度达到了满分,但是仅靠单个词语的堆砌肯定不能满足句子及篇章结构的要求,于是尝试构造句子,发现并不如意:
尝试转换思路,多个词汇重复出现,但是依旧没有达到我们想要的结果:
盲猜文章判断的依据可不可能是第一句,构造极端payload:
在这个极端payload中,第一句话里并没有包含后文内容,但似乎内容相关性还要比前一个payload更高一些,所以猜测可能是提取语义中出现的高频词汇的重复出现率来进行计算的。
确实通过这样的方法把内容相关性保持在了一个比较高的水平,尝试在每个句子中都包含有visit 和 morning。
并没有起到想要的效果,在这里思路突然被卡住了,但是想到除了词与词还有句与句之间的连贯性。尝试将连接词加入到文章中,并修正了一定的语法错误。
果然在加入了一些连接词以后,即使类似的内容,也没有因为词汇间的不连贯而掉内容相关的分数。虽然没有得到满分,但是由此可知我们的内容相关规则应该就是重点词汇重复出现+语句间连贯,而语句间的连贯可以通过增加一些连接词来实现。
词汇
接下来,我们按照顺序对词汇进行测试,它如何检测词汇的高级与否,我猜测应当是词汇使用频率高低来进行的,众所周知,高级词汇的出现率往往要比低频词汇多得多。那么尝试让我们的动物园里换一些有的没的高级动物试试。
将文中的动物换成了河马犀牛鹦鹉之类的词汇,然后将visit、zoo之类的词汇换成了一些不是很常用的addressed和menagerie.果然,评语对我说的是高级词汇使用准确,但是文中词汇表达贫乏,根据我的观察,应该是缺少一些固定搭配或者短语的存在,那么进一步对payload进行修饰。
词汇得分不进反退,可能是因为高级词汇出现的频率又出现了下降,反思存在的问题,参观动物园,I作为主人公就很吃亏,还有一种词汇表达贫乏的情况可能是因为重复出现的词汇比较多,应该尝试转换一些不太容易出现的词汇进行测试。
将我们的主人公从I换成了AI以后,果然词汇得分出现了大幅的增长,但是内容相关性出现了很大程度上的下滑,尝试通过修复连接词,替换相关内容来修复内容相关性。
果然,根据猜测,AI这个词汇虽然作为一个高级词汇,在词汇方面能增分不少,但是内容相关性和我们的其他动物类词汇,动物园之类的词汇同时出现的可能性很低,所以我们应该使用出现关联性比较高的词汇来进行构造,保证名词间的联系,高级词汇在动词副词形容词上下功夫。词汇这方面的规则即可总结为:多使用出现频率较少的词汇,灵活穿插但要保证词汇与词汇之间语义上的相近。
句子
句子这方面其实在下午我对本身文章的修改中就发现了,多使用固定句式,从句,即可得到一个比较高的句子分数,这里有个小技巧,在进行从句构造时,实在想不出来,可以使用which that来引导从句,将简单句组合成复杂句式,分数可以得到很大的提高。因为构造的payload句式都比较短,所以我不得不在这一步上耗费了比较多的时间。
通过对文章句式的改进,拼凑了一些莫名其妙(?)的句式,我们这篇狗屁不通的payload也得到了一个很高的分数。由于时间有限,所以也没有进一步对它进行一些修饰,句子的原理很简单,构造复杂长难句即可。在我这篇狗屁不通的payload里可以看到:
句子长度都不是很长,如果作为大文章来说,例如我构造到94分的那篇文章,其实很容易将句子的分数提上来,尽量将简单句构造成复杂句式即可。
篇章结构
篇章结构这个概念也比较抽象,在我前面对句子的构造中,篇章结构的分数基本上是和句子得分同时提升的,
经过查询,它是通过对文章中使用的过程性词汇的相对数量和连接词的数量进行判断的,那么我们可以通过堆砌一些类似词汇来达到一定的提升的效果。
可以发现篇章结构确实得到了一定的提高:
改正部分
在对四个维度的内容进行了一系列修改以后,批改网分数提高还有一个很重要的部分,就是根据他给出的按句点评来对文章进行修改。将他所有的警示,错误及推荐表达,在不影响短语或连接词的情况下进行修正,一定要注意不要影响到连接词的搭配否则会被扣分。
这样文章又能得到一定程度上的分数提升。之后的过程就会很枯燥很无聊,无非就是根据我们以上掌握的部分,来对文章进行一些修饰罢了。虽然狗屁不通,但是程序会很爱。其中,批改网还有一些所谓闪光短语和亮点句式的推荐,具体不再赘述,无非也就是一个搬砖堆砌的过程。大家可以自行百度。
总结
这篇文章只是想记录一下这个无聊的fuzz过程,加深了对批改网总的判分情况的认识,举例的这篇payload,或者说范文吧,最后没有达到想要达到的效果(fuzz到满分)还是比较遗憾(其实是我偷懒不想继续搞了),但是在这里也可以给大家总结一下高分的思路:
- 词汇尽量使用相关的但是比较生僻的词汇,灵活运用词组。
- 句子可以多使用固定搭配及模板例句,
或者通过(which-that)大法构造大量的从句来获得高分。(另外在测试中发现似乎批改网对于非限定性定语从句,条件状语从句等高级从句类型不太敏感,使用普通的that,which引导的宾语或定语从句即可) - 在写文章的时候多使用连接性词汇和过程性词汇,可以大幅提升文章的篇章结构得分。
- 内容相关分数确实比较玄学,它分为内相关(即老师给出的范文与你文章内容的匹配度)及外相关(即你文章本身内容的前后联系程度)如果你的文章内容和行文思路与范文五五开,很大程度上会容易获得高分
或者你一个单词重重复复在文章里反复出现也可以获得高分
总的来说,通过计算机系统对文章给作文打分这种操作确实非常的反人类,文章这种东西,无论是中文还是英文,都应当充满了它本身的丰富多样的变化。通过程序设定好的框架,最终只是一个无聊的堆砌而已。不过对于中学阶段更加注重语法的学习过程来说,确实起到了他特定的作用,以上。