モデルから直接ドキュメントベクトルを使用して、k-meansクラスタリングアルゴリズムなどに適合させることができます。次に、重心を使用してドキュメントにラベルを付けます。クラスタにすべてのドキュメントをマッチングが必要でない場合
from scipy.cluster.vq import kmeans,vq
NUMBER_OF_CLUSTERS = 15
centroids, _ = kmeans(model.docvecs, NUMBER_OF_CLUSTERS)
# computes cluster Id for document vectors
doc_ids,_ = vq(model.docvecs,centroids)
# zips cluster Ids back to document labels
doc_labels = zip(model.docvecs.doctags.keys(), doc_ids)
# outputs document label and the corresponding cluster label
[('doc_216', 0),
('doc_217', 12),
('doc_214', 13),
('doc_215', 11),
('doc_212', 13),
('doc_213', 11),
('doc_210', 5),
('doc_211', 13),
('doc_165', 0),
... ]
、重心は(gensimを使用して)検索するために使用することができます。たとえば、セントロイド(クラスタ)1に最も近い10のドキュメントを取得します。
model.docvecs.most_similar(positive = [centroids[1]], topn = 10)
# outputs document label and a similarity score
[('doc_243', 0.9186744689941406),
('doc_74', 0.9134798049926758),
('doc_261', 0.8858329057693481),
('doc_88', 0.8851054906845093),
('doc_276', 0.8691701292991638),
('doc_249', 0.8666893243789673),
('doc_233', 0.8334537148475647),
('doc_292', 0.8269758224487305),
('doc_98', 0.8193566799163818),
('doc_82', 0.808419942855835)]