以下是我的数据示例
id地址
Table1:User table
id address
1 mont carlo road,CA
2 mont road,IS
3 mont carlo road1-11,CA
Table 2(The output I wanna get)
Similarity Matrix
id 1 2 3
1
2 3
3 1 3
1~3 very similar~very dissimilar
我的问题是如何识别表1中的地址与案例之间的相似性,然后输出结果,比如R中的表2中的相似性矩阵。关键是如何找出R中两个句子之间的比较然后设置一个比例来衡量一对之间的相似性,最后输出一个矩阵。
答案 0 :(得分:0)
您可能对R包Levenshtein Distance中实施的stringdist感兴趣。例如:
library(stringdist)
address <- c("mont carlo road,CA", "mont road,IS", "mont carlo road1-11,CA")
stringdist(address[1], address[2], method="lv")
[1] 8
然后,您可以将这些结果定制为矩阵或您想要的任何输出
答案 1 :(得分:0)
我也使用stringdist
包,但会使用outer
和cut
来完成这项工作:
library(stringdist)
dat <- data.frame(
address = c("mont carlo road,CA", "mont road,IS", "mont carlo road1-11,CA"),
id = 1:3
)
m <- outer(dat[["address"]], dat[["address"]], stringdist, method="jw")
m[lower.tri(m)] <- cut(m[lower.tri(m)], 3, labels=1:3)
m[upper.tri(m)] <- cut(m[upper.tri(m)], 3, labels=1:3)
dimnames(m) <- list(dat[["id"]], dat[["id"]])
diag(m) <- NA
m
## 1 2 3
## 1 NA 3 1
## 2 3 NA 3
## 3 1 3 NA
您可以使用您想要的任何方法来计算距离(?stringdist
)。