Spark机器学习AST比较

我对机器学习是新手,但我想研究是否可以使用机器学习来比较两个源代码的抽象语法树(AST),以判断它们是否相似。

理想情况下,可以使用某个数据集进行训练,然后比较任意两个给定的AST来找出它们的相似之处。

有什么建议吗?


回答:

看起来你期望机器学习算法能够承担起发现两个AST之间相对“距离”的重任。这一点不太可能。相反,你可以考虑两个树的整体结构:它们在树的每一层是否具有相似的节点数量。如果它们确实如此——至少在树的主要部分——那么你可能希望定义两种“距离度量”方法中的一种来比较两个树:

  • 不同节点值的数量

  • 节点值的相对差异——也许是传统的Levenshtein距离……但更可能是理解特定语言语义的比较,以查看它们有多相似。例如,能够理解两个结构代表相同的语句,但可能存在不重要的空白或其他格式差异。或者可能是不同的变量名但相同的语义。

  • 另一个额外的检查可能是定义有多少子树是相同的。然后对于不同的子树,定义一个空间度量,能够仅针对该子树找到结构上的相似性/差异

总结是:“整个问题没有现成的解决方案——但你可以利用现有的想法/算法来处理特定的局部情况”。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注