2013-11-29 2 views
0

Я пытаюсь найти алгоритм для проверки сходства между двумя вводами данных. Скажем, у меня есть две структуры данных (поля в списке контакта) со следующими данными:Сравнение двух структур данных для similarties

// UserA addressbook. 
name: Frank Sinatra 
mobile: +44 555 555 555 55 

// UserB addressbook. 
name: Frank Albert Sinatra 
phone: 004455555555555 

я получил эти данные от различных поставщиков, UserA синхронизируются свой счет Google, в то время как UserB синхронизируются свой счет Microsoft, но я хочу, чтобы мой алгоритм для скажите мне, что оба пользователя знают одного и того же парня (с некоторой вероятностью).

Кто-нибудь знает, где я должен искать? Я попытался найти алгоритм хэширования, который создает «небезопасные» хэши, т. Е. Подобные хэши для аналогичных данных, но этот маршрут не был продуктивным.

+0

Во-первых, вы можете выделить все имена (имя, фамилия, второе имя) в массив и удалить все знаки «+», пробелы и ведущие нули из числа. Затем проверьте соответствие номеров и если один из массивов содержит некоторые из элементов другого. –

+0

Структуры данных - всего лишь примеры. Это могут быть настраиваемые поля или список сообщений. Мне нужно сравнить две структуры данных. –

+0

Хммм. Я не думаю, что общий алгоритм подобия будет работать в вашем примере. Два похожих номера телефонов существенно отличаются. «Миллер Р», «Роберт Миллер» и «Миллер Боб» могут ссылаться на одного и того же человека и лексически разные, хотя они имеют общее подслово. Я думаю, что вы colud будете более успешными, если бы вы нормализовали данные так или иначе, как предлагалось H2CO3, а затем использовали пользовательское сравнение для каждого поля, сообщающее вам, что A _might_ be B, например, «J Rye» <«Jane Rye» <«Jane FE Rye "и" Rye, J "==" J Rye ". –

ответ

0

некоторые ключевые слова, которые вы могли бы дополнительно изучить: сходство данных, измерения расстояния/сходства (метрики), корреляция, неточное соответствие.

1

Сходство строк можно определить с помощью Levenshtein distance. Строки должны быть подготовлены перед тестом, например, удалить специальный символ или разбить строку. Для структур данных см. How do you measure similarity between 2 series of data?

+0

И расстояние Левенштейна двух телефонных номеров говорит вам что? Два числа с расстоянием 1 могут быть даже в другой стране, в зависимости от того, где разница. –

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