Trevis uses our hierarchical agglomerative clustering (HAC) implementation. Given a list of ContextTrees
you can ask Trevis to produce a Dendrogram
.
To cluster trees, store them in an ObservableList<ContextTree>
and wrap that in a ContextTreeExperiment
(a special type of HAC Experiment
). Then you have to pick a tree distance measure and wrap it in a ContextTreeDissimilarityMeasure
(a special kind of HAC DissimilarityMeasure
). Finally, you have to pick a HAC agglomeration method.
After that, create a DendrogramBuilder
(a ClusteringBuilder
that produces a Dendrogram
), create a clusterer, and ask it to cluster the trees. Then you can ask the DendrogramBuilder
for the Dendrogram
.
public class TreeClusteringExample { private Dendrogram cluster(final ObservableList<ContextTree> treeList) { final Experiment experiment = new ContextTreeExperiment(treeList); final DissimilarityMeasure dissimilarityMeasure = new ContextTreeDissimilarityMeasure(new NodeSetDistance()); final AgglomerationMethod agglomerationMethod = new GroupAverageAgglomerationMethod(); final DendrogramBuilder dendrogramBuilder = new DendrogramBuilder(experiment.getNumberOfObservations()); final HierarchicalAgglomerativeClusterer clusterer = new HierarchicalAgglomerativeClusterer(experiment, dissimilarityMeasure, agglomerationMethod); clusterer.cluster(dendrogramBuilder); final Dendrogram dendrogram = dendrogramBuilder.getDendrogram(); return dendrogram; } }