1

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

поля Ищу для сравнения:

  • Фамилия
  • Имя
  • Пол
  • Год рождения
  • Месяц рождения
  • День рождения
  • ПЛА
  • Количество Член
  • МРН
  • Улица Номер
  • Название улицы
  • Улица Тип
  • Street Направленная
  • Город
  • Государственный
  • Zip
  • Телефон

В Приблизительные Строка Matching Алгоритмы (ПКР) Я, использующие в настоящее время являются:

  • Расстояние Левенштейна
  • Расстояние Хемминга
  • Jaccard Расстояние
  • Яро Расстояние
  • Яро-Винклер Расстояние
  • Самая длинная общая подпоследовательность
  • Самый длинный общий субстрин г
  • Перекрытие Коэффициент
  • Ратклиф-Obershelp Сходство
  • Соренсен-кубиком Расстояние
  • Танимото Коэффициент
  • Damerau-Левенштейна Расстояние
  • Вагнер-Фишера Расстояние
  • Саундэкс
  • Metaphone 3
  • NYSIIS

Во-первых, я сравниваю два поля, такие как FirstName1 и FirstName2, и вижу, если они являются точным соответствием.

Например, FirstName1 = "Bob" и FirstName2 = "Bob" будет точным совпадением, так что оно не будет двигаться к нечеткому согласованию.

С другой стороны, FirstName1 = "Jill" и FirstName2 = "Bob" перейдут на нечеткое сравнение двух полей.

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

+0

Этот вопрос служит хорошим списком алгоритмов сравнения строк! –

ответ

0

Я просто написал какой-то аналогичный код для разрешения сущности. Ключом является то, что не все поля созданы равными. Например, вы должны не использовать ASM на SSN - даже один номер/символ, отличающийся от другого, является совершенно другим SSN и человеком.

Вместо компонентов нечеткого соответствия адресов я попытался бы сначала разрешить адреса, а затем выполнить точное совпадение. Например, хороший адрес службы разрешение будет относиться:

Second Street NW и NW 2nd St

как на той же улице, даже если они имеют очень слабое сходство всеми этими показателями.

Кроме того, вы можете использовать библиотеку разбора телефонных номеров Google (доступную для C#, Java и т. Д.) Для стандартного форматирования всех телефонных номеров, а затем прямого сравнения.

Я использовал Jaro-Winkler для сравнения компонентов имени, но я не исследовал некоторые из перечисленных вами показателей.

Короче:

КаноническаяФорма и сравнить

вместо нечеткого матча.

 Смежные вопросы

  • Нет связанных вопросов^_^