R:比较相邻字符串之间的文本相似性

时间:2019-05-10 08:30:12

标签: r string

我正在尝试比较一列中的文本,以确定文本中的相邻字母是否相似;为了使两个相邻的字母相同,需要多少次替换。

示例:简-简(1-AN / NA),玛丽-马尔特(0),克莱拉-克莱尔(2-CL / LC和ER / RE)

我尝试过stringdist方法,但是它们不能为我的问题提供解决方案。

由于我是R语言的新手,所以我无法在此处显示有效的代码:

substition <- function(text1,tex2){

  if(text1 == text2){
    return(TRUE)
  }

  if(nchar(text1) != nchar(text2)){
    return(FALSE)
  }

  vec1 <- strsplit("text1",split="")[[1]]
  vec2 <- strsplit("text2",split="")[[1]]

(can't go on)

。但要说明:

数据就是这样

df$NO  df$names
1      JANE
2      MARY
3      CLERA
4      JNAE
5      LCREA
6      MART

,所需的输出是:

df$NO  df$names df$substition
1      JANE     1
2      MARY     0
3      CLERA    2
4      JNAE     1
5      LCREA    2
6      MART     0

1 个答案:

答案 0 :(得分:0)

您可以使用字符串之间的Levenshtein距离(https://en.wikipedia.org/wiki/Levenshtein_distance)。距离给出了将一个字符串转换为另一个字符串所需的最小插入,删除和替换次数。

用法

adist(
  c("lazy", "lasso", "lassie"),
  c("lazy", "lazier", "laser")
)

返回3x3的距离矩阵:

##      [,1] [,2] [,3]
## [1,]    0    3    3
## [2,]    3    4    2
## [3,]    4    3    3