从mahout聚类的结果中识别文档

时间:2010-10-15 20:18:30

标签: solr mahout

我正在使用mahout来集群使用solr索引的文本文档。

我已经使用文档中的“text”字段来形成向量。然后我在mahout中使用k-means驱动程序进行聚类,然后使用clusterdumper实用程序来转储结果。

我很难理解翻斗车的输出结果。我可以看到在这些聚类中用术语向量形成的聚类。 但是如何从这些集群中提取文档。我希望结果是出现在不同集群中的输入文档。

1 个答案:

答案 0 :(得分:1)

我也有这个问题。我们的想法是群集转储器使用点转储所有群集数据,依此类推。你有两个选择:

  1. 修改ClusterDumper.printClusters()方法,使其不会打印所有术语和权重。我有一些代码:
  2. 
    
        String clusterInfo = String.format("Cluster %d (%d) with %d points.\n", value.getId(), clusterCount, value.getNumPoints());
                        writer.write(clusterInfo);
                        writer.write('\n');
        // list all top terms
        if (dictionary != null) {
                            String topTerms = getTopFeatures(value.getCenter(), dictionary, numTopFeatures);
                            writer.write("\tTop Terms: ");
                            writer.write(topTerms);
                            writer.write('\n');
                        }
    
        // list all the points in the cluster
        List points = clusterIdToPoints.get(value.getId());
                        if (points != null) {
                            writer.write("\tCluster points:\n\t");
                            for (Iterator iterator = points.iterator(); iterator.hasNext();) {
                                WeightedVectorWritable point = iterator.next();
                                writer.write(String.valueOf(point.getWeight()));
                                writer.write(": ");
    
                                if (point.getVector() instanceof NamedVector) {
                                    writer.write(((NamedVector) point.getVector()).getName() + " ");
                                }
    
                            }
                            writer.write('\n');
                        }
    
    
    1. 尽可能做一些grep魔法并消除有关术语和权重的所有信息。