我正在尝试对从堆栈溢出中获取的源代码片段语料库进行分类。我正在探索各种技术,例如 Tf-Idf、带有 CNN 的 keras 嵌入层、bert 等。 由于源代码分类与普通文本分类问题有很大不同,因此我正在寻找一些最适合当前问题的技术。
到目前为止,我已经应用了 Tf-Idf,并且获得了 75% 左右的不错的准确率。当使用带有 keras 嵌入层的文本 CNN 时,我得到了 60%。接下来我打算实现bert相关的模型。 我也读过实现“code-bert”的论文,但它们仅限于 6-8 种语言。 我的数据集有 20 多种语言。 我想从根本上了解哪些技术最适合源代码。
有一些预先训练的词嵌入可用于对源代码进行分类,但它们可能无法涵盖您感兴趣的所有语言或领域。一些示例是:
这些模型基于迁移学习的思想,这意味着您可以使用少量标记数据根据您的特定任务和数据集对它们进行微调。但是,他们可能无法处理您在问题中可能面临的一些挑战,例如:
因此,哪种技术最适合源代码分类并没有明确的答案,因为这取决于您的数据、任务、目标和偏好。您可能需要尝试不同的模型、嵌入、超参数和评估方法,以找到问题的最佳解决方案。您可能还需要查阅有关源代码分析和自然语言处理的现有文献和研究,以获得更多见解和想法。以下是一些您可能会觉得有用的资源: