
Работа с различными адресными базами
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 26 фев 2009, 21:09
- Репутация: 0
Работа с различными адресными базами
Вопрос такой: как можно быстро и безболезненно присоединенить данные связанные с одной адресной базе в другую. Например у меня есть статистика с привязкой по адресной базе, ее нужно прицепить к карте у которой немного другая эта база ( в первой ул. Бронная , во второй - ул. М.Бронная). Жду предложений. Заранее всем спасибо) 

- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Работа с различными адресными базами
может вот так?
http://gis-lab.info/qa/levenshtein.html
http://gis-lab.info/qa/levenshtein.html
ин гроссен фамилен нихт клювен клац клац
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Работа с различными адресными базами
Например программно вырезать из ул. Бронная слово Бронная и в другой базе искать вхождение подстроки "Бронная"...ну как вариант...
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Работа с различными адресными базами
Есть такой индексатор Sphinx называется. Он позволяет выдавать из индексированных источников результаты близкие к запрошенному (ул. Бронная -> Бронная). Исходники открыты - изучайте, как он это делает. Или приводите все слова к единому виду (отбрасываются ул., пл., пробелы и т.п.)
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Работа с различными адресными базами
Если можете все перевести в MS Access, то у меня есть выписанная на VBA функция, для упомянутой выше метрики Левенштейна. Работает правда очень долго. Поскольку вычисления являются произведением количества исходных строк на количество строк шаблонов.
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Работа с различными адресными базами
Для ускорения можно построить индекс. Тогда сначала будет долго этот индекс строиться, а потом быстро по нему искать. Если база меняется редко, и индексы не нужно часто перестраивать, то это поможет.Boris писал(а):Если можете все перевести в MS Access, то у меня есть выписанная на VBA функция, для упомянутой выше метрики Левенштейна. Работает правда очень долго. Поскольку вычисления являются произведением количества исходных строк на количество строк шаблонов.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Работа с различными адресными базами
А не поясните как именно построить индекс? Как я понял алгоритм расчета метрики состоит в расчете перестановок между двумя текстовыми строками. И функция расчета является кубической или квадратичной на длинной обеих строк. То, что можно вычислить какое-то число которое можно присвоить самой строке и оно будет говорить о подобии строки другим строкам с близкими числами индексов, ну или с помощью какой-то другой зависимости, я из описания метрики не вынес.KolesovDmitry писал(а): Для ускорения можно построить индекс. Тогда сначала будет долго этот индекс строиться, а потом быстро по нему искать. Если база меняется редко, и индексы не нужно часто перестраивать, то это поможет.
---
Что же касается самого вопроса, заданного автором, то там при отсутствии орфографических ошибок, дело сводится к нормализации формальных записей, что обычно быстро производится с помощью словаря подстановок, т.к. "М." в названии "М.Бронная" ничем кроме "Малая" не бывает. И хотя не большой знаток московской топонимики, но все же "М.Бронная" и просто "Бронная" должны быть разными улицами. Ну или для того, что бы так решить надо точно знать, что "Б.Бронной" не существует.
- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Работа с различными адресными базами
таки существует Б. Бронная, и на ней находится синагога
http://www.bronnaya.ru/
http://www.bronnaya.ru/
ин гроссен фамилен нихт клювен клац клац
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Работа с различными адресными базами
значит постановка задачи предельно не верна и предельно не политкорректна. 

-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Работа с различными адресными базами
Реализаций может быть несколько, но идея везде примерно одна.Boris писал(а):А не поясните как именно построить индекс? Как я понял алгоритм расчета метрики состоит в расчете перестановок между двумя текстовыми строками. И функция расчета является кубической или квадратичной на длинной обеих строк. То, что можно вычислить какое-то число которое можно присвоить самой строке и оно будет говорить о подобии строки другим строкам с близкими числами индексов, ну или с помощью какой-то другой зависимости, я из описания метрики не вынес.KolesovDmitry писал(а): Для ускорения можно построить индекс. Тогда сначала будет долго этот индекс строиться, а потом быстро по нему искать. Если база меняется редко, и индексы не нужно часто перестраивать, то это поможет.
Пусть имеется множество объектов и метрика на этом множестве. Далее строится поисковое дерево, для простоты покажу на примере BKT:
* Выбирается случайно (или по какому-либо алгоритму) один элемент множества, называемый узлом. Обозначим его p.
* Рассчитывается расстояние от выбранного узла (p) до всех элементов множества.
* Строится первый уровень дерева (см. рисунок). Этот уровень разбивает исходное множество на подмножества элементов, равноудаленных от узла p. (Процедура работает для дискретных метрик, непрерывные метрики нужно предварительно разбить на интервалы). Каждое ребро дерева помечено числом. Это число=расстоянию от узла до всех элементов поддерева.
* Процедура повторяется на последующих уровнях: для элементов каждого поддерева выбирается новый узел, строится новое разбиение.
Поиск:
* Задается число R -- максимально допустимое расстояние от заданного поискового шаблона (s) до искомых элементов (u) в множестве. Т.е. ищем такие элементы u, для которых верно d(s,u)<R
* Расчитываем расстояние от s до узла p. Обозначим его r
* Ищем возможное решения на тех ветвях дерева, для которых метка удовлетворяет неравенству:
Код: Выделить всё
r-R< метка < r+R
В статье про использование метрики Левенштейна есть программный код. В примере для языка python есть модуль, который ищет при помощи поискового дерева FHQT. Во вложении -- статья с обзором поисковых алгоритмов.
- Вложения
-
Chavez.pdf
- Вот статья с обзором поисковых алгоритмов
- (636.38 КБ) 725 скачиваний
-
- Построение первого уровня дерева BKT
- BKT.png (2.34 КБ) 9283 просмотра
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: Работа с различными адресными базами
спасибо за информацию.
тряхнем стариной. когда-то я почти написал диссертацию по быстрому поиску по заранее рассчитанным признакам у органических веществ.
тряхнем стариной. когда-то я почти написал диссертацию по быстрому поиску по заранее рассчитанным признакам у органических веществ.
-
- Гуру
- Сообщения: 4170
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Работа с различными адресными базами
ну если уж помянули отношение структура/свойство ... в начале 90-х мы использовали такой индекс: берем вектор (unsigned char) длиной число возможных в строке знаков (букв в алфавите+число точек, запятых, и т.д. - например амидных групп), и в i-ю позицию пишем 1, если такая буква/знак есть в слове (или считаем число таких букв) - линейный проход, поскольку сама буква используется как индекс в таблице номеров позиций. Мы считали в памяти скалярные произведения, т.е. число совпадающих позиций.Boris писал(а):спасибо за информацию.
тряхнем стариной. когда-то я почти написал диссертацию по быстрому поиску по заранее рассчитанным признакам у органических веществ.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость