You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言基于词向量的数据集相似度计算与距离矩阵生成方法

实现方案

第一步:整理所有数据集到命名列表

首先将所有单词向量存入同一个命名列表,避免单独处理70+个变量,方便后续批量调用:

# 按格式将所有向量整理为命名列表,列表名对应数据集名称
word_lists <- list(
  df1 = c("test", "example", "random word", "another"),
  df2 = c("word2", "word3", "test"),
  df3 = c("word2", "test", "question", "stack", "overflow"),
  df4 = c("word2", "no", "yes", "vector")
  # 剩余66组数据集按相同格式补充即可
)

第二步:自定义相似度计算函数

你可以根据自身需求替换函数内部的计算逻辑,示例以两个向量的共同词汇数量作为相似度值:

calc_similarity <- function(vec1, vec2) {
  # 示例逻辑:返回两个向量的交集元素个数,可直接替换为你自己的相似度/距离计算规则
  length(intersect(vec1, vec2))
}

第三步:批量计算两两相似度,生成桑基图所需links数据框

# 生成所有两两不重复的数据集组合
pair_combn <- combn(names(word_lists), 2, simplify = FALSE)

# 遍历计算每对组合的相似度,生成长格式关联表
links <- do.call(rbind, lapply(pair_combn, function(pair) {
  sim_val <- calc_similarity(word_lists[[pair[1]]], word_lists[[pair[2]]])
  data.frame(
    source = pair[1],
    target = pair[2],
    value = sim_val
  )
}))

# 如需补充数据集自身和自身的关联记录(和你示例的links结构一致),可以补充运行以下代码
self_links <- data.frame(
  source = names(word_lists),
  target = names(word_lists),
  value = sapply(word_lists, function(x) calc_similarity(x, x)) # 也可以按需求设置固定值
)
links <- rbind(links, self_links)

第四步:生成对称距离矩阵

# 提取所有数据集名称
ds_names <- names(word_lists)
n <- length(ds_names)

# 初始化空矩阵
dist_matrix <- matrix(0, nrow = n, ncol = n, dimnames = list(ds_names, ds_names))

# 填充矩阵值
for (i in 1:nrow(links)) {
  dist_matrix[links$source[i], links$target[i]] <- links$value[i]
  dist_matrix[links$target[i], links$source[i]] <- links$value[i]
}

内容的提问来源于stack exchange,提问作者ccfarre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:15:02