Spark机器学习AST比较

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

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

有什么建议吗?


回答:

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

  • 不同节点值的数量

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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