【问题标题】:RecordLinkage - R one vector. Do not match to selfRecordLinkage - R 一个向量。不匹配自我
【发布时间】:2017-08-16 15:22:45
【问题描述】:

如果我有一个名字向量,比如说:

a = c("tom", "tommy", "alex", "tom", "alexis", "Alex", "jenny", "Al", "michell")

我想使用levenshteinSim 或类似方法来获得此向量内的相似度分数。但是,我不希望它自我评分。例如,"tom" #1"tom" #3 得分。并且不要返回 "tom" #1"tom" #1 的分数,所以不要自己评分。

我之前用两个不同的向量ab 完成了它。但是,如果我将它用于相同的向量,那么 "tom" #1 将与 "tom" #1 得分,这是我想要避免的。

有没有办法做到这一点?

【问题讨论】:

  • 您希望输出的格式是什么?

标签: r levenshtein-distance fuzzy-logic stringdist record-linkage


【解决方案1】:

您可以使用combn 生成a 的所有无序元素对:

a <- c("tom", "tommy", "alex", "tom", "alexis", "Alex", "jenny", "Al", "michell")

df <- data.frame(t(combn(a, 2)), stringsAsFactors = FALSE)
df$sim <- RecordLinkage::levenshteinSim(df$X1, df$X2)

head(df)
#    X1     X2 sim
# 1 tom  tommy 0.6
# 2 tom   alex 0.0
# 3 tom    tom 1.0
# 4 tom alexis 0.0
# 5 tom   Alex 0.0
# 6 tom  jenny 0.0

【讨论】:

  • 对于较大的集合,我收到一个错误 - 有没有办法使用 combn 设置键(基于另一个变量),以便只返回具有匹配键的组合?
猜你喜欢
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多