Я пытаюсь приблизить совпадения между эталонной и целевой строками.
Я пробовал adist и stringdist в R с различными доступными расстояниями.
Хотя алгоритмы хорошо справляются со строками, содержащими только буквы алфавита, они не могут сопоставлять строки, в которых присутствуют числа и специальные символы (% и т. д.).
Как можно обработать этот случай?
Ниже приведен мой код.
library(stringdist)
dist.name <- outer(tolower(WW_name),tolower(Px_name),
stringdist::stringdist, method = "lcs")
# We now take the pairs with the minimum distance
min.name<-apply(dist.name, 1, min)
match.s1.s2<-NULL
chk <- function(x){
s2.i<-match(min.name[x],dist.name[x,])
s1.i<-x
match.s1.s2<-rbind(data.frame(s2.i=s2.i,s1.i=s1.i,WWname=WW_lookup[s1.i],
Pxname=Px_lookup[s2.i],
adist=min.name[x]),match.s1.s2)
return(match.s1.s2)
}
outDf <- lapply(1:nrow(dist.name),FUN = chk)
outDf <- do.call(rbind.data.frame, outDf)
Примеры, где совпадение не правильное ниже -
Pxname соответствует алгоритму | MappedPxName сопоставляется вручную
Мы ценим любые предложения.