apache-spark - Spark 机器学习 AST 比较

标签 apache-spark machine-learning apache-spark-mllib apache-spark-ml

我是机器学习新手,但正在尝试研究是否可以使用机器学习来比较源代码的两个 AST(抽象语法树),以找出它们是否相似。

理想情况下,使用一些数据集进行一些训练,并比较任意两个给定的 AST 来查找相似之处。

这里有什么建议吗?

最佳答案

您似乎期望机器学习算法能够完成发现两个 AST 之间相对“距离”的繁重工作。 是独一无二的。相反,您可能会考虑两棵树的整体结构:它们在树的每个级别上是否具有相似数量的节点。如果它们确实如此 - 至少对于树的大部分 - 那么您可能希望为两棵树之间的“距离度量”定义两种方法之一:

  • 不同节点值的数量

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

  • 另一个附加检查可能是定义有多少子树是相同的。然后,为发散的子树定义一个空间度量,能够仅针对该子树查找结构相似性/差异

总结是:“整个问题没有任何开箱即用的方法 - 但您可以针对特定的本地情况利用现有的想法/算法”。

关于apache-spark - Spark 机器学习 AST 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41625927/

相关文章:

oracle - Spark/Scala 将 Oracle 表加载到 Hive

apache-spark - 将 Dataproc 日志获取到 Stackdriver Logging

machine-learning - 如何将 1 个以上的输入传递到 Tensorflow 神经网络?

apache-spark - 如何改善我的推荐结果?我正在使用 spark ALS 隐式

scala - Spark2 - LogisticRegression 训练完成,但结果未收敛,因为 : line search failed

c++ - 使用 vowpal wabbit 的典型技术堆栈?

apache-spark - 如何计算DataFrame中的移动中位数?

machine-learning - 是否可以增量训练 sklearn 模型(例如 SVM)?

machine-learning - 如何采集和过滤图像进行图像识别?

java - 如何使用训练、测试和验证数据集在 Apache Spark MLlib 的 ALS 中训练矩阵分解模型