Я в настоящее время работаю над проектом, который требует, чтобы я соответствовал нашей базе данных Полос и мест проведения со многими внешними сервисами.
В основном я ищу некоторое направление на лучшем методе для определения, если два имени являются тем же. Например:
Я думаю, что основные отличия будут вещами как пропавшие без вести или использование "и" вместо "и" но могли также быть вещи как немного отличающееся написание и слова в различных заказах.
Какие алгоритмы/методы являются наиболее часто используемыми в этой ситуации, я должен отфильтровать шумовые слова, или своего рода написание проверяют соответствие типа?
Вы видели какие-либо примеры чего-то simlar в c#?
ОБНОВЛЕНИЕ: В случае, если любой интересуется c# примером существует "куча", к которой можно получить доступ путем выполнения поиска кода Google для расстояния Левенштейна
Канонический (и, вероятно, самый простой) способ сделать это - измерить расстояние Левенштейна между двумя струнами. Если расстояние небольшое по сравнению с размером строки, вероятно, это та же строка. Обратите внимание: если вам нужно сравнить множество очень маленьких строк, будет сложнее определить, одинаковы они или нет. Он лучше работает с более длинными строками.
Более разумным подходом могло бы быть сравнение расстояния Левенштейна между двумя строками, но присвоение нулевого расстояния более очевидным преобразованиям, таким как "и" / "&", "Snoop Doggy Dogg" "/" Снуп "и др.
В биоинформатике мы используем это для постоянного сравнения последовательностей ДНК или белков.
Существует множество алгоритмов, вы, вероятно, захотите посмотреть глобальные сопоставления .
В этом отношении, вероятно, вам нужен алгоритм Нидлмана-Вунша .
Если у вас есть особенно длинные повторяющиеся строки для сравнения, вы можете также рассмотреть эвристический поиск, такой как BLAST.