gpt4 book ai didi

python - Doc2vec:聚类结果向量

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:11 24 4
gpt4 key购买 nike

在 doc2vec 模型中,我们可以对向量本身进行聚类吗?我们是否应该对每个生成的 model.docvecs[1] 向量进行聚类?如何实现聚类模型?

 model = gensim.models.doc2vec.Doc2Vec(size= 100, min_count = 5,window=4, iter = 50, workers=cores)
model.build_vocab(res)
model.train(res, total_examples=model.corpus_count, epochs=model.iter)


# each of length 100
len(model.docvecs[1])

最佳答案

您可以直接使用模型中的文档向量来拟合(例如)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)]

关于python - Doc2vec:聚类结果向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com