Используя пакет stringdist
, вы можете написать вспомогательную функцию, которая сравнивает строку с каждой целевой строкой в векторе.
Функция ниже первых strplit
и всех строк sort
. Затем вызывает stringsim
, чтобы вычислить оценку сходства.
funSimilarity <- function(x, y, method = "osa"){
x <- strsplit(x, " ")[[1]]
x <- paste(sort(x), collapse = " ")
y_list <- strsplit(y, " ")
y_list <- lapply(y_list, function(.y) paste(sort(.y), collapse = " "))
stringsim(x, unlist(y_list), method = method)
}
funSimilarity(x, y)
#[1] 1.0000000 1.0000000 0.7272727
met <- c("osa", "lv", "dl", "hamming", "lcs", "qgram",
"cosine", "jaccard", "jw", "soundex")
sapply(met, function(m) funSimilarity(x, y, method = m))
# osa lv dl hamming lcs qgram cosine
#[1,] 1.0000000 1.0000000 1.0000000 1 1.0000000 1.0000000 1.0000000
#[2,] 1.0000000 1.0000000 1.0000000 1 1.0000000 1.0000000 1.0000000
#[3,] 0.7272727 0.7272727 0.7272727 0 0.8421053 0.8421053 0.9689541
# jaccard jw soundex
#[1,] 1.0000000 1.0000000 1
#[2,] 1.0000000 1.0000000 1
#[3,] 0.8095238 0.8632576 1