通过R识别/区分两个句子

时间:2014-10-17 05:28:46

标签: r text matrix similarity

以下是我的数据示例

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中两个句子之间的比较然后设置一个比例来衡量一对之间的相似性,最后输出一个矩阵。

2 个答案:

答案 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包,但会使用outercut来完成这项工作:

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)。