Работа с различными адресными базами

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
azot101
Новоприбывший
Сообщения: 8
Зарегистрирован: 26 фев 2009, 21:09
Репутация: 0

Работа с различными адресными базами

Сообщение azot101 » 09 дек 2010, 17:19

Вопрос такой: как можно быстро и безболезненно присоединенить данные связанные с одной адресной базе в другую. Например у меня есть статистика с привязкой по адресной базе, ее нужно прицепить к карте у которой немного другая эта база ( в первой ул. Бронная , во второй - ул. М.Бронная). Жду предложений. Заранее всем спасибо) :wink:

Аватара пользователя
nadiopt
Гуру
Сообщения: 4744
Зарегистрирован: 29 янв 2009, 13:27
Репутация: 495
Ваше звание: хрюкало
Откуда: Санкт-Петербург
Контактная информация:

Re: Работа с различными адресными базами

Сообщение nadiopt » 09 дек 2010, 17:34

может вот так?
http://gis-lab.info/qa/levenshtein.html
ин гроссен фамилен нихт клювен клац клац

Аватара пользователя
dobeer
Активный участник
Сообщения: 199
Зарегистрирован: 25 дек 2009, 21:54
Репутация: 1
Откуда: Чита
Контактная информация:

Re: Работа с различными адресными базами

Сообщение dobeer » 09 дек 2010, 17:35

Например программно вырезать из ул. Бронная слово Бронная и в другой базе искать вхождение подстроки "Бронная"...ну как вариант...

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Работа с различными адресными базами

Сообщение Дмитрий Барышников » 09 дек 2010, 22:55

Есть такой индексатор Sphinx называется. Он позволяет выдавать из индексированных источников результаты близкие к запрошенному (ул. Бронная -> Бронная). Исходники открыты - изучайте, как он это делает. Или приводите все слова к единому виду (отбрасываются ул., пл., пробелы и т.п.)

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Работа с различными адресными базами

Сообщение Boris » 10 дек 2010, 07:23

Если можете все перевести в MS Access, то у меня есть выписанная на VBA функция, для упомянутой выше метрики Левенштейна. Работает правда очень долго. Поскольку вычисления являются произведением количества исходных строк на количество строк шаблонов.

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Работа с различными адресными базами

Сообщение KolesovDmitry » 10 дек 2010, 09:05

Boris писал(а):Если можете все перевести в MS Access, то у меня есть выписанная на VBA функция, для упомянутой выше метрики Левенштейна. Работает правда очень долго. Поскольку вычисления являются произведением количества исходных строк на количество строк шаблонов.
Для ускорения можно построить индекс. Тогда сначала будет долго этот индекс строиться, а потом быстро по нему искать. Если база меняется редко, и индексы не нужно часто перестраивать, то это поможет.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Работа с различными адресными базами

Сообщение Boris » 10 дек 2010, 10:24

KolesovDmitry писал(а): Для ускорения можно построить индекс. Тогда сначала будет долго этот индекс строиться, а потом быстро по нему искать. Если база меняется редко, и индексы не нужно часто перестраивать, то это поможет.
А не поясните как именно построить индекс? Как я понял алгоритм расчета метрики состоит в расчете перестановок между двумя текстовыми строками. И функция расчета является кубической или квадратичной на длинной обеих строк. То, что можно вычислить какое-то число которое можно присвоить самой строке и оно будет говорить о подобии строки другим строкам с близкими числами индексов, ну или с помощью какой-то другой зависимости, я из описания метрики не вынес.
---
Что же касается самого вопроса, заданного автором, то там при отсутствии орфографических ошибок, дело сводится к нормализации формальных записей, что обычно быстро производится с помощью словаря подстановок, т.к. "М." в названии "М.Бронная" ничем кроме "Малая" не бывает. И хотя не большой знаток московской топонимики, но все же "М.Бронная" и просто "Бронная" должны быть разными улицами. Ну или для того, что бы так решить надо точно знать, что "Б.Бронной" не существует.

Аватара пользователя
nadiopt
Гуру
Сообщения: 4744
Зарегистрирован: 29 янв 2009, 13:27
Репутация: 495
Ваше звание: хрюкало
Откуда: Санкт-Петербург
Контактная информация:

Re: Работа с различными адресными базами

Сообщение nadiopt » 10 дек 2010, 10:28

таки существует Б. Бронная, и на ней находится синагога
http://www.bronnaya.ru/
ин гроссен фамилен нихт клювен клац клац

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Работа с различными адресными базами

Сообщение Boris » 10 дек 2010, 10:33

значит постановка задачи предельно не верна и предельно не политкорректна. :mrgreen:

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Работа с различными адресными базами

Сообщение KolesovDmitry » 10 дек 2010, 19:16

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 КБ) 724 скачивания
BKT.png
Построение первого уровня дерева BKT
BKT.png (2.34 КБ) 9268 просмотров

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Работа с различными адресными базами

Сообщение Boris » 12 дек 2010, 03:45

спасибо за информацию.
тряхнем стариной. когда-то я почти написал диссертацию по быстрому поиску по заранее рассчитанным признакам у органических веществ.

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Работа с различными адресными базами

Сообщение gamm » 12 дек 2010, 07:10

Boris писал(а):спасибо за информацию.
тряхнем стариной. когда-то я почти написал диссертацию по быстрому поиску по заранее рассчитанным признакам у органических веществ.
ну если уж помянули отношение структура/свойство ... в начале 90-х мы использовали такой индекс: берем вектор (unsigned char) длиной число возможных в строке знаков (букв в алфавите+число точек, запятых, и т.д. - например амидных групп), и в i-ю позицию пишем 1, если такая буква/знак есть в слове (или считаем число таких букв) - линейный проход, поскольку сама буква используется как индекс в таблице номеров позиций. Мы считали в памяти скалярные произведения, т.е. число совпадающих позиций.

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя