单位名称相似判断

 # 安装和加载stringdist包

install.packages("stringdist")

library(stringdist)


# 定义字符串

str1 <- "疾控中心"

str2 <- "疾病预防控制中心"


str1 <- "卫健委"

str2 <- "卫生健康委员会"


# 计算 Jaro-Winkler 距离

jw_distance <- stringdist(str1, str2, method = "jaccard")



# 自定义字符串相似度计算函数

custom_similarity <- function(str1, str2) {

  # 将字符串转换为字符向量

  chars1 <- strsplit(str1, "")[[1]]

  chars2 <- strsplit(str2, "")[[1]]

  

  # 获取字符向量的长度

  len1 <- length(chars1)

  len2 <- length(chars2)

  

  # 如果 str1 比 str2 长,则交换它们的位置

  if (len1 > len2) {

    temp <- chars1

    chars1 <- chars2

    chars2 <- temp

    len1 <- length(chars1)

    len2 <- length(chars2)

  }

  

  # 检查 chars1 中的字符是否按顺序出现在 chars2 中

  index <- 1

  match_count <- 0

  for (i in 1:len1) {

    found <- FALSE

    for (j in index:len2) {

      if (j <= len2 && chars1[i] == chars2[j]) {

        found <- TRUE

        match_count <- match_count + 1

        index <- j + 1

        break

      }

    }

    if (found) {

      next

    }

  }

  

  # 计算相似度

  similarity <- match_count / len1

  

  return(similarity)

}



# 测试示例

str1 <- "疾控中心"

str2 <- "疾病预防控制中心"

str3 <- "中心疾控"


similarity12 <- custom_similarity(str2, str1)

similarity13 <- custom_similarity(str2, str3)

评论

此博客中的热门博文

V2ray websocket(ws)+tls+nginx分流

Rstudio 使用代理