相似度报告上的诚信标记:隐藏文字与被替换的字符
报告上还有第二个标签页,和你的文本匹配了多少完全无关。在你把一份即将提交的稿子交给任何工具之前,值得先搞清楚它。
HumanPen 团队
· 7 分钟
先说结论
相似度报告上有一个和百分比分开的 Flags(标记)标签页。它标的是两类有文档记载的手法:隐藏文字——白底白字、看不见的引号——以及被替换的字符,也就是把字母换成别的字母表里长得一样的那些。文档写明,这类替身字符在扫描前会被自动换回去,所以相似度该匹配还是会匹配上。一条标记明确不等于认定你有问题,但它确实会在你的提交件上放一个红色记号,请人去那里多看两眼。
Flags 标签页是什么
文档用一句话说明了它:"Turnitin's algorithms look deeply at a document for any inconsistencies that would set it apart from a normal submission. If we notice something strange, we Flag it for you to review."(我们的算法会深入查看文档,找出任何让它区别于正常提交件的不一致之处。如果发现异常,我们会把它标记出来供你审阅。)
一旦检出,提交件上方的 Flags 标签旁会出现一个数字——只有一类标记时是 1,两类都有时是 2。点开是一个待审诚信标记面板,而在文档正文里则会看到 "a red flag with a number inside indicating the flag type and red boxes around all suspicious text related to that flag."(一面带数字的红旗,数字表示标记类型,并在与该标记相关的所有可疑文字外画上红框。)
那句限定就写在同一页上,而且它是双向起作用的:"A flag is not necessarily an indicator of a problem. However, we recommend you focus your attention there for further review."(一条标记不一定意味着存在问题。不过我们建议你把注意力集中在那里做进一步审阅。)
所以它不是一项指控。它是在你稿子的某一部分外面画了个红框,同时告诉审阅的人:就盯着这一块多看。
被替换的字符,以及这招为什么会失败两次
这一节值得慢慢读,因为这种手法最有可能藏在某个工具里,而不是由人一个个敲进去的。
"Some characters in different alphabets can look similar enough that to the naked eye, it is difficult, if not impossible, to tell them apart."(不同字母表里的某些字符长得足够像,肉眼很难甚至不可能分辨。)一个渲染出来和拉丁字母一模一样的西里尔字符,塞进一个单词中间,就能打断匹配引擎正在找的那串字符,而页面看上去毫无异样。
文档给出的应对有两半,而第一半是没人提的:
"Turnitin automatically swaps these characters out when scanning a submission so they will not affect the Similarity Report. However, by replacing characters, the intent is to try and interrupt a similarity match."(我们在扫描提交件时会自动把这些字符换回去,因此它们不会影响相似度报告。不过,替换字符这个动作本身,意图就是试图打断相似度匹配。)
也就是说,替换在比对之前就被还原了——该匹配的照样匹配——并且这个尝试本身被提成一条标记。这种手法既没有降低它想降的那个数字,还额外添了一个原本不存在的记号。
这是很少见的、能带着出处而不是凭观点说出来的一句话:一种有文档记载的绕过手法,被文档记载着不管用。
为什么这是一个关于工具的问题,不是关于人的
绝大多数作者不会真的坐下来,每隔三个词就粘一个西里尔字母 о 进去。但一段程序会——无声无息、一秒钟、整篇稿子铺满——而你看不出来,因为这种手法存在的全部前提就是它渲染出来一模一样。
所以在把文件交给任何东西之前,该问的是这么一个问题:拿回来的东西里,有没有交出去的时候没有的字符?
这件事不需要任何特殊工具就能查。不过先把那个听起来很显然、实际不成立的查法排除掉。
数某个常用字母出现了多少次,什么也说明不了。改写往往会让文本变长,字母数跟着一起涨。在我们自己的改写前后文件上,纯拉丁字母 "a" 从 4,631 变成 5,092,"e" 从 6,970 变成 8,005,而全程没有任何一个字符被替换过。数字母、发现变多了,你唯一学到的事情是:文档变长了。
该比的不是次数,是种类。把你发出去的那份文件和拿回来的那份各自导出纯文本,分别列出里面出现过的不重复字符,然后看第二份名单里有没有第一份里没有的。长得像拉丁字母的西里尔字母和希腊字母。零宽空格。软连字符。次数变化是正常的;出现一个你文件里从来没有过的字符,不正常。
还有两点关于「后果落在谁身上」的结构性事实。标记落在提交件上,而提交件上写的是你的名字。至于那个塞进字符的工具,报告被人读的时候它不在场。
我们对你的字符做什么、不做什么
我们就在这种手法所属的那个品类里,所以老实的做法是把它挑明,而不是让它含混过去。
HumanPen 改写的是句子。它不插入不可见字符,不把字母换成别的字母表里的替身,也不把文字设成白色。这么做没有意义:上面那份文档说了,替换在匹配之前就被还原,路过时还会被标出来——所以这类手法唯一能稳定产出的东西,就是你稿子上的一个红框。
发这篇之前,我们把上面那套「比对字符种类」的办法跑在了自己的输出上,四对改写前后的文件。每一对里,输出中出现过的不重复字符集合都是输入集合的子集。没有新增,没有西里尔,没有希腊,没有任何零宽字符。非 ASCII 字符的数量不升反降:某个文件里长破折号从 58 个降到 13 个,弯撇号从 41 个降到 6 个。我们也验了一下这个比对能不能看见它要找的东西——往输出的一份副本里种进一个西里尔 "о" 和一个零宽空格,同一段代码把两个都列了出来。
这些是我们自己的文件,语料我们不公开,所以请把数字当成我们的、把过程当成你的。拿你自己的那一对文件跑一遍。包括跑在我们交还给你的东西上。
常见问题
出现标记是不是意味着我被指控了? 不是。文档写明一条标记 "is not necessarily an indicator of a problem"(不一定意味着存在问题),同时也建议审阅者把注意力放在那里。它是一个「请看这里」的提示,不是一项认定。
替身字符能把相似度降下来吗? 按文档不能。文档说这些字符在扫描提交件时会被自动换掉,因此不会影响相似度报告。而这个尝试本身还会被提成一条标记。
一共有几类标记? 有文档的是两类——隐藏文字和被替换的字符——标签页上显示 1 还是 2,取决于检出了几类。
提交之前我自己能查吗? 通过报告不行,报告是在审阅方那边生成的。但你可以检查文件本身:分别列出你发出去那一版和拿回来那一版里出现过的不重复字符,看第二份里有没有第一份里没有的。别改成数字母:改写会让文本变长,字母数自己就会涨。另外也查一下有没有被设成白色、或与背景同色的文字。
继续阅读