Mahout聚类:如何检索命名向量的名称

时间:2015-06-14 17:04:47

标签: cluster-analysis mahout

我想使用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:

[...]

2 个答案:

答案 0 :(得分:0)

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

你可以将它用于howtos和教程,但实际使用它太慢,太有限,难以使用。 (另外,k-means的结果并不像人们想象的那么好......大部分时间都是狗食。)

基准测试其他工具,你会感到很惊讶。

答案 1 :(得分:0)

我发现了一种方法。您可以使用seqdumper来提取集群映射:

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

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