Я работаю над проблемой, чтобы определить, имеет ли указанная строка правильный формат. Я пытаюсь использовать метод нечеткого сопоставления JaroWinkler, чтобы найти показатель сходства между эталонной строкой и интересующими строками.
Правильный формат строки соответствует следующему порядку (N=число, C=символ): NNNCCCCCC.
Я нашел аналогичную проблему в другом вопросе StackOverflow и немного отредактировал код здесь:
library(RecordLinkage)
library(dplyr)
library(stringdist)
ref <-c('123ABCDEF')
words <-c("456GHIJKL","123ABCDEF","78D78DAA2","660ABCDEF")
wordlist <- expand.grid(words = words, ref = ref, stringsAsFactors = FALSE)
df <- wordlist %>%
group_by(words) %>%
mutate(match_score = jarowinkler(words, ref))
df <- as.data.frame(df)
df
Я знаю, что метод JaroWinkler используется для определения общих символов и учета расстояния между строками, но я не уверен, что это лучший метод. В идеале я хотел бы, чтобы первый и последний элементы в векторе слов были классифицированы как правильные и получили оценку 1, поскольку они имеют формат NNNCCCCCC.
Однако, когда я запускаю этот код, я получаю следующее:
words ref match_score
1 456GHIJKL 123ABCDEF 0.0000000
2 123ABCDEF 123ABCDEF 1.0000000
3 78D78DAA2 123ABCDEF 0.3148148
4 660ABCDEF 123ABCDEF 0.7777778
Есть ли лучший метод для этого типа упражнений на сопоставление? Любая помощь будет оценена по достоинству! Благодарю вас!