有一个关键的需求,可以自动为开发人员提供小任务生成代码。 Sackoverflow等网站通过在小片段中提供解决方案提供了一种简单的方式,该解决方案提供了对开发人员想要代码的任何任务问题的完整答案。自然语言处理和特别质疑答案系统对解决这些任务非常有帮助。在本文中,我们开发了一个双倍的深度学习模型:SEQ2SEQ和一个二进制分类器,它采用意图(在自然语言中)和Python中的代码片段。我们培养了SEQ2Seq模型中的意图和代码话语,在那里我们决定将隐藏层嵌入来自编码器的隐藏层的效果来表示intent,而且类似地使用解码器的隐藏层嵌入式代码序列。然后我们组合这些嵌入物,然后培训一个简单的二进制神经网络分类器模型,以预测来自SEQ2Seq模型的预测代码序列正确回答了意图。我们发现隐藏的状态层的嵌入式略高于来自构造词汇的常规标准嵌入。除了由简单的任务代码片段基对的STAQC数据库之外,我们还在Conala DataSet上试验了我们的测试。我们经验证明,与使用SEQ2Seq模型的隐藏状态上下文向量相比,使用Python中的代码片段使用其他预先培训的嵌入式基于上下文。
translated by 谷歌翻译
在过去的几年中,世界已转向多核和多核共享内存体系结构。结果,通过将共享内存并行化方案引入软件应用程序,越来越需要利用这些体系结构。 OpenMP是实现此类方案的最全面的API,其特征是可读接口。然而,由于平行共享内存的管理中普遍存在的陷阱,将OpenMP引入代码很具有挑战性。为了促进此任务的性能,多年来创建了许多源代码(S2S)编译器,任务是将OpenMP指令自动插入代码。除了对输入格式的鲁棒性有限外,这些编译器仍然无法在定位可行的代码和生成适当指令时获得令人满意的覆盖范围和精确度。在这项工作中,我们建议利用ML技术的最新进展,特别是自然语言处理(NLP),以完全替换S2S编译器。我们创建一个数据库(语料库),专门用于此目标。 Open-Opm包含28,000多个代码片段,其中一半包含OpenMP指令,而另一半根本不需要并行化。我们使用语料库来培训系统来自动对需要并行化的代码段进行分类,并建议单个OpenMP条款。我们为这些任务培训了几个名为Bragformer的变压器模型,并表明它们的表现优于统计训练的基线和自动S2S并行化编译器,这既可以分类OpenMP指令的总体需求,又要介绍私人和还原条款。我们的源代码和数据库可在以下网址获得:https://github.com/scientific-computing-lab-nrcn/pragformer。
translated by 谷歌翻译
自动源代码摘要是一种任务,它生成有关用于对这些代码实体的理解的方法和类别的用于方法和类的总结信息。已经提出了多种方法和技术在规范摘要中进行监督和无监督学习,但是,它们主要集中在为一段代码生成摘要。此外,很少有效利用非官方文件。本文提出了一种自动和新的方法,总结了堆栈溢出中讨论的Android API方法,以便我们认为这项研究中的非官方文档。我们的方法将API方法的名称作为输入,并基于该API方法的堆栈溢出讨论生成自然语言摘要。我们已经进行了一项调查,涉及16个Android开发人员,以评估我们自动生成的摘要的质量,并将它们与官方Android文档进行比较。我们的结果表明,虽然开发人员在普通方面找到官方文件更有用的虽然,所产生的摘要也具有竞争力,特别是用于提供实施细节,并且可以用作指导软件开发和维护任务中开发人员的补充来源。
translated by 谷歌翻译
上下文:堆栈溢出对于寻求编程问题答案的软件开发人员非常有帮助。先前的研究表明,越来越多的问题质量低,因此从潜在的答案者那里获得了更少的关注。 Gao等。提出了一个基于LSTM的模型(即BilstM-CC),以自动从代码片段中生成问题标题,以提高问题质量。但是,只有在问题主体中使用代码段无法为标题生成提供足够的信息,而LSTMS无法捕获令牌之间的远程依赖性。目的:本文提出了基于深度学习的新型模型CCBERT,旨在通过充分利用整个问题主体的双模式信息来增强问题标题生成的性能。方法:CCBERT遵循编码器范式范式,并使用Codebert将问题主体编码为隐藏的表示形式,堆叠的变压器解码器以生成预测的代币,以及附加的复制注意层来完善输出分布。编码器和解码器都执行多头自我注意操作,以更好地捕获远程依赖性。本文构建了一个数据集,该数据集包含大约200,000个高质量问题,该数据从Stack Overflow正式发布的数据中滤除,以验证CCBERT模型的有效性。结果:CCBERT优于数据集上的所有基线模型。对仅代码和低资源数据集进行的实验表明,CCBERT的优势性能较小。人类评估还显示了CCBERT关于可读性和相关标准的出色表现。
translated by 谷歌翻译
随着未来以数据为中心的决策,对数据库的无缝访问至关重要。关于创建有效的文本到SQL(Text2SQL)模型以访问数据库的数据有广泛的研究。使用自然语言是可以通过有效访问数据库(尤其是对于非技术用户)来弥合数据和结果之间差距的最佳接口之一。它将打开门,并在精通技术技能或不太熟练的查询语言的用户中引起极大的兴趣。即使提出或研究了许多基于深度学习的算法,在现实工作场景中使用自然语言来解决数据查询问题仍然非常具有挑战性。原因是在不同的研究中使用不同的数据集,这带来了其局限性和假设。同时,我们确实缺乏对这些提议的模型及其对其训练的特定数据集的局限性的彻底理解。在本文中,我们试图介绍过去几年研究的24种神经网络模型的整体概述,包括其涉及卷积神经网络,经常性神经网络,指针网络,强化学习,生成模型等的架构。我们还概述11个数据集,这些数据集被广泛用于训练Text2SQL技术的模型。我们还讨论了无缝数据查询中文本2SQL技术的未来应用可能性。
translated by 谷歌翻译
在本文中,我们解决了深入学习的软件漏洞自动修复问题。数据驱动漏洞修复的主要问题是已知确认漏洞的少数现有数据集仅由几千例组成。然而,培训深度学习模型通常需要数十万例的例子。在这项工作中,我们利用了错误修复任务和漏洞修复任务的直觉相关,并且可以传输来自错误修复的知识可以传输到修复漏洞。在机器学习界中,这种技术称为转移学习。在本文中,我们提出了一种修复名为Vreepair的安全漏洞的方法,该方法是基于转移学习。 vreepair首先在大型错误修复语料库上培训,然后在漏洞修复数据集上调整,这是一个较小的数量级。在我们的实验中,我们表明,仅在错误修复语料库上培训的模型可能已经修复了一些漏洞。然后,我们证明转移学习改善了修复易受攻击的C功能的能力。我们还表明,转移学习模型比具有去噪任务训练的模型更好,并在漏洞固定任务上进行微调。总而言之,本文表明,与在小型数据集上的学习相比,转移学习适用于修复C中的安全漏洞。
translated by 谷歌翻译
Machine Learning for Source Code (ML4Code) is an active research field in which extensive experimentation is needed to discover how to best use source code's richly structured information. With this in mind, we introduce JEMMA, an Extensible Java Dataset for ML4Code Applications, which is a large-scale, diverse, and high-quality dataset targeted at ML4Code. Our goal with JEMMA is to lower the barrier to entry in ML4Code by providing the building blocks to experiment with source code models and tasks. JEMMA comes with a considerable amount of pre-processed information such as metadata, representations (e.g., code tokens, ASTs, graphs), and several properties (e.g., metrics, static analysis results) for 50,000 Java projects from the 50KC dataset, with over 1.2 million classes and over 8 million methods. JEMMA is also extensible allowing users to add new properties and representations to the dataset, and evaluate tasks on them. Thus, JEMMA becomes a workbench that researchers can use to experiment with novel representations and tasks operating on source code. To demonstrate the utility of the dataset, we also report results from two empirical studies on our data, ultimately showing that significant work lies ahead in the design of context-aware source code models that can reason over a broader network of source code entities in a software project, the very task that JEMMA is designed to help with.
translated by 谷歌翻译
深学习方法,已经在诸如图像分类和自然语言处理领域中的成功应用,最近被应用到源代码分析过,由于免费提供源代码(例如,从开源软件库)的巨大数额。在这项工作中,我们阐述在国家的最先进的方法来使用有关其句法结构信息的源代码表示,我们适应它代表源的变化(即,提交)。我们使用这种表示安全相关的分类提交。因为我们的方法是使用迁移学习(也就是我们训练的一个“借口任务”是可用的丰富的标签数据的网络,然后我们使用这样的网络提交分类的目标任务,为此,少标记实例可用)我们研究了前培训使用两种不同的借口任务与随机初始化模型的网络的影响。我们的研究结果表明,通过利用代码语法跑赢基于令牌的表示得到的结构信息表示。此外,具有非常大的数据集上的松散的相关任务借口训练前时所获得的性能度量($> 10 ^ 6个$样品)上的更小的数据集训练前当超过($> 10 ^ 4 $样品)但对于一个借口任务更密切相关的目标任务。
translated by 谷歌翻译
源代码(MLONCODE)上的机器学习有望改变软件的交付方式。通过挖掘软件伪像之间的上下文和关系,mloncode通过代码自动生成,代码建议,代码自动标记和其他数据驱动的增强功能增强了软件开发人员的功能。对于许多任务中,代码的脚本级别表示足够,但是,在许多情况下,要考虑各种依赖关系和存储库结构的存储库级表示,例如,自动标记存储库具有主题或自动记录的存储库。代码等,用于计算存储库级表示的现有方法受(a)依赖代码的自然语言文档(例如,读书文件)(b)方法/脚本级表示的天真聚集,例如,通过串联或平均值。本文介绍了一个深度神经网络,该网络可直接从源代码中生成可公开可用的GitHub代码存储库的存储库嵌入。主题结合了一种注意机制,该机制将源代码,完整依赖关系图和脚本级别的文本信息投射到密集的存储库级表示中。为了计算存储库级别的表示,局部训练可以预测与存储库相关的主题,该主题是在公开可用的GitHub存储库数据集中,这些存储库与他们的地面真相主题标签一起爬行。我们的实验表明,局部计算的嵌入能够胜过多个基线,包括通过在存储库自动标记的任务下平均或串联来天真地结合方法级表示的基线。
translated by 谷歌翻译
收集与特定API方法相关的API示例,用法和提及在诸如堆栈溢出之类的场地上的讨论中不是一个微不足道的问题。它需要努力正确认识讨论是否指的是开发人员/工具正在搜索的API方法。线程的内容包括描述API方法在讨论中的参与和包含API调用的代码片段中的文本段落,可以参考给定的API方法。利用此观察,我们开发FacOS,一种特定于背景算法,可以在讨论中捕获段落和代码片段的语义和语法信息。FACOS将基于语法的单词的分数与来自Codebert的精细调整的预测模型的分数相结合。Facos在F1分数方面将最先进的方法击败了13.9%。
translated by 谷歌翻译
评论是源代码的重要组成部分,是文档的主要来源。这引起了人们对使用大量注释的兴趣训练或评估消耗或生产它们的工具,例如生成甲骨文,甚至是从注释中生成代码,或自动生成代码摘要。这项工作大部分对评论的结构和质量做出了强烈的假设,例如假设它们主要由适当的英语句子组成。但是,我们对这些用例的现有评论的实际质量知之甚少。评论通常包含在其他类型的文本中看不到的独特结构和元素,并且从中过滤或提取信息需要额外的谨慎。本文探讨了来自GitHub的840个最受欢迎的开源项目和Srilab数据集的8422个项目的Python评论的内容和质量,并且Na \“ Ive vs.深入过滤的影响都可以使用现有注释来用于使用现有注释。培训和评估产生评论的系统。
translated by 谷歌翻译
访问公共知识库中可用的大量信息可能对那些不熟悉的SPARQL查询语言的用户可能很复杂。SPARQL中自然语言提出的问题的自动翻译有可能克服这个问题。基于神经机翻译的现有系统非常有效,但在识别出识别出训练集的词汇(OOV)的单词中很容易失败。查询大型本体的时,这是一个严重的问题。在本文中,我们将命名实体链接,命名实体识别和神经计算机翻译相结合,以将自然语言问题的自动转换为SPARQL查询。我们凭经验证明,我们的方法比在纪念碑,QALD-9和LC-QUAD V1上运行实验,我们的方法比现有方法更有效,并且对OOV单词进行了更有效的,并且是现有的方法,这些方法是众所周知的DBPedia的相关数据集。
translated by 谷歌翻译
尽管不断努力提高代码搜索的有效性和效率,但仍未解决两个问题。首先,编程语言具有固有的牢固结构链接,并且代码的特征是文本表单将省略其中包含的结构信息。其次,代码和查询之间存在潜在的语义关系,跨序列对齐代码和文本是具有挑战性的,因此在相似性匹配期间,向量在空间上保持一致。为了解决这两个问题,在本文中,提出了一个名为CSSAM的代码搜索模型(代码语义和结构注意匹配)。通过引入语义和结构匹配机制,CSSAM有效提取并融合了多维代码功能。具体而言,开发了交叉和残留层,以促进代码和查询的高纬度空间比对。通过利用残差交互,匹配模块旨在保留更多的代码语义和描述性功能,从而增强了代码及其相应查询文本之间的附着力。此外,为了提高模型对代码固有结构的理解,提出了一个名为CSRG的代码表示结构(代码语义表示图),用于共同表示抽象语法树节点和代码的数据流。根据两个包含540K和330K代码段的公开可用数据集的实验结果,CSSAM在两个数据集中分别在获得最高的SR@1/5/10,MRR和NDCG@50方面大大优于基本线。此外,进行消融研究是为了定量衡量CSSAM每个关键组成部分对代码搜索效率和有效性的影响,这为改进高级代码搜索解决方案提供了见解。
translated by 谷歌翻译
我用Hunglish2语料库训练神经电脑翻译任务的模型。这项工作的主要贡献在培训NMT模型期间评估不同的数据增强方法。我提出了5种不同的增强方法,这些方法是结构感知的,这意味着而不是随机选择用于消隐或替换的单词,句子的依赖树用作增强的基础。我首先关于神经网络的详细文献综述,顺序建模,神经机翻译,依赖解析和数据增强。经过详细的探索性数据分析和Hunglish2语料库的预处理之后,我使用所提出的数据增强技术进行实验。匈牙利语的最佳型号达到了33.9的BLEU得分,而英国匈牙利最好的模型达到了28.6的BLEU得分。
translated by 谷歌翻译
我们提出了Pangu-Coder,这是一种仅预读的解码器语言模型,该模型采用pangu-alpha架构进行文本到代码生成,即给定自然语言问题描述的编程语言解决方案的合成。我们使用两阶段策略训练Pangu-Coder:第一阶段采用因果语言建模(CLM)来预先培训原始编程语言数据,而第二阶段则使用因果语言建模和掩盖语言建模(MLM)的组合培训目标,专注于文本到代码生成的下游任务,并培训松散的自然语言程序定义和代码功能。最后,我们讨论了pangu-coder-ft,该pander the是通过竞争性编程问题和代码与持续集成测试的结合进行了微调的。我们评估了pangu-coder,重点是它是否生成功能上正确的程序,并证明它在参加较小的上下文窗口和较少的数据培训的同时,它比诸如Codex之类的类似大小的模型(例如Codex)实现等效性或更好的性能。
translated by 谷歌翻译
Using a single model across various tasks is beneficial for training and applying deep neural sequence models. We address the problem of developing generalist representations of text that can be used to perform a range of different tasks rather than being specialised to a single application. We focus on processing short questions and developing an embedding for these questions that is useful on a diverse set of problems, such as question topic classification, equivalent question recognition, and question answering. This paper introduces QBERT, a generalist model for processing questions. With QBERT, we demonstrate how we can train a multi-task network that performs all question-related tasks and has achieved similar performance compared to its corresponding single-task models.
translated by 谷歌翻译
Code completion aims to help improve developers' productivity by suggesting the next code tokens from a given context. Various approaches have been proposed to incorporate abstract syntax tree (AST) information for model training, ensuring that code completion is aware of the syntax of the programming languages. However, existing syntax-aware code completion approaches are not on-the-fly, as we found that for every two-thirds of characters that developers type, AST fails to be extracted because it requires the syntactically correct source code, limiting its practicality in real-world scenarios. On the other hand, existing on-the-fly code completion does not consider syntactic information yet. In this paper, we propose PyCoder to leverage token types, a kind of lightweight syntactic information, which is readily available and aligns with the natural order of source code. Our PyCoder is trained in a multi-task training manner so that by learning the supporting task of predicting token types during the training phase, the models achieve better performance on predicting tokens and lines of code without the need for token types in the inference phase. Comprehensive experiments show that PyCoder achieves the first rank on the CodeXGLUE leaderboard with an accuracy of 77.12% for the token-level predictions, which is 0.43%-24.25% more accurate than baselines. In addition, PyCoder achieves an exact match of 43.37% for the line-level predictions, which is 3.63%-84.73% more accurate than baselines. These results lead us to conclude that token type information (an alternative to syntactic information) that is rarely used in the past can greatly improve the performance of code completion approaches, without requiring the syntactically correct source code like AST-based approaches do. Our PyCoder is publicly available on HuggingFace.
translated by 谷歌翻译
代码克隆是实现类似功能的代码段对。克隆检测是自动源代码理解的基本分支,在重构建议,窃检测和代码摘要中具有许多应用程序。克隆检测的一个特别有趣的案例是检测语义克隆,即具有相同功能但实现方面有显着差异的代码段。检测语义克隆的一种有希望的方法是对比度学习(CL),这是一种在计算机视觉中流行的机器学习范式,但尚未用于代码处理。我们的工作旨在评估最受欢迎的CL算法以及两个任务上的三个源代码表示形式。第一个任务是代码克隆检测,我们在包含104个算法的实现的POJ-104数据集上进行了评估。第二个任务是窃检测。为了评估此任务上的模型,我们介绍了CodeTransFormator,这是用于转换源代码的工具。我们使用它来创建一个基于竞争性编程解决方案模仿窃代码的数据集。我们为这两项任务培训了九个模型,并将其与现有的六种方法进行了比较,包括传统工具和现代培训的神经模型。我们评估的结果表明,提议的模型在每个任务中都具有多样性,但是基于图的模型的性能通常高于其他模型。在CL算法中,SIMCLR和SWAV带来更好的结果,而MoCo是最强大的方法。我们的代码和训练有素的模型可在https://doi.org/10.5281/zenodo.6360627,https://doi.org/10.5281/zenodo.5596345获得。
translated by 谷歌翻译
社交媒体的自杀意图检测是一种不断发展的研究,挑战了巨大的挑战。许多有自杀倾向的人通过社交媒体平台分享他们的思想和意见。作为许多研究的一部分,观察到社交媒体的公开职位包含有价值的标准,以有效地检测有自杀思想的个人。防止自杀的最困难的部分是检测和理解可能导致自杀的复杂风险因素和警告标志。这可以通过自动识别用户行为的突然变化来实现。自然语言处理技术可用于收集社交媒体交互的行为和文本特征,这些功能可以传递给特殊设计的框架,以检测人类交互中的异常,这是自杀意图指标。我们可以使用深度学习和/或基于机器学习的分类方法来实现快速检测自杀式思想。出于这种目的,我们可以采用LSTM和CNN模型的组合来检测来自用户的帖子的这种情绪。为了提高准确性,一些方法可以使用更多数据进行培训,使用注意模型提高现有模型等的效率。本文提出了一种LSTM-Incription-CNN组合模型,用于分析社交媒体提交,以检测任何潜在的自杀意图。在评估期间,所提出的模型的准确性为90.3%,F1分数为92.6%,其大于基线模型。
translated by 谷歌翻译
本教程展示了工作流程,将文本数据纳入精算分类和回归任务。主要重点是采用基于变压器模型的方法。平均长度为400个单词的车祸描述的数据集,英语和德语可用,以及具有简短财产保险索赔的数据集用来证明这些技术。案例研究应对与多语言环境和长输入序列有关的挑战。他们还展示了解释模型输出,评估和改善模型性能的方法,通过将模型调整到应用程序领域或特定预测任务。最后,该教程提供了在没有或仅有少数标记数据的情况下处理分类任务的实用方法。通过使用最少的预处理和微调的现成自然语言处理(NLP)模型的语言理解技能(NLP)模型实现的结果清楚地证明了用于实际应用的转移学习能力。
translated by 谷歌翻译