powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Поиск похожих строк
27 сообщений из 27, показаны все 2 страниц
Поиск похожих строк
    #33579530
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думал, что это FAQ, но мало чего нашел.

Кто как делает - поделитесь.

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

Пока ничего не придумал, кроме вычленения и проверки на совпадение
нескольких подстрок из начала и из конца, но результат не устраивает - много
мусора и "наиболее похожий вариант" указать невозможно.

Подкинте идею, пожалуйста.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33579641
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33579863
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, пойду - застрелюсь :-)


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580105
Shoora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А че, думал все так просто? Запросик с лайком написал и вот тебе строчки на любос языке, отсортированные по релевантнисть? :))
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580178
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, я не думал, что все так просто.
Но я и не думал, что кусок из ядра Яндекса придется вставлять в программку,
которая улицы с КЛАДР'ом сверяет. :-o


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580427
Shoora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну с яндексом это ты переборщил, но если требуется адекватный нечеткий полнотекстовый поиск, то без морфологического анализа не обойтись.
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580460
Shoora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя стоп. КЛАДР, говоришь? Так там небось все в одном падеже и порядок слов соблюдается, тогда можно попробовать замутить без морфомодуля, только по лайку долго будет работать. Индексатор простенький можно написать, а дальше дело техники.
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580520
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит адекватный?
Собственно это, на самом деле, в некотором роде система поддержки принятия
решений с задачей оценки релевантности строк.
Морфология тут, вроде не причем, но без Яндекса - точно никуда :-).


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580558
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работало оно до меня ЛАЙКом долго и неточно, поэтому задача и возникла. А
порядок слов... лучше не вспоминать как издеваются над улицами.
Хотел уж написать нормально, чтобы в новую базу, с КЛАДРом связанную
переносить.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580677
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle text не поможет?
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580697
Shoora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда так. Вот примерная схемка бд поисковой системки картинка
Алгоритм такой :
Пишешь индексатор - хоть на php, хоть на перле, хоть любом языке, какой знаешь.
Он пробегает по полю string в Your_table и парсит его словам, исключая то, что перечислено в таблице stopword (типо предлоги и что еще хочешь (мусор по вашему мнению) - для русского и английского типичные могу скинуть по мылу). Все уникальные слова заносит в dictionary и заполняет x_dict2tab - собственно индексную таблицу, кстати offset - это номер слова в строке.

При поиске - пишешь поисковый алгоритм. Он парсит запрос пользователя, исключая stopwords. Если народ коверкает названия, создайте еще табличку mistakes, в которой перечислите исковерканные слова и свяжите ее с diktionary (такая база набирается со временем). Ну и каждое значимое слово в запросе пользователя ищешь в dictionary, узнаешь их did's, после чего изобретаешь алгоритм релевантного поиска с x_dict2tab - по совпадению или порядку следования.
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580788
Shoora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Картинку не так вставил...
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33580800
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Shoora:
Такая схема частично уже и есть, а вот алгоритм релевантного поиска - самое
интересное. Я его и изобретаю.
Спасибо.

to ModelR:
Не хотелось бы прикручивать то, чем раньше не пользовался, а что это сильно
может помочь?


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33583258
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, как раз для создания индексов по словам и поиска по вхождениям слов.
Если не нужны русские словоформы, то вполне достаточно.
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33603013
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри здесь - тыНц
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33603186
Leonid Boitsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, блин, Вы загнули. Да и в Яндексе я уже не работаю, больше :-) Но по части сравнения предложений (адресов) действительно так просто проблема не решится. Я бы предложил следующий план действий
1) Какой-нибудь простейший датамайнинг, чтобы выявить-составить словарь основных сокращений-синонимов
2) Написать не очень сложную утилитку, которая сравнивает предложения. О том, как это делается написано http://itman.narod.ru/ir/faq/fzfaq.html. Слова можно сравнивать тем же Левенштейном, очень сильно "наказывая" за расхождение в начале и очень несильно за расхождение в конце. Это частично компенсирует отсутствие морфологии. Получите значения похожести для всех пар слов. Дальше можно делать примерно так, как описано. Можно поступить кондовее, просто посчитать количество общих слов, у которых похожесть выше некоторго заданного порога. Гарантирую, что со словарем синонимов-сокращений для сравнения адресов будет очень неплохо работать.

Петров Алексей
Не, я не думал, что все так просто.
Но я и не думал, что кусок из ядра Яндекса придется вставлять в программку,
которая улицы с КЛАДР'ом сверяет. :-o


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33603225
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АлексейНо я и не думал, что кусок из ядра Яндекса придется вставлять в программку,
которая улицы с КЛАДР'ом сверяет. :-o

В одном из проектов сталкивался с подобной задачей, правда все решилось через "вумен-интерфейс" сели девочки и для почти 1000 клиентов перебили адреса ;). Но если что-нибудь получится сообщите. Возможно опять такая проблема всплывет.
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33603365
Leonid Boitsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по поводу девочек. В свое время данная задача у нашего клиента была решена еще более простым способом. В качестве метрики похожести просто количество общих слов в адресах считалось (то есть даже всякие скоращения не учитывались) и ничего это помогло вычистить базу очень существенно. Процесс ручной чистки ускорился неимоверно.

----------------
http://itman.narod.ru/ir/index.html Sited devoted to information retrieval and fuzzy searching
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33603471
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал сечас так:

Из КЛАДРа выбираю простым селектом все улицы из населенного пункта. Если
нас.пункт еще не определен, то пользователь выбирает его из КЛАДРА. Потом
смотрим на название улицы, которое в старой базе и фильтруем непохожие
локально с помощью некой оценки похожести.
Т.е. показываем список оцененных выше определенного порога (если чего -
порог можно поднять или опустить). Пользователь выбирает истинный и в
специальной табличке фиксируется сопоставление. Если в следующий раз
встречается та же улица в том же нас.пункте - сопоставление происходит
автоматом.

Оценку выбрал такую:

Для каждого символа из эталонной строки ищу для каждой строки списка все его
вхождения.
Каждое вхождение каждого символа оценивается как:
1/exp(abs(<расстояние>)/2), где
1 = 1
exp - функция экспоненты
abs - абсолютное значение
<расстояние> - расстояние между одинаковыми символами в эталонной строке и
в оцениваемой строке.
Все оценки суммируются.
При значении порога прибл 6-7 отбирается от 3 до 10 похожих названий, из
которых легко выбрать.

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

Готов на вопросы ответить.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33604310
STRELETS12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делал для кладра: (кладр хранится в виде дерева)
1. сделал словарь и связку словарь-кладр
2. в словарь добавил синонимы со ссылкой на словарь
3. для каждого слова из входящего адреса получаем список ПК из кладра
4. получаем декартово произведение, оставляем только те строки, где ПК идут по возрастанию.
5. оставляем строки с максимальным количеством непустых полей.
6. если осталась одна строка, то это то, что нужно
т.е. алгоритм похож на Т9 на телефонах
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33605262
Shoora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторДля каждого символа из эталонной строки ищу для каждой строки списка все его
вхождения.
Каждое вхождение каждого символа оценивается как:
1/exp(abs(<расстояние>)/2)

И это быстро работает? Хотя, конечно, в пределах одного населенного пункта улиц немного... А населенный пункт пользователь выбирает из списка?

Основная проблема - это найти нормальную форму слова.
Простое решение вот : тынц
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33605545
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>И это быстро работает? Хотя, конечно, в пределах одного населенного пункта
>улиц немного... А населенный пункт пользователь выбирает из > списка?
Сказать сколько улиц (проспектов, переулков) в населенном пункте под
названием Санкт-Петербург?
И тем не менее скорость фильтрации приемлимая - сопоставимая с временем
реакции пользователя

>Основная проблема - это найти нормальную форму слова.
Это опять морфология. Морфологии нету у меня. У меня ошибки при вводе.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33605638
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Jimmy:
Спасибо за интересную ссылку, только поздно уже :-).


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33605646
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На здоровье :0)
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33616718
Slider_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помниться, в одной базе наименования городов вводились ручками, а не выбирались из справочника, как это положено. Так вот, написание наименования города "Санкт-Петербург" было в 11 вариантах, я чуть не застрелился, когда все это в порядок приводил, пришлось писать полуавтоматическую тулзу для выявления таких вещей...
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33616874
Петров Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Помниться, в одной базе наименования городов вводились ручками, а не
> выбирались из справочника, как это положено. Так вот, написание >
> наименования города "Санкт-Петербург" было в 11 вариантах

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

Алйгиксние унычёе дзолакаи, что нажнево, в коакм пкдояре рласнжопоеы бвкуы в
совле, гвонлае, чобты пвеаря и пясленодя блыи на мтсее, тдога тсект бедут
чьсиаття, помтоу что мы чеиатм не по сгалом, а висомнеприам свола цкиеолм
Источник: http://www.newslab.ru/review/171928
Никогда, никогда, никогда не разрешайте пользователям редактировать
справочники!!!


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Поиск похожих строк
    #33616961
Slider_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, люди все понимали, что это один город, но как объяснить это машине... В общем, тоже помучался, при выделении этой сущности в справочник и их объединению. А справочники должны конечно, редактировать не все пользователи, а ответственные лица, специально на это дело назначенные.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Поиск похожих строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]