Улучшение нечеткого сопоставления в R за пределами agrep()

Мне нужно сократить большой список клиентов, сгруппировав повторяющихся клиентов с немного разными именами. Я начал свое решение для нечеткого сопоставления с помощью этот пост.

Я адаптировал код для создания полезного фрейма данных, в котором один столбец содержит клиента, а другой столбец показывает всех соответствующих клиентов.

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(), так что, возможно, это возможно. Любые экспертные советы очень ценятся.


person josh1400    schedule 28.07.2021    source источник