python 如何实现 获取类似树状图各个支点的索引
请教一个技术问题,我有个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.....]这些序号放到一个列表或字典里
类似这种树状图,即通过1把1,2,3,4,6,7,9,10,11,14...找出来
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(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 怎么可能也是相似文本呢?