Как обнаружить дубликаты данных?

  1. Python имеет GIL. Байт-код Python будет выполняться только одним процессором за раз. Только некоторые C-модули (которые не управляют состоянием Python) смогут работать одновременно.
  2. Python GIL имеет огромные накладные расходы при блокировке состояния между потоками. Есть исправления для этого в более новых версиях или в ветвях разработки, которые, по крайней мере, должны делать многопоточный код с привязкой к ЦП так же быстро, как однопоточный код.
  3. Вам нужно использовать мульти -process для параллелизации с Python. К счастью, модуль multiprocessing , который поставляется с Python, делает это довольно легко.

    Очень немногие языки могут автоматически распараллеливать выражения. Если это необходимая функциональность, я предлагаю Haskell (Data Parallel Haskell)

14
задан Greg Hurlman 28 August 2008 в 03:34
поделиться

9 ответов

Так там своего рода алгоритм, который может дать процент для того, насколько подобный запись другому?

Алгоритмы, поскольку Soundex и расстояния Edit (как предложено в предыдущем сообщении) могут решить некоторые Ваши проблемы. Однако, если Вы будете серьезно относиться к очистке Ваших данных, то это не будет достаточно. Поскольку другие заявили, что "счет" не звучит как ничто как "William".

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

К Вашей обычной Таблице адресов, добавьте Корневые версии имен, например, Человека (Firstname, RootFirstName, Фамилия, Rootsurname....)

Теперь, создайте таблицу отображения. FirstNameMappings (Первичный ключ Firstname, Rootname)

Заполняют Вашу Таблицу отображения: Вставьте ИГНОРИРУЮТ (выберите Firstname, "НЕОПРЕДЕЛЕННЫЙ" от Человека) в FirstNameMappings

This добавит весь firstnames, который Вы имеете в своей таблице человека вместе с RootName "НЕОПРЕДЕЛЕННЫХ"

Теперь, к сожалению, необходимо будет пройти все уникальные имена и отобразить их на RootName. Например, "счет", "Billl" и "Желание" должны все быть переведены в "William" This, является очень трудоемким, но если качество данных действительно важно для Вас, я думаю, что это - один из лучших путей.

Теперь используют недавно созданную таблицу отображения для обновления поля "Rootfirstname" в таблице Person. Повторитесь для фамилии и адреса. Как только это сделано, необходимо быть в состоянии обнаружить дубликаты, не страдая от орфографических ошибок.

7
ответ дан Tnilsson 28 August 2008 в 03:34
поделиться
  • 1
    спасибо tim, Иллинойс дает ему попытку и сообщил об этом? и как сделать Вас, синхронизируют операции от Вашего проекта до sugarCRM (я означаю получать доступ к методам), .in мой случай, я хочу добавить контакты к sugarCRM, когда я добавляю их в своем модуле. – Milind Anantwar 7 December 2012 в 17:53

Можно сравнить имена с расстояние Левенштейна . Если имена являются тем же, расстояние 0, еще оно дано минимальным количеством операций, должен был преобразовать одну строку в другой.

5
ответ дан Peter Hoffmann 28 August 2008 в 03:34
поделиться
  • 1
    Tim, может Вы помогать мне на этом быть реализованным в Java.? – Rizwan Sohaib 3 July 2013 в 05:00

Я предполагаю, что эта проблема хорошо понята, но что происходит со мной на первом чтении:

  • сравнивают поля индивидуально
  • количество те, которые соответствуют (для возможно свободного определения соответствия и возможно взвешивания полей по-другому)
  • существующий для человеческого вмешательства любые случаи, которые передают некоторый порог

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

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

4
ответ дан dmckee 28 August 2008 в 03:34
поделиться

В то время как у меня нет алгоритма для Вас, мое первое действие должно было бы смотреть на процесс, вовлеченный во ввод нового контакта. Возможно, у пользователей нет простого способа найти контакт, который они ищут. Во многом как на новой форме вопроса Переполнения стека, Вы могли предложить контакты, которые уже существуют на новом экране контакта.

3
ответ дан Kevin Lamb 28 August 2008 в 03:34
поделиться
  • 1
    Вы видели ссылку, которую я упомянул в своем вопросе? метод, используемый для автора, отличается для sugarcrm, чем традиционный. я использовал бы dotnetopenauth, если он будет поддерживать подход, используемый для нормального автора. – Milind Anantwar 7 December 2012 в 00:35

Если у Вас есть доступ, SSIS проверяют Нечеткую группировку и Нечеткое преобразование поиска.

http://www.sqlteam.com/article/using-fuzzy-lookup-transformations-in-sql-server-integration-services

http://msdn.microsoft.com/en-us/library/ms137786.aspx

3
ответ дан jason saldo 28 August 2008 в 03:34
поделиться

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

3
ответ дан Tyler 28 August 2008 в 03:34
поделиться

Это может или не может быть связано, но, незначительные орфографические ошибки могли бы быть обнаружены поиск Soundex , например, это позволит Вам рассматривать Britney Spears, Запчасти Britanny и Britny Spears как дубликаты.

сокращения Псевдонима, однако, трудно рассмотреть как дубликаты, и я сомневаюсь, мудро ли это. Там обязаны быть несколькими людьми по имени Bill Smith и William Smith, и необходимо было бы выполнить итерации этого с Charles-> Chuck, Robert-> Bob, и т.д.

кроме того, если Вы рассматриваете, скажем, мусульманских пользователей, проблемы становятся более трудными (существует слишком много мусульман, например, которые называют Mohammed/Mohammad).

2
ответ дан Jon Limjap 28 August 2008 в 03:34
поделиться

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

Для имен, я не уверен, что Вы когда-либо собираетесь получить хорошие результаты с чисто алгоритмическим подходом - В чем Вы действительно нуждаетесь, массы данных. Возьмите, например, сколько лучшие предложения написания Google, чем предложения в нормальном настольном приложении. Это вызвано тем, что Google может обработать миллиарды веб-запросов и посмотреть на то, что запросы приводят друг к другу, что 'сделало Вы подразумеваете, что' на ссылки на самом деле нажимают и т.д.

существует несколько компаний, которые специализируются на проблеме соответствия имени (главным образом для национальной безопасности и приложений мошенничества). Тот, который я мог помнить, Search Software Америка, кажется, был выкуплен этими парнями http://www.informatica.com/products_services/identity_resolution/Pages/index.aspx , но я подозреваю, что любой из этих видов решений был бы далек к дорогому для приложения контактов.

0
ответ дан Matt Sheppard 28 August 2008 в 03:34
поделиться

Вы могли бы также хотеть изучить вероятностное соответствие.

0
ответ дан 28 August 2008 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: