假设我们以半结构化格式给出数据作为树.例如,树可以形成为有效的XML文档或有效的JSON文档.你能想象它是一个口齿不清状S-表达或(G)的代数数据类型在Haskell或者Ocaml.
我们在树结构中给出了大量的"文档".我们的目标是聚类相似的文档.通过聚类,我们指的是将文档划分为j个组的方法,使得每个元素中的元素看起来彼此相似.
我确信有些论文描述了方法,但由于我在AI/Clustering/MachineLearning领域并不为人所知,我想问一下谁在寻找什么以及在哪里挖掘.
我目前的做法是这样的:
但肯定有更好的方法.我的方法的一个弱点是它只会相似 - 聚类具有顶部结构的树木彼此非常相似.如果相似性存在,但发生在树的更远处,那么我的方法可能不会很好地工作.
我想也有全文搜索的解决方案,但我确实想利用数据中存在的半结构.
如建议的那样,需要在文档之间定义距离函数.如果没有此功能,我们就无法应用聚类算法.
实际上,问题可能在于该距离函数及其示例.我希望文档中根目录附近的元素相同,以便彼此靠近聚类.我们去的树越往下越重要.
我想从程序中聚集堆栈跟踪.这些是格式良好的树结构,其中靠近根的函数是失败的内部函数.我需要在堆栈跟踪之间有一个合适的距离函数,这可能是因为代码中发生了同样的事件.
language-agnostic algorithm artificial-intelligence cluster-analysis