私のデータには、いいねのリストを持つユーザーがいます。これらのいいねを各ユーザーの個別のファイルにダンプし、それらをクラスター化したいと考えています。出力が複数のクラスターで同じように見えることを除いて、すべてが機能しています。私の理解では、k-means は排他的であるべきです。問題は、おそらくデータのダンプ方法にあると思います。また、カスタムトークナイザーを作成できるようになるまで、当分の間、すべてのいいねをスペースなしでダンプしました。これが私が実行しているものです(Rubyスクリプトから)。
system("#{MAHOUT_CMD} seqdirectory -c UTF-8 -i data/users -o data/kmeans/converted")
system("#{MAHOUT_CMD} seq2sparse -i data/kmeans/converted -o data/kmeans/vectors")
system("#{MAHOUT_CMD} kmeans -i data/kmeans/vectors/tfidf-vectors -c data/kmeans/initial_clusters -o data/kmeans/kmeans_clusters -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure -cd 0.1 -k 20 -x 20")
last_cluster_folder = Dir["data/kmeans/kmeans_clusters/*"].last.gsub("data/kmeans/kmeans_clusters/", "")
system("#{MAHOUT_CMD} clusterdump -s data/kmeans/kmeans_clusters/#{last_cluster_folder}/ -d data/kmeans/vectors/dictionary.file-0 -dt sequencefile -o data/kmeans/clusters.txt -n 1000")
出力には、各クラスターの「トップ ターム」が一覧表示されますが、多くの類似語が各クラスターで発生します (ただし、重みは異なります)。clusterdumper の通常の出力ですか?各単語がどのクラスターに属しているかをその重みで調べる必要がありますか?
ありがとう