python 如何实现 获取类似树状图各个支点的索引

image.png
请教一个技术问题,我有个numpy格式的矩阵,里面储存的是文本之间的相似度矩阵,我现在想找出与第一个(举例第一个,实际是要找出所有单个文本的)文本相似的所有文本(其中第一行或第一列代表第一个文本与其它所有文本的相似度,相似度大于0.6则为相似),遇到一个问题,比如第一行中第3列、第12列的值都是大于0.6的,而第3列中的第10行、27行的值也是大于0.6,则认为3,12,10,27都是与第一个文本相似。根据我的计算方法,如若1、3、12、10、27这5行或5列中在没有比0.6大的值,则把1/3/12/10/27这几个索引放在同一个列表或字典里,默认他们5个是相似文本。请问我该如何提出1 3 10 12 27,并把他们放在同一个列表里,跪谢各位大佬,我尝试了for循环,但如若某个行或列牵扯到n个行都大于0.6,这个for循环是写不完的,跪求大佬指点迷津。

我用如下代码将矩阵转换为字典格式的数据

data_all = {}
for key,query in enumerate(sentences):
    data_all[key]=[]
    if len(np.argwhere(similarity_matrix[key]>0.6)) > 0:
        for i in range(len(np.argwhere(similarity_matrix[key]>0.6))):
            data_all[key].append(np.argwhere(similarity_matrix[key]>0.6)[i,0])
            

如下图所示,我通过人工手动检索,找到和3相似的文本1386,接着找与1386相似的文本包含3,173,735,1118,接着随机找了个与173相似的文本包含6,601,735,760,1386,接着随机找了个与760相似的文本包含6,20,91,133,173,124,261,522,562,601等等,这样无穷无尽,请问该如何用程序实现与3相似的所有文本,即将[3,1386,173,735,1118,6,601,735,760,20,91,133,173,124,261,522,562,601.....]这些序号放到一个列表或字典里
image.pngimage.pngimage.pngimage.png
类似这种树状图,即通过1把1,2,3,4,6,7,9,10,11,14...找出来
image.png

阅读 2.2k
1 个回答

挺好玩的,但没有数据,我测试不了,而且我觉得你想得有问题啊,
A = [1,2,3,4,5]
B = [1,2,3,6,7]
C = [6,7,3,8,9]

A 和 B 相似 60%
B 和 C 相似 60%

A 和 C 怎么可能也是相似文本呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题