|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sergey Gazizyanov 2:5004/16.58 01 Apr 2003 17:09:15 To : Oleg Khrulev Subject : Re: Разбор почтового адреса. --------------------------------------------------------------------------------
Hello Oleg!
01 Apr 03,12:45, Oleg Khrulev wrote to All
Subject: Разбор почтового адреса.
OK> Есть таблица примерно из 15 000 000 записей.
OK> Задача состоит в поиске максимального количества дублей (не
OK> обязательно всех). Желательно, чтобы программа была на PL/SQL.
Понятно, что в таком случае 100%-правильный алгоритм это ручная обработка, все
остальные решения будет находить не все дубли.
Для начала нужно определиться, какие две записи являются дубликатами. Затем
пишешь функцию compare, которая имеет в аругментах две строки, а возвращает
процент совпадения.
Т.к. логика сравнения нечеткая, то все-таки придется сравнивать записи каждую с
каждой по вот такому алгоритму:
for (i=0; i<15e6; i++)
for (j=i; j<15e6; j++)
{
if (compare()>Koeff) {... найден дубликат..}
}
Koeff - это коэффициент доверия. Обычно он подбирается опытным путем и может
лежать в диапазоне 0.7 - 0.95
Еще этот коэфф доверия будет различен для строк разной длины.
Это все что касается сравнения структурированных данных (ФИО).
Hеструктурированный почтовый адрес я советую обработать отдельно и разбить его
на логически-правильные части - страна,индекс,город,улица,дом,квартира - это
несложно, тем более что классификаторы "индекс-улица", перечень городов и стран
достать легко.
WBR, SG aka -=DarkLord=-
... http://www.prado.ru ...
--- GoldEd+ 1.1.1.2 [E-mail: rex@echo.ru] [ICQ: 455052]
* Origin: Hет такого дракона, который был бы неуязвим. (2:5004/16.58)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/33773e89cbaf.html, оценка из 5, голосов 10
|