当前位置:
X-MOL 学术
›
Future Gener. Comput. Syst.
›
论文详情
Our official English website, www.x-mol.net, welcomes your
feedback! (Note: you will need to create a separate account there.)
PLangRec: Deep-learning model to predict the programming language from a single line of code
Future Generation Computer Systems ( IF 6.2 ) Pub Date : 2024-11-30 , DOI: 10.1016/j.future.2024.107640 Oscar Rodriguez-Prieto, Alejandro Pato, Francisco Ortin
Future Generation Computer Systems ( IF 6.2 ) Pub Date : 2024-11-30 , DOI: 10.1016/j.future.2024.107640 Oscar Rodriguez-Prieto, Alejandro Pato, Francisco Ortin
Programming language detection from source code excepts remains an active research field, which has already been addressed with machine learning and natural language processing. Identifying the language of short code snippets poses both benefits and challenges across various scenarios, such as embedded code analysis, forums, Q&A systems, search engines, source code repositories, and text editors. Existing approaches for language detection typically require multiple lines or even the entire file contents. In this article, we propose a character-level deep learning model designed to predict the programming language from a single line of code. To this aim, we construct a balanced dataset comprising 434.18 million instances across 21 languages, significantly exceeding the size of existing datasets by three orders of magnitude. Leveraging this dataset, we train a deep bidirectional recurrent neural network that achieves a 95.07% accuracy and macro-F1 score for a single-line code. To predict the programming language of multiple lines (e.g., code snippets) and entire files, we build a stacking ensemble meta-model that leverages our single-line model to efficiently recognize the language of multiple lines of code. Our system outperforms the state-of-the-art approaches not only for a single line of code, but also for snippets of 5 and 10 lines and whole files of source code. We also present PLangRec , an open-source language detection system that includes our trained models. PLangRec is freely available as a user-friendly web application, a web API, and a Python desktop program.
中文翻译:
PLangRec:从单行代码预测编程语言的深度学习模型
从源代码中检测编程语言仍然是一个活跃的研究领域,机器学习和自然语言处理已经解决了这个问题。识别短代码片段的语言在各种场景中既有好处也有挑战,例如嵌入式代码分析、论坛、问答系统、搜索引擎、源代码存储库和文本编辑器。现有的语言检测方法通常需要多行甚至整个文件内容。在本文中,我们提出了一个字符级深度学习模型,旨在从单行代码中预测编程语言。为此,我们构建了一个平衡的数据集,其中包含 21 种语言的 4.3418 亿个实例,大大超过了现有数据集的大小三个数量级。利用这个数据集,我们训练了一个深度双向递归神经网络,该网络实现了 95.07% 的准确率和单行代码的宏 F1 分数。为了预测多行(例如代码片段)和整个文件的编程语言,我们构建了一个堆叠集成元模型,该模型利用我们的单行模型来有效地识别多行代码的语言。我们的系统不仅在单行代码方面优于最先进的方法,而且在 5 行和 10 行的片段以及整个源代码文件中也优于最先进的方法。我们还介绍了 PLangRec,这是一个开源语言检测系统,其中包括我们经过训练的模型。PLangRec 可作为用户友好的 Web 应用程序、Web API 和 Python 桌面程序免费提供。
更新日期:2024-11-30
中文翻译:
PLangRec:从单行代码预测编程语言的深度学习模型
从源代码中检测编程语言仍然是一个活跃的研究领域,机器学习和自然语言处理已经解决了这个问题。识别短代码片段的语言在各种场景中既有好处也有挑战,例如嵌入式代码分析、论坛、问答系统、搜索引擎、源代码存储库和文本编辑器。现有的语言检测方法通常需要多行甚至整个文件内容。在本文中,我们提出了一个字符级深度学习模型,旨在从单行代码中预测编程语言。为此,我们构建了一个平衡的数据集,其中包含 21 种语言的 4.3418 亿个实例,大大超过了现有数据集的大小三个数量级。利用这个数据集,我们训练了一个深度双向递归神经网络,该网络实现了 95.07% 的准确率和单行代码的宏 F1 分数。为了预测多行(例如代码片段)和整个文件的编程语言,我们构建了一个堆叠集成元模型,该模型利用我们的单行模型来有效地识别多行代码的语言。我们的系统不仅在单行代码方面优于最先进的方法,而且在 5 行和 10 行的片段以及整个源代码文件中也优于最先进的方法。我们还介绍了 PLangRec,这是一个开源语言检测系统,其中包括我们经过训练的模型。PLangRec 可作为用户友好的 Web 应用程序、Web API 和 Python 桌面程序免费提供。