【问题标题】:Mahout clustering: How to retrieve the name of a named vectorMahout 聚类:如何检索命名向量的名称
【发布时间】:2015-08-30 04:21:20
【问题描述】:

我想使用 Mahout 对多个文档进行聚类。集群工作正常,但我不知道如何找出每个集群中的文档。

我读到您可以在创建稀疏文件时使用选项--namedVector,但是它从哪里获取 ID 以及在集群完成后如何检索此 ID?


现在我正在执行以下步骤:

我有一个目录,其中包含每个文档的文件。文件格式如下,文件ID为文件名:

filename: documentID.txt

[TITLE]

[CONTENT]

我使用 namedVectors 创建一个稀疏目录:

./mahout seqdirectory -i tmp/es-out -o tmp/es-out-seqdir -c UTF-8 -chunk 64 -xm sequential
./mahout seq2sparse -i tmp/es-out-seqdir -o tmp/es-out-sparse --maxDFPercent 85 --namedVector

然后我可以对结果进行聚类并创建转储:

./mahout kmeans -i tmp/es-out-sparse/tfidf-vectors -c tmp/es-kmeans-clusters -o tmp/es-kmeans -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure -x 10 -k 20 -ow --clustering
./mahout clusterdump -i tmp/es-kmeans/clusters-10-final -o tmp/clusterdump -d tmp/es-out-sparse/dictionary.file-0 -dt sequencefile -b 100 -n 20 --evaluate -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure -sp 0 --pointsDir tmp/es-kmeans/clusteredPoints

转储看起来像这样:

:VL-190{n=1 c=[1:3.407, 110:6.193, 2007:3.736, about:1.762, according:2.948, account:3.507, acting:6.
  Top Terms: 
    epa                                     =>  13.471728324890137
    mountaintop                             =>  11.364262580871582
    mine                                    =>  10.942587852478027

  Weight : [props - optional]:  Point:

[...]

【问题讨论】:

    标签: cluster-analysis mahout


    【解决方案1】:

    Mahout 中的 k-means 只是一个玩具。

    您可以将它用于howtos 和教程,但在实际使用中它太慢、太有限、难以使用。 (另外,k-means 的结果并没有人们想象的那么好……大多数时候他们是狗粮。)

    基准测试其他工具,你会大吃一惊的。

    【讨论】:

    • 好的,但是选择不同的聚类算法会导致同样的问题,我想获取一个集群中所有文档的 ID。
    • 不使用其他更好的工具。 Mahout 只是不太适合集群。它是为推荐系统而构建的——这是开发人员感兴趣的。没有人真正对集群感兴趣。
    • 我知道这不是这项工作的最佳工具。但只是为了弄清楚这一点。你是说无法使用 Mahout 获取集群的文档?
    • 没有。我只是说我发现它是一个死的工具,并建议它可能使用更好的工具比找出 Mahout 集群的错误和怪癖更容易...当然你 可以 获取文档ID。只是可能只需要了解和修改 Mahout 的源代码(继续 - 这是一个 programming ''网站,而不是“我如何使用工具 xyz”网站。像“如何我是否需要修改类 xyz 第 123 行以输出文档 id 会更多关于主题)
    【解决方案2】:

    我找到了办法。您可以使用 seqdumper 提取集群映射:

    ./mahout seqdumper -i /tmp/es-kmeans/clusteredPoints/part-m-00000 -o /tmp/cluster-points.txt
    

    您可以使用正则表达式来提取向量 ID 到集群 ID 的映射。

    【讨论】:

      猜你喜欢
      • 2016-10-11
      • 2013-01-10
      • 1970-01-01
      • 2013-01-06
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      相关资源
      最近更新 更多