When designing a new API for a large project, developers need to make smart design choices so that their code base can grow sustainably. To ensure that new API components are well designed, developers can learn from existing API components. However, the lack of standardized method for comparing API designs makes this learning process time-consuming and difficult. To address this gap we developed the API-Spector, to the best of our knowledge one of the first API-to-API specification recommendation engines. API-Spector retrieves relevant specification components written in OpenAPI (a widely adopted language used to describe web APIs). API-Spector presents several significant contributions, including: (1) novel methods of processing and extracting key information from OpenAPI specifications, (2) innovative feature extraction techniques that are optimized for the highly technical API specification domain, and (3) a novel log-linear probabilistic model that combines multiple signals to retrieve relevant and high quality OpenAPI specification components given a query specification. We evaluate API-Spector in both quantitative and qualitative tasks and achieve an overall of 91.7% recall@1 and 56.2% F1, which surpasses baseline performance by 15.4% in recall@1 and 3.2% in F1. Overall, API-Spector will allow developers to retrieve relevant OpenAPI specification components from a public or internal database in the early stages of the API development cycle, so that they can learn from existing established examples and potentially identify redundancies in their work. It provides the guidance developers need to accelerate development process and contribute thoughtfully designed APIs that promote code maintainability and quality.
translated by 谷歌翻译
机器学习源代码(MLONCODE)是一项流行的研究领域,该研究领域是由大规模代码存储库的可用性和开发挖掘源代码的强大概率和深度学习模型驱动的流行研究领域。代码到代码建议是MLONCODE中的任务,旨在推荐相关的,不同和简洁的代码片段,这些代码代码代码代码代码段可以在其开发环境(IDE)中使用开发人员编写的代码扩展。代码代码推荐引擎通过减少IDE切换和增加代码重用,保持提高开发人员生产力的承诺。现有的代码代码推荐引擎不会优雅地扩展到大的CodeBases,在代码存储库大小增加时,展示查询时间的线性增长。此外,现有的代码代码推荐引擎未能考虑排名函数中的代码存储库的全局统计信息,例如代码片段长度的分发,导致子最优检索结果。我们通过\ emph {senatus}来解决这两个弱点,这是一个新的代码代码推荐引擎。在SeNatus的核心是\ emph {de-skew} lsh一个新的局部敏感散列(lsh)算法,其索引快速(子线性时间)检索数据,同时使用新颖的抽象语法抵消片段长度分布中的偏差基于树的特征评分和选择算法。我们通过自动评估和专家开发人员用户学习评估SENATU,并发现该建议具有比竞争基线更高的质量,同时实现更快的搜索。例如,在CodeSearchNet DataSet上,我们显示SeNatus通过6.7 \%F1提高性能,并且与Facebook Aroma对代码到代码建议的任务相比,Query Time 16x更快。
translated by 谷歌翻译
收集与特定API方法相关的API示例,用法和提及在诸如堆栈溢出之类的场地上的讨论中不是一个微不足道的问题。它需要努力正确认识讨论是否指的是开发人员/工具正在搜索的API方法。线程的内容包括描述API方法在讨论中的参与和包含API调用的代码片段中的文本段落,可以参考给定的API方法。利用此观察,我们开发FacOS,一种特定于背景算法,可以在讨论中捕获段落和代码片段的语义和语法信息。FACOS将基于语法的单词的分数与来自Codebert的精细调整的预测模型的分数相结合。Facos在F1分数方面将最先进的方法击败了13.9%。
translated by 谷歌翻译
源代码(MLONCODE)上的机器学习有望改变软件的交付方式。通过挖掘软件伪像之间的上下文和关系,mloncode通过代码自动生成,代码建议,代码自动标记和其他数据驱动的增强功能增强了软件开发人员的功能。对于许多任务中,代码的脚本级别表示足够,但是,在许多情况下,要考虑各种依赖关系和存储库结构的存储库级表示,例如,自动标记存储库具有主题或自动记录的存储库。代码等,用于计算存储库级表示的现有方法受(a)依赖代码的自然语言文档(例如,读书文件)(b)方法/脚本级表示的天真聚集,例如,通过串联或平均值。本文介绍了一个深度神经网络,该网络可直接从源代码中生成可公开可用的GitHub代码存储库的存储库嵌入。主题结合了一种注意机制,该机制将源代码,完整依赖关系图和脚本级别的文本信息投射到密集的存储库级表示中。为了计算存储库级别的表示,局部训练可以预测与存储库相关的主题,该主题是在公开可用的GitHub存储库数据集中,这些存储库与他们的地面真相主题标签一起爬行。我们的实验表明,局部计算的嵌入能够胜过多个基线,包括通过在存储库自动标记的任务下平均或串联来天真地结合方法级表示的基线。
translated by 谷歌翻译
尽管不断努力提高代码搜索的有效性和效率,但仍未解决两个问题。首先,编程语言具有固有的牢固结构链接,并且代码的特征是文本表单将省略其中包含的结构信息。其次,代码和查询之间存在潜在的语义关系,跨序列对齐代码和文本是具有挑战性的,因此在相似性匹配期间,向量在空间上保持一致。为了解决这两个问题,在本文中,提出了一个名为CSSAM的代码搜索模型(代码语义和结构注意匹配)。通过引入语义和结构匹配机制,CSSAM有效提取并融合了多维代码功能。具体而言,开发了交叉和残留层,以促进代码和查询的高纬度空间比对。通过利用残差交互,匹配模块旨在保留更多的代码语义和描述性功能,从而增强了代码及其相应查询文本之间的附着力。此外,为了提高模型对代码固有结构的理解,提出了一个名为CSRG的代码表示结构(代码语义表示图),用于共同表示抽象语法树节点和代码的数据流。根据两个包含540K和330K代码段的公开可用数据集的实验结果,CSSAM在两个数据集中分别在获得最高的SR@1/5/10,MRR和NDCG@50方面大大优于基本线。此外,进行消融研究是为了定量衡量CSSAM每个关键组成部分对代码搜索效率和有效性的影响,这为改进高级代码搜索解决方案提供了见解。
translated by 谷歌翻译
使用计算笔记本(例如,Jupyter Notebook),数据科学家根据他们的先前经验和外部知识(如在线示例)合理化他们的探索性数据分析(EDA)。对于缺乏关于数据集或问题的具体了解的新手或数据科学家,有效地获得和理解外部信息对于执行EDA至关重要。本文介绍了eDassistant,一个jupyterlab扩展,支持EDA的原位搜索示例笔记本电脑和有用的API的推荐,由搜索结果的新颖交互式可视化供电。代码搜索和推荐是由最先进的机器学习模型启用的,培训在线收集的EDA笔记本电脑的大型语料库。进行用户学习,以调查埃迪卡斯特和数据科学家的当前实践(即,使用外部搜索引擎)。结果证明了埃迪斯坦特的有效性和有用性,与会者赞赏其对EDA的顺利和环境支持。我们还报告了有关代码推荐工具的几种设计意义。
translated by 谷歌翻译
语义代码搜索是关于为给定的自然语言查询查找语义相关的代码片段。在最先进的方法中,代码和查询之间的语义相似度被量化为它们在共享矢量空间中的表示的距离。在本文中,为了改进向量空间,我们在AST的简化形式中引入树序列化方法,并为代码数据构建多模式表示。我们使用大规模和多语言:CodeSearchNet的单个语料库进行广泛的实验。我们的结果表明,我们的树序列化表示和多模阶学习模型都提高了代码搜索的性能。最后,我们定义了面向直观的量化指标,面向代码数据的语义和句法信息的完整性,以帮助了解实验结果。
translated by 谷歌翻译
例如,查询是一个众所周知的信息检索任务,其中由用户选择文档作为搜索查询,目标是从大集合中检索相关文档。但是,文档通常涵盖主题的多个方面。要解决此方案,我们将通过示例介绍面位查询的任务,其中用户还可以指定除输入查询文档之外的更精细的粗体方面。我们专注于在科学文献搜索中的应用。我们设想能够沿着专门选择的修辞结构元素作为对此问题的一种解决方案来检索类似于查询科学纸的科学论文。在这项工作中,我们称之为方面的修辞结构元素,表明了科学论文的目标,方法或结果。我们介绍并描述了一个专家注释的测试集合,以评估培训的型号以执行此任务。我们的测试收集包括一个不同的50套英文查询文件,从计算语言学和机器学习场所绘制。我们仔细遵循TREC用于深度-K池(k = 100或250)使用的注释指南,结果数据收集包括具有高注释协议的分级相关性分数。在我们的数据集中评估的最先进模型显示出进一步的工作中的显着差距。可以在此处访问我们的数据集:https://github.com/iesl/csfcube
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 谷歌翻译
反向工程师受益于二进制中的标识符(例如函数名称)的存在,但通常将其删除以释放。训练机器学习模型自动预测功能名称是有希望的,但从根本上讲很难:与自然语言中的单词不同,大多数函数名称仅出现一次。在本文中,我们通过引入极端功能标签(XFL)来解决此问题,这是一种极端的多标签学习方法,可为二进制功能选择适当的标签。 XFL将函数名称分为代币,将每个功能视为具有自然语言标记文本的问题的信息标签。我们将二进制代码的语义与通过dexter进行标签,这是一种新颖的函数,将基于静态分析的特征与来自呼叫图的本地上下文和整个二进制的全局上下文相结合。我们证明,XFL/Dexter在Debian Project的10,047个二进制数据集上的功能标签上优于最新技术,获得了83.5%的精度。我们还研究了XFL与文献中的替代二进制嵌入的组合,并表明Dexter始终为这项任务做得最好。结果,我们证明了二进制函数标记可以通过多标签学习有效地措辞,并且二进制函数嵌入得益于包括明确的语义特征。
translated by 谷歌翻译
链接的开放数据实践导致了过去十年中网络上结构化数据的显着增长。这样的结构化数据以机器可读的方式描述了现实世界实体,并为自然语言处理领域的研究创造了前所未有的机会。但是,缺乏有关如何使用此类数据,哪种任务以及它们在多大程度上对这些任务有用的研究。这项工作着重于电子商务领域,以探索利用此类结构化数据来创建可能用于产品分类和链接的语言资源的方法。我们以RDF N四分之一的形式处理数十亿个结构化数据点,以创建数百万个与产品相关的语料库单词,后来以三种不同的方式用于创建语言资源:培训单词嵌入模型,继续预训练类似于Bert的语言模型和训练机器翻译模型,这些模型被用作生成产品相关的关键字的代理。我们对大量基准测试的评估表明,嵌入单词是提高这两个任务准确性的最可靠和一致的方法(在某些数据集中,宏观 - 平均F1中最高6.9个百分点)。但是,其他两种方法并不那么有用。我们的分析表明,这可能是由于许多原因,包括结构化数据中的偏置域表示以及缺乏词汇覆盖范围。我们分享我们的数据集,并讨论如何将我们所学到的经验教训朝着这一方向介绍未来的研究。
translated by 谷歌翻译
在过去的几十年中,研究人员已经付出了许多努力,调查用于排名在信息检索过程中检索到的查询结果的排名技术,或在推荐系统中对推荐产品进行排名。在该项目中,我们旨在调查搜索,排名以及建议技术,以帮助实现大学学术界搜索平台。与通常的信息检索方案不同,在我们的情况下,存在许多基础真理排名数据,我们对学术界排名的基础真相知识有限。例如,考虑到一些搜索查询,我们只知道一些高度相关的研究人员,因此应该排名最高,对于其他一些搜索查询,我们不知道应该将哪些研究人员排名最高。有限的地面真相数据使一些常规的排名技术和评估指标变得不可行,这是我们在本项目中面临的巨大挑战。该项目可以在很大程度上增强用户的学术搜索经验,有助于实现一个学术搜索平台,其中包括研究人员,出版物和研究信息领域,这不仅对大学学院,而且对学生的研究经验都有益。
translated by 谷歌翻译
排名模型是信息检索系统的主要组成部分。排名的几种方法是基于传统的机器学习算法,使用一组手工制作的功能。最近,研究人员在信息检索中利用了深度学习模型。这些模型的培训结束于结束,以提取来自RAW数据的特征来排序任务,因此它们克服了手工制作功能的局限性。已经提出了各种深度学习模型,每个模型都呈现了一组神经网络组件,以提取用于排名的特征。在本文中,我们在不同方面比较文献中提出的模型,以了解每个模型的主要贡献和限制。在我们对文献的讨论中,我们分析了有前途的神经元件,并提出了未来的研究方向。我们还显示文档检索和其他检索任务之间的类比,其中排名的项目是结构化文档,答案,图像和视频。
translated by 谷歌翻译
上下文:堆栈溢出对于寻求编程问题答案的软件开发人员非常有帮助。先前的研究表明,越来越多的问题质量低,因此从潜在的答案者那里获得了更少的关注。 Gao等。提出了一个基于LSTM的模型(即BilstM-CC),以自动从代码片段中生成问题标题,以提高问题质量。但是,只有在问题主体中使用代码段无法为标题生成提供足够的信息,而LSTMS无法捕获令牌之间的远程依赖性。目的:本文提出了基于深度学习的新型模型CCBERT,旨在通过充分利用整个问题主体的双模式信息来增强问题标题生成的性能。方法:CCBERT遵循编码器范式范式,并使用Codebert将问题主体编码为隐藏的表示形式,堆叠的变压器解码器以生成预测的代币,以及附加的复制注意层来完善输出分布。编码器和解码器都执行多头自我注意操作,以更好地捕获远程依赖性。本文构建了一个数据集,该数据集包含大约200,000个高质量问题,该数据从Stack Overflow正式发布的数据中滤除,以验证CCBERT模型的有效性。结果:CCBERT优于数据集上的所有基线模型。对仅代码和低资源数据集进行的实验表明,CCBERT的优势性能较小。人类评估还显示了CCBERT关于可读性和相关标准的出色表现。
translated by 谷歌翻译
代码搜索目标是根据自然语言查询检索相关的代码片段,以提高软件生产力和质量。但是,由于源代码和查询之间的语义间隙,自动代码搜索是具有挑战性的。大多数现有方法主要考虑嵌入的顺序信息,其中文本背后的结构信息不完全考虑。在本文中,我们设计了一个名为GraphsearchNet的新型神经网络框架,通过共同学习源代码和查询的富集语义来启用有效和准确的源代码搜索。具体地,我们建议将源代码和查询编码为两个图,其中双向GGNN以捕获图表的本地结构信息。此外,我们通过利用有效的多主题来增强BigGNN,以补充BigGNN错过的全球依赖。关于Java和Python数据集的广泛实验说明了GraphSearchNet优于当前最先进的工作原位。
translated by 谷歌翻译
Intelligently extracting and linking complex scientific information from unstructured text is a challenging endeavor particularly for those inexperienced with natural language processing. Here, we present a simple sequence-to-sequence approach to joint named entity recognition and relation extraction for complex hierarchical information in scientific text. The approach leverages a pre-trained large language model (LLM), GPT-3, that is fine-tuned on approximately 500 pairs of prompts (inputs) and completions (outputs). Information is extracted either from single sentences or across sentences in abstracts/passages, and the output can be returned as simple English sentences or a more structured format, such as a list of JSON objects. We demonstrate that LLMs trained in this way are capable of accurately extracting useful records of complex scientific knowledge for three representative tasks in materials chemistry: linking dopants with their host materials, cataloging metal-organic frameworks, and general chemistry/phase/morphology/application information extraction. This approach represents a simple, accessible, and highly-flexible route to obtaining large databases of structured knowledge extracted from unstructured text. An online demo is available at http://www.matscholar.com/info-extraction.
translated by 谷歌翻译
学术研究是解决以前从未解决过的问题的探索活动。通过这种性质,每个学术研究工作都需要进行文献审查,以区分其Novelties尚未通过事先作品解决。在自然语言处理中,该文献综述通常在“相关工作”部分下进行。鉴于研究文件的其余部分和引用的论文列表,自动相关工作生成的任务旨在自动生成“相关工作”部分。虽然这项任务是在10年前提出的,但直到最近,它被认为是作为科学多文件摘要问题的变种。然而,即使在今天,尚未标准化了自动相关工作和引用文本生成的问题。在这项调查中,我们进行了一个元研究,从问题制定,数据集收集,方法方法,绩效评估和未来前景的角度来比较相关工作的现有文献,以便为读者洞察到国家的进步 - 最内容的研究,以及如何进行未来的研究。我们还调查了我们建议未来工作要考虑整合的相关研究领域。
translated by 谷歌翻译
Multiple choice questions (MCQs) are widely used in digital learning systems, as they allow for automating the assessment process. However, due to the increased digital literacy of students and the advent of social media platforms, MCQ tests are widely shared online, and teachers are continuously challenged to create new questions, which is an expensive and time-consuming task. A particularly sensitive aspect of MCQ creation is to devise relevant distractors, i.e., wrong answers that are not easily identifiable as being wrong. This paper studies how a large existing set of manually created answers and distractors for questions over a variety of domains, subjects, and languages can be leveraged to help teachers in creating new MCQs, by the smart reuse of existing distractors. We built several data-driven models based on context-aware question and distractor representations, and compared them with static feature-based models. The proposed models are evaluated with automated metrics and in a realistic user test with teachers. Both automatic and human evaluations indicate that context-aware models consistently outperform a static feature-based approach. For our best-performing context-aware model, on average 3 distractors out of the 10 shown to teachers were rated as high-quality distractors. We create a performance benchmark, and make it public, to enable comparison between different approaches and to introduce a more standardized evaluation of the task. The benchmark contains a test of 298 educational questions covering multiple subjects & languages and a 77k multilingual pool of distractor vocabulary for future research.
translated by 谷歌翻译
两个关键假设塑造了排名检索的通常视图:(1)搜索者可以为他们希望看到的文档中的疑问选择单词,并且(2)排名检索的文档就足以,因为搜索者将足够就足够了能够认识到他们希望找到的那些。当要搜索的文档处于搜索者未知的语言时,既不是真的。在这种情况下,需要跨语言信息检索(CLIR)。本章审查了艺术技术的交流信息检索,并概述了一些开放的研究问题。
translated by 谷歌翻译
评论是源代码的重要组成部分,是文档的主要来源。这引起了人们对使用大量注释的兴趣训练或评估消耗或生产它们的工具,例如生成甲骨文,甚至是从注释中生成代码,或自动生成代码摘要。这项工作大部分对评论的结构和质量做出了强烈的假设,例如假设它们主要由适当的英语句子组成。但是,我们对这些用例的现有评论的实际质量知之甚少。评论通常包含在其他类型的文本中看不到的独特结构和元素,并且从中过滤或提取信息需要额外的谨慎。本文探讨了来自GitHub的840个最受欢迎的开源项目和Srilab数据集的8422个项目的Python评论的内容和质量,并且Na \“ Ive vs.深入过滤的影响都可以使用现有注释来用于使用现有注释。培训和评估产生评论的系统。
translated by 谷歌翻译