#sql #sql-server
#sql #sql-server
Вопрос:
Я всегда хотел узнать ваше мнение по этой теме, так что приступаем:
Моя команда только что предоставила мне список учетных записей клиентов, которые нам нужно сопоставить с другими базами данных, и основная проблема, с которой мы сталкиваемся, заключается в том, что наш список нестандартизирован, поэтому мы вызываем те же учетные записи аналогично, но по-другому, чем в наших базах данных. Например:
My_List.Customers_Name Customers_Database.Customers_Name
- -
Charles Schwab Charles Schwab Corporation
Так, например, я использую функцию подобия Jaro сморщивателя и редактировать расстояние для того, чтобы собрать список похожих строк, а затем вручную сопоставить учетные записи, если это необходимо. Мой вопрос:
Какие правила / фильтры вы применяете к результатам сопоставления нечетких данных, чтобы уменьшить количество сопоставлений вручную?
Я ссылаюсь на правила типа: Если строка содержит более 20 символов и расстояние редактирования <= 1, то, вероятно, оно будет таким же, поэтому считайте это совпадением. Если строка содержит менее 4 символов, а расстояние редактирования > 0, то, вероятно, это будет другая учетная запись, поэтому считайте это несоответствием.
Эти правила, которые я применяю, полностью составлены с моей стороны, мне интересно, существует ли какое-либо стандартное соглашение для применения нечеткого сопоставления текстовых строк, чтобы получать только полезные результаты и уменьшать нагрузку на ручное сопоставление.
Если нет, не могли бы вы рассказать о своем опыте и о том, как вы справлялись с этим раньше?
Большое вам спасибо
Ответ №1:
Я делал это несколько раз. Это сильно зависит от наборов данных, и правила меняются каждый раз.
Мой процесс:
- выберите случайный набор выборочных записей, чтобы проверить мой набор правил — достаточно большой, чтобы быть репрезентативным, достаточно маленький, чтобы иметь возможность визуально сканировать.
- создайте таблицу «соответствие» со столбцами «оригинал», «соответствие» и «оценка достоверности».
- напишите правила в виде инструкций «insert» или «update» для создания записей в таблице «match»
- запустите правила для моего образца набора данных
- оцените совпадения в образцах. Настраивайте правила, добавляйте их.
- промыть и повторить
«Правила» сильно зависят от набора данных. Обычно я использую следующее:
- уберите знаки препинания
- примените обычные замены (например, «Corp» становится «Корпорацией»)
- разделите на отдельные слова; применяйте долю каждого точного совпадения из 10 (таким образом, соответствие «Charles Schwab» «Корпорации Charles Schwab» составило бы 2/3 = 7 баллов, соответствие «HSBC» «HSBC» составляет 1/1 = 10 баллов
- разделите на отдельные слова; применяйте долю каждого близкого совпадения из 5 (таким образом, соответствие «Chls Schwab» «Charles Schwab Corporation» будет равно 2/3 = 3 баллам, соответствие «HSBC» «HSCB» равно 1/1 = 5 баллам).