首页 > 解决方案 > 在 r/python 中查找 id 列之间的相似性

问题描述

数据如下:

id <- c(1,1,2,1,3,2)
address <- c("ABC Ret1","ABC","NY AB1","XYZ","DEL1","NY AB")
similar_address <- data.frame(id,address)

我想找到每个 id 的相似地址并创建一个新的 data.frame 如下

在此处输入图像描述

首选是余弦相似度,用于查找地址之间的相似度

标签: pythonr

解决方案


使用 qlcMatrix 包中的函数 sim.strings:

get_count_of_similar_strings = function(x){
  issim=(sum(sim.strings(x)>=.5) - length(x))/1
  isnotsim=length(x)-issim
  c(issim,isnotsim)
}

out = by(similar_address$address
,similar_address$id
,get_count_of_similar_strings
,simplify = T)    

data.frame(id=unique(similar_address$id),t(sapply(out,I)))

推荐阅读