文体学(语言文体的统计分析)研究者—早已告诉文学创作是一个独有的、个人主义的过程。您自由选择的词汇、句法和语法都会留给痕迹。
例如,只要自动化工具有充足的培训数据可供使用,它们现在就可以精确地辨识论坛帖子的作者。但近期的研究指出,文体学也可以应用于人工语言样本,比如代码。事实证明,软件开发人员也不会有指纹留给。雷切尔·格林斯塔特(RachelGreenstadt)是美国德雷塞尔大学计算机科学的副教授。
艾林·卡利斯坎(AylinCaliskan)是格林斯塔特的前博士生、现任乔治·华盛顿大学助理教授。他们两人找到,代码和其他形式的文体传达一样,都是无法电子邮件的。
在周五的DefCon黑客大会上,这两位科学家将展出他们的多项研究。在研究中,他们利用机器学习技术对代码样本的作者展开去电子邮件化操作者。例如,他们的工作有可能在抄袭纠纷中发挥作用,但同时它也有隐私问题,特别是在是对成千上万向世界贡献进源代码的开发者而言。
如何对代码展开去电子邮件化?下面用一个例子对研究人员如何用于机器学习来找到代码的作者展开非常简单说明。首先,他们设计的算法辨识了在一些代码样本中寻找的所有特征,有很多有所不同的特征。
看看自然语言中不存在的每一个方面:有你自由选择的单词,你把它们人组在一起的方式,句子长度,等等。格林斯塔特和卡利斯坎随后增大了功能范围,使其只包括了确实区别于其他开发者的功能,将列表从数十万缩减到约50个。
研究人员不倚赖底层特性,比如代码的格式化方式。忽略,它们创立“抽象化语法树根”来体现代码的底层结构,而非它的给定组件。他们的技巧类似于优先排序某人的句子结构,而不是在于他们否凹痕一个段落的每一行。
这个方法还必须一些别的工作来教一个算法,让它告诉什么时候应当找到另一个代码示例。如果一个随机的GitHub账户插入并公布了一个代码片段,格林斯塔特和卡利斯坎就不一定需要辨识背后的人,因为他们只有一个样本可以用于。
他们可能会说道,这是一个他们从未见过的代码开发人员。然而,格林斯塔特和卡利斯坎并不需要把一生的时间都花上在代码上,他们只必须几个较短的样本。例如,在2017年的一篇论文中,卡利斯坎、格林斯塔特和另外两名研究人员证明,即使是存储库站点GitHub上的部分段代码,也不足以区分出有各个编码者之间的区别,而且精确度非常之低。
最令人印象深刻印象的是,卡利斯坎和其他研究团队在另一篇论文中回应,要用他们编译器的二进制代码就可以去电子邮件化程序员。在开发人员撰写完了一段代码后,一个取名为编译器的程序将它转换成一系列的1和0,机器可以加载这些1和0,称作二进制。
对人类来说,这真是就是胡说八道。卡利斯坎和与她一起工作的其他研究人员可以将二进制分解成返C++编程语言,同时保有开发人员独有风格的元素。假设您写出了一篇论文,用于谷歌翻译成将其切换为另一种语言。虽然文本看上去有可能几乎有所不同,但是您撰写的方式元素依然映射到了语法之类的特性中。
代码也是如此。“风格被保有了下来,”卡利斯坎说道。“当文本是以个人自学为基础时,就不会有很强的风格特征。”为了展开二进制实验,卡利斯坎和其他研究人员用于了谷歌CodeJam年度编程挑战赛的代码样本。
机器学习算法正确地辨识出有了100名个体程序员,而要用了96%的时间。每个人用于8个代码样本。即使将样本量不断扩大到600名程序员,该算法仍能在83%的时间内精确辨识。
对抄袭和隐私的影响格林斯塔特和卡利斯坎说道,他们的工作可以用来辨别编程学生否有剽窃不道德,或者开发者否违背了雇用合约中的非竞争条款。安全性研究人员可能会用于它来协助确认创立一种特定类型恶意软件的有可能开发人员。更加令人担忧的是,一个威权政府可能会用于去电子邮件化技术来辨识背后的个人,比如说,一个回避审查的工具。这项研究还对那些为开源项目做到贡献的开发人员有隐私方面的影响,尤其是如果他们仍然用于完全相同的GitHub账户的话。
格林斯塔特说道:“人们应当意识到,在这种情况下,要百分之百地隐蔽自己的身份是十分艰难的。”例如,格林斯塔特和卡利斯坎找到,一些现成的误解方法,即软件工程师用来使代码更加简单、安全性更高的工具,并无法顺利地隐蔽开发人员的独有风格。然而,研究人员说道,在未来,程序员有可能需要用于更加简单的方法隐蔽他们的风格。“我显然指出,只要我们之后展开下去,将不会找到一件事,那就是什么样的误解方法需要掩饰这些东西。
”格林斯塔特说道:“我不坚信,最后找到的结论是你做到的每件事都是有迹可循的。无论如何,我期望不是这样。”例如,在另一篇论文中,由华盛顿大学的露西·西姆科(LucySimko)领导的团队找到,程序员撰写代码的目的可以是让算法坚信自身是别的程序员撰写出来的。
该团队找到,即使开发人员没专门训练过如何创立赝品,他们也可能会对自己的“编码亲笔签名”展开戏仿。未来的研究方向格林斯塔特和卡利斯坎还找到了许多关于编程本质的有意思看法。例如,他们找到经验丰富的开发人员比新手更容易辨识代码。
你就越娴熟,你分担的工作就就越独有。部分原因有可能是因为初级程序员常常从StackOverflow这样的网站复制粘贴代码解决方案。某种程度,他们找到,解决问题更加艰难问题的代码示例也更容易属性化。
通过用于62名程序员构成的样本,这62名程序员每个人都解决问题了7个“非常简单”的问题,研究人员在90%的时间里都需要将他们的工作去电子邮件化。当研究人员用于7个“艰难”问题样本时,他们的准确率上升到95%。在未来,格林斯塔特和卡利斯坎想理解其他因素是如何影响一个人的编码风格的,比如当同一个的组织的成员在一个项目上合作时会再次发生什么。
他们还想要探究一些问题,比如来自有所不同国家的人否不会以有所不同的方式编码。例如,在一项可行性研究中,他们找到他们可以区分加拿大和中国开发者撰写的代码样本,准确率多达90%。还有一个问题,完全相同的属性方法否可以在有所不同的编程语言中以标准化的方式用于。
目前,研究人员特别强调,尽管到目前为止他们的方法早已被证明是有效地的,但是去电子邮件化代码依然是一个谜样的过程。“我们仍在希望弄清楚哪些是确实可以属性简化的,哪些不是。”格林斯塔特说道:“有充足的理由证明,这些应当引发注目,但我期望这会造成任何人都不公开发表意见的差劲情况再次发生。
本文关键词:【,26888,开元,棋,官方网站,】,匿名,代码,根本,26888开元棋官方网站
本文来源:26888开元棋官方网站-www.hbcbwdz.cn