Запись Связи: Сравнение Строковых Компараторов - PullRequest
1 голос
/ 13 декабря 2011

Я работаю над проектом связывания записей, и мне нужно провести некоторую исследовательскую работу с различными компараторами строк. Я смотрю на:

Яро-Винклер, расстояние Левенштейна, самая длинная общая подстрока и точное совпадение.

Мне интересно, была ли проделана какая-либо работа, чтобы определить, какой продукт лучше использовать и когда? То есть, Джаро-Винклер кажется, что это хорошо для имен, но может быть лучше сделать точное совпадение по номерам социального страхования. Что бы вы использовали для адресов? Есть ли у Jaro-Winkler преимущества перед другими?

Есть ли какие-нибудь официальные документы, на которые кто-то мог бы указать мне?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 03 мая 2012

Хорошей отправной точкой является статья 'Сравнение метрик расстояния строк для задач, совпадающих с именами' из Уильям У. Коэн и соавт.В статье сравниваются несколько метрик расстояния строк.

Они также реализовали большинство из них в рамках проекта SecondString .Это «пакет приближенных методов сопоставления строк на основе Java с открытым исходным кодом», поэтому вы можете легко сравнивать различные метрики, не реализовывая самостоятельно все.

Почти невозможно сказать, какая метрика является лучшей.Как вы говорите, Jaro-Winkler хорош для имен, для сравнения адресов может иметь смысл использовать метрики на основе токенов, такие как TFIDF или SoftTFIFD, как описано Коэном.

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

0 голосов
/ 19 сентября 2015

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

0 голосов
/ 14 декабря 2011

Оказывается, ученый Google нашел эту статью

http://www.amstat.org/sections/srms/Proceedings/y2006/Files/JSM2006-000855.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...