Мне нужно сократить большой список клиентов, сгруппировав повторяющихся клиентов с немного разными именами. Я начал свое решение для нечеткого сопоставления с помощью этот пост.
Я адаптировал код для создания полезного фрейма данных, в котором один столбец содержит клиента, а другой столбец показывает всех соответствующих клиентов.
list <- sapply(customer_data$End_Customer, agrep, customer_data$End_Customer, ignore.case = TRUE, value = TRUE, max.distance = 0.01)
result <- data.frame(stack(list))
register("result")
## filter and sort the dataset
result <- result %>%
filter(values != ind) %>%
arrange(desc(values)) %>%
select(values:ind)
Теперь, когда у меня есть этот набор данных, как мне сгруппировать их в одного клиента? Я мог бы просто сгруппировать всех совпадающих клиентов, но одна только функция agrep() не идеальна, и некоторые из совпадающих клиентов на самом деле не совпадают. Например, клиент WAE соответствует примерно 600 клиентам. Я не хочу, чтобы WAE группировалась во всех 600 клиентах. Я хочу, чтобы WAE соответствовала только одному клиенту, который подходит лучше всего.
Я читал об Rosette Text Analytics, в котором используется гибридный метод, объединяющий несколько различных методы. Существуют ли другие пакеты R, которые я мог бы использовать в сочетании с agrep(), чтобы улучшить мое нечеткое сопоставление?
Создавая этот пост, я начал изучать fuzzyjoin(), так что, возможно, это возможно. Любые экспертные советы очень ценятся.