Mahout 聚类:如何检索命名向量的名称
Mahout clustering: How to retrieve the name of a named vector
我想使用 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:
[...]
Mahout 中的 k-means 只是一个玩具。
您可以将它用于 howtos 和教程,但实际使用它太慢,太有限,很难使用。 (另外,k-means 的结果并不像人们想象的那么好......大多数时候它们都是 dogfood。)
Benchmark 其他工具,您会大吃一惊。
我找到了一个方法。您可以使用 seqdumper 提取集群映射:
./mahout seqdumper -i /tmp/es-kmeans/clusteredPoints/part-m-00000 -o /tmp/cluster-points.txt
您可以使用正则表达式提取矢量 ID 到聚类 ID 的映射。
我想使用 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:
[...]
Mahout 中的 k-means 只是一个玩具。
您可以将它用于 howtos 和教程,但实际使用它太慢,太有限,很难使用。 (另外,k-means 的结果并不像人们想象的那么好......大多数时候它们都是 dogfood。)
Benchmark 其他工具,您会大吃一惊。
我找到了一个方法。您可以使用 seqdumper 提取集群映射:
./mahout seqdumper -i /tmp/es-kmeans/clusteredPoints/part-m-00000 -o /tmp/cluster-points.txt
您可以使用正则表达式提取矢量 ID 到聚类 ID 的映射。