我有一个名为
dist
的余弦距离矩阵,它表示数据集中 1104 首诗之间的成对余弦距离。行和列的顺序与名为 all_meta0
的列表对齐,其中包含每首诗的元数据(标题、作者等)。
我需要找到距离给定诗歌“The Parade”最远的一首诗,它对应于
dist
矩阵的第二行(即索引 1
,使用从零开始的索引)。本质上,我想确定哪首诗与“游行”的余弦距离最大。
这是我迄今为止在网上找到的内容,但我不知道如何去做。
提取
dist
矩阵的第二行,它代表“游行”与所有其他诗歌之间的距离。
将与其自身的距离设置为 -1
以忽略它。
找到该行中最大值的索引,该索引对应于最远的诗。
使用该索引从 all_meta0
获取元数据。
这就是 dist 变量的来源:
mds = MDS(n_components=2, dissimilarity="precomputed", random_state=1)
pos = mds.fit_transform(dist)
dist = 1 - cosine_similarity(dtm)
dist[0:5], len(dist), len(dist[0])
pos = mds.fit_transform(dist)```
这非常简单,因为您已经有了距离矩阵。一些示例代码如下:
import numpy as np
distances_from_parade = dist[1]
distances_from_parade[1] = -1
furthest_poem_index = np.argmax(distances_from_parade)
furthest_poem_metadata = all_meta0[furthest_poem_index]
print(furthest_poem_metadata)