1

如果我有一个名称向量,请说:

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

有没有办法做到这一点?

4

1 回答 1

0

您可以使用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
于 2017-08-16T16:04:01.050 回答