首页 > 解决方案 > 将字符串聚类到相似组中

问题描述

例如,我正在尝试对字符串进行聚类,以便拥有相似字符串的集群,"clavier"并且"clvier"应该出现在同一个集群中。

我正在尝试这样的代码

final_list2 = np.asarray(final_list2) 

lev_similarity =-1* np.array([[distance.levenshtein(w1,w2) for w1 in final_list2] for w2 in final_list2])

affprop = AffinityPropagation(affinity="precomputed", damping=0.5,convergence_iter=15, max_iter=200)
affprop=affprop.fit(lev_similarity)
for cluster_id in np.unique(affprop.labels_):
   
    exemplar = final_list2[affprop.cluster_centers_indices_[cluster_id]]
    cluster = np.unique(final_list2[np.nonzero(affprop.labels_==cluster_id)])
    cluster_str = ", ".join(cluster)
    print (exemplar, cluster_str)

但我没有得到任何集群中心。

print(affprop.cluster_centers_indices_)

显示[]

谁能告诉我我做错了什么?或者,有什么建议可以给我更好的结果?

标签: pythonscikit-learnnlpcluster-computing

解决方案


final_list2 = "clavier clvier clavier clvier apple appl apple appl".split(" ")
final_list2 = np.asarray(final_list2) #So that indexing with a list will work

lev_similarity = -1*np.array([[distance.levenshtein(w1,w2) for w1 in final_list2] for w2 in final_list2])

affprop = AffinityPropagation(affinity="precomputed", damping=0.5)
affprop=affprop.fit(lev_similarity)

输出

[1 7]

为了我。


推荐阅读