|
Нечеткий поиск по ФИО в базе | ☑ | ||
---|---|---|---|---|
0
Garykom
гуру
15.11.15
✎
23:00
|
Есть база (кому интересно 115ФЗ) примерно 6к+ записей
Там есть ФИО, ДР, паспорт, адрес Есть анкеты клиентов где тоже есть эти данные ФИО, ДР, паспорт, город, телефон и т.д. Анкет клиентов на данный момент 4к+, и каждый месяц +200. Какими алгоритмами будет быстрее сверять все наши анкеты на нахождении в перечне? Перечень довольно часто обновляется (целиком замена) несколько раз в месяц. Требуется сделать проверку всех наших анкет с нечетким поиском в перечне. Типа есть у нас Иванов Иван Иванович, а в перечне есть Иванов Иван Петрович - тогда этот наш Иванович И.И. должен попасть в список на проверку оператором. Алгоритм должен работать очень шустро. Максимум на проверку 10к среди 10к 2-5 минут. |
|||
174
Кирпич
19.11.15
✎
16:24
|
+(171) правда там на Delphi7. Кодировка ANSI.
|
|||
175
Garykom
гуру
19.11.15
✎
16:39
|
(174) мне как то пофиг я только питонов не люблю, жуются плохо
а дельфи тем более 7, еще с турбо паскаля на ура идет |
|||
176
Belomor
19.11.15
✎
16:40
|
Скинул свое решение для 7.7
|
|||
177
Кирпич
19.11.15
✎
16:42
|
(175) да я про кодировку. в новых delphi string юникодный. если нет 7, то придется переделывать.
|
|||
178
Garykom
гуру
19.11.15
✎
17:06
|
(177) это фигня, в лазарусе прекрасно компилится, только преобразование кодировки добавил чтобы нормально выводил вместо ?????
но чуял что где то наколка )) подставил свой список за период из 1600 фио, за 00:00:51:015 отработало но это решение все таки половинчатое, оно предполагает что хоть что то Ф, И или О обязательно правильно ввели и оно правильно в перечне тоже 1 28,57 АБРАМОВА ЮЛИЯ ВАСИЛЬЕВНА ГАНЖА ЮЛИЯ ВАСИЛЬЕВНА !нет в списке АБРАМОВСКАЯ ОЛЬГА ИГОРЕВНА !нет в списке АБУГОВА МАРИЯ ИЗБУДИНОВНА !нет в списке АВАЛИАНИ НАТАЛЬЯ ЮРЬЕВНА 1 23,08 АВДЕЕВ СЕРГЕЙ ВЛАДИМЕРОВИЧ ЖАРКОВ СЕРГЕЙ ВЛАДИМИРОВИЧ 2 23,08 АВДЕЕВ СЕРГЕЙ ВЛАДИМЕРОВИЧ ЗАХАРОВ СЕРГЕЙ ВЛАДИМИРОВИЧ 3 28,00 АВДЕЕВ СЕРГЕЙ ВЛАДИМЕРОВИЧ ЗЫБИН СЕРГЕЙ ВЛАДИМИРОВИЧ 4 28,00 АВДЕЕВ СЕРГЕЙ ВЛАДИМЕРОВИЧ ЗЫБИН СЕРГЕЙ ВЛАДИМИРОВИЧ 5 23,08 АВДЕЕВ СЕРГЕЙ ВЛАДИМЕРОВИЧ КАТУНЦЕВ СЕРГЕЙ ВЛАДИМИРОВИЧ 6 23,08 АВДЕЕВ СЕРГЕЙ ВЛАДИМЕРОВИЧ ЛЕОНОВ СЕРГЕЙ ВЛАДИМИРОВИЧ |
|||
179
Garykom
гуру
19.11.15
✎
17:08
|
(178)+ 1 28,57 АБРАМОВА ЮЛИЯ ВАСИЛЬЕВНА ГАНЖА ЮЛИЯ ВАСИЛЬЕВНА - чисто технически нужно смотреть паспорт на вопрос штампов прежних Ф и(или) еще что ))
|
|||
180
Кирпич
19.11.15
✎
17:17
|
(178) "что хоть что то Ф, И или О обязательно правильно ввели"
да нет. ему вообще по барабану. всё зависит от функции сравнения. какой процент совпадения тебе нужен. const LevenProcConst: Extended = 30; //процент несовпадений в нечетком сравнении вот LevenProcConst и крути |
|||
181
Garykom
гуру
19.11.15
✎
17:27
|
(180) тогда слишком долго считает...
|
|||
182
ProxyInspector
19.11.15
✎
17:27
|
Я сделал. Скорость приметно 5 сек на 200 тыс записей. Если допускать, что хотя бы одно поле должно совпадать то скорость вырастет раз в 10. Если допускать, что первая буква в Фамилии введена правильно, то скорость вырастет в два раза. Скорость пропорционально объему базы. Для 6 тыс записей скорость поиска << 1 сек
Нечёткое сравнение с возможностью вместо любого символа иметь что угодно. Если ищем "Иванов" тогда делаем фильтр ( Рег.Наименование LIKE "%иванов%") ИЛИ( Рег.Наименование LIKE "%ванов%") ИЛИ( Рег.Наименование LIKE "%и%анов%") ИЛИ( Рег.Наименование LIKE "%ив%нов%") ИЛИ( Рег.Наименование LIKE "%ива%ов%") ИЛИ( Рег.Наименование LIKE "%иван%в%") ИЛИ( Рег.Наименование LIKE "%ивано%") ИЛИ( Рег.Наименование LIKE "%иванов%") |
|||
183
ProxyInspector
19.11.15
✎
17:30
|
Можно список поиска втаскивать в таблицу значений, к помещать ее во временную таблицу и к таблице уже делать запрос. А можно в регистре сведений хранить информацию
|
|||
184
Garykom
гуру
19.11.15
✎
17:31
|
(182) люблю лисапедистов ))
после них мопед, супербайком кажется клиентам |
|||
185
Garykom
гуру
19.11.15
✎
17:34
|
(182) еще чуть чуть и дойдем до понимания метода N-грамм
|
|||
186
ProxyInspector
19.11.15
✎
17:34
|
Однако все это работает и будет работать не на копеечных 6 тыс записей, а на 6 млн :) Хотя хозяин барин.
|
|||
187
ProxyInspector
19.11.15
✎
17:35
|
Ты можешь бороться с
АВДЕЕВ СЕРГЕЙ ВЛАДИМЕРОВИЧ = ЗЫБИН СЕРГЕЙ ВЛАДИМИРОВИЧ |
|||
188
Кирпич
19.11.15
✎
17:37
|
(181) ну так всех, кого надо нашло. или нет?
а что на Lazarus медленно, так попробуй без отладчика запустить или это перекодировки в UTF8 сжирают время. На дельфях твой список из 5000 у меня за 4 секунды пролетает. (182) ну а теперь проделай это с остальными 1999999 людьми и скажи сколько это времени заняло |
|||
189
Гёдза
19.11.15
✎
17:37
|
Надо нейросеть учить
|
|||
190
ProxyInspector
19.11.15
✎
17:40
|
Мой метод даст в лучшем случае
авднеев сероей влажимирович = авдеев сергей владимирович |
|||
191
Garykom
гуру
19.11.15
✎
17:41
|
(190) перестановки двух символов?
это после пропусков и лишних букв такая же частая ошибка |
|||
192
ProxyInspector
19.11.15
✎
17:41
|
Перестановку тоже даст
|
|||
193
Garykom
гуру
19.11.15
✎
17:42
|
(191)+ вадеев сегрей владиимрович
|
|||
194
ProxyInspector
19.11.15
✎
17:42
|
Наверно
|
|||
195
Garykom
гуру
19.11.15
✎
17:42
|
(192) и чем он лучше метода n-грамм ?
|
|||
196
Garykom
гуру
19.11.15
✎
17:43
|
(189) думал, а какую порекомендуете?
я только с однослойными персептронами развлекался |
|||
197
ProxyInspector
19.11.15
✎
17:45
|
Перестановку берешь вместо "%" "_ _"
|
|||
198
ProxyInspector
19.11.15
✎
17:46
|
Конечно если
АВДЕЕВ СЕРГЕЙ ВЛАДИМЕРОВИЧ = Иванов Иван Иванович без нейросети не обойтись :) |
|||
199
ProxyInspector
19.11.15
✎
17:47
|
К слову % корректно съест
вадеев сегрей владиимрович = авдеев сергей владимирович |
|||
200
Garykom
гуру
19.11.15
✎
17:56
|
(180) сорри, сча соображать уже не могу, age++
так что позже отпишусь что меня смущает в этом методе принцип то понятен, ограничение полной проверки разными способами |
|||
201
ProxyInspector
19.11.15
✎
18:19
|
авдеев сергей владимирович = ХХХев сеХХХей влХХХ = Авдеев С. В.
Надо только чтобы Фамилия, Имя, Очество были в отдельных колонках. И самое интересное, что это все работает очень быстро. Если немного подумать, то можно список из 1 млн строк нечетко сравнить со списком из другого 1 млн строк |
|||
202
Кирпич
19.11.15
✎
18:45
|
(200) я знаю почему на лазарусе тормозит. там по умолчанию не работает двоичный поиск. замени функцию на это и всё залетает
procedure LoadStringList(T: TStrings; filename: string); var i: integer; begin T.LoadFromFile(filename); for i := 0 to T.Count - 1 do T[i] := FormatFio(T[i]); TStringList(T).Sorted := True; end; |
|||
203
Garykom
гуру
19.11.15
✎
18:45
|
(201) уже нашел простой в использовании способ, причем он универсальный без. разницы какого вида строки (сколько там пробелов и т.д.)
линейно зависит от длин строк для 1 млн х 1 млн примерно 10 млн миллисекунд потребуется а про то что пишешь, это нечто вроде построения множества символьных масок/шаблонов и затем поиск строк им удовлетворяющим две проблемы: 1. время на постройку/формирование этих масок/шаблонов 2. при увеличении длины строк линейно увеличивается время построения масок это мелочи, но квадратно увеличивается время на проверку (так как количество разных вариантов масок/шаблонов вырастает) |
|||
204
Кирпич
19.11.15
✎
18:49
|
+(202) ну и в StartProcess добавь в конце
FioList.Free; MasterFioList.Free; |
|||
205
Garykom
гуру
19.11.15
✎
19:01
|
(204)
"R := (R / L) * 100; result := R <= LevenProcConst;" когда const LevenProcConst: Extended = 30; //процент несовпадений в нечетком сравнении точно нет ошибки? |
|||
206
Кирпич
19.11.15
✎
19:10
|
(205) ну это не совсем процент. Я эту фигню к длине строки пытаюсь прилепить. Функция же выдает количество вставок, замен и удалений. На слове из 3 букв это одно, а на слове из 30 букв это другое. Можешь заменить на любую функцию. Я просто в инете нашел, вроде работает.
|
|||
207
Garykom
гуру
19.11.15
✎
19:14
|
(206) ты не понял ))
там выше если разница 0 то ложь, а тут если разница меньше или равна 30 то истина )) |
|||
208
Кирпич
19.11.15
✎
19:17
|
(207) ЕСЛИ 0 ТО СЛОВА ОДИНАКОВЫЕ. НАМ НЕ НУЖНЫ ОДИНАКОВЫЕ. МЫ ОДИНАКОВЫЕ ПРОПУСКАЕМ.
|
|||
209
Кирпич
19.11.15
✎
19:18
|
Блин большие буквы потому что на телефоне нитуда тыкнул
|
|||
210
Garykom
гуру
19.11.15
✎
19:25
|
(209) это ладно, просто для меня логика программы совсем непонятная
я не так думаю, совсем не так, и не так код пишу т.е. никаких возвратов/выходов досрочно из процедуры/функции, всегда до конца доходим с помощью условий и в конце возвращаем результат установленный по пути если выход досрочно то это try-catch сработал и зачем "function LevenProc(s, t: string; var R: Extended): boolean;" когда можно function LevenProc(s, t: string): Extended; ? но это мелкие придирки |
|||
211
Кирпич
19.11.15
✎
19:27
|
(210) да пиши как хочешь. Главное чтобы работало.
|
|||
212
Злопчинский
21.11.15
✎
09:47
|
(163) Не сношайте мозг.
если цена одной ошибки настолько высок - обеспечивайте потребный ресурс для снижения вероятности ошибки до приемлемого для вас уровня. |
|||
213
Garykom
гуру
21.11.15
✎
11:23
|
(212) ничего... и до складов как нибудь свой егаис, платон или 115фз доберется...
|
|||
214
Злопчинский
21.11.15
✎
11:31
|
(213) "..только в эру эту прекрасную нам не жить ни тебе уже и не мне...." ;-) - и слава богу! ;-)
|
|||
215
Garykom
гуру
21.11.15
✎
11:36
|
(214) ви таки так плохо думаете о наших законодателях?
|
|||
216
Garykom
гуру
21.11.15
✎
11:39
|
А насчет цен ошибки, проблема что $ то откуда взять на этот дополнительный прогрессивный (причем от количество продаж а не от суммы) налог?
Вот сча разбираемся Алинину как Аликину забили в базу, случайно выплыло она от СМС решила отказаться. А до этого было что у нас у человека в базе фамилия почему то нету в карточке (и как смогли догадаться занести у меня там запрет пустых), а по его имени и отчеству в перечне числится "нетоварищ" |
|||
217
ProxyInspector
21.11.15
✎
20:21
|
Как успехи в нечетком сравнении ФИО.
Я придумал небольшое дополнение к велосипеду, которое проводит нечеткое сравнение по ТРЕМ символам. Т.е. перестановка двух символов местами, опечатка в одном символе, залипание клавиш, изменение двух символов в трех соседних и как бонус - двойные фамилии. Иванов Иван Иванович Иавнов Иван Иванович Ивааанов Иоан Иванонанович Петров-Иванов Иван Иоанович Оказывается один и тот же человек |
|||
218
ProxyInspector
21.11.15
✎
20:27
|
Этот алгоритм работает с параноидальной подозрительностью. Он должен быть востребован в рамках современной действительности. На твоей базе 6000 фамилий проверка 200 фамилий будет занимать меньше 1 сек
|
|||
219
Garykom
гуру
21.11.15
✎
20:59
|
(218) патентуй :)
|
|||
220
Garykom
гуру
21.11.15
✎
21:01
|
(219)+ особенно если замены "а" на "a" или "о" на "o" нормально отрабатывает
причем без предварительной замены иначе как имена на английской раскладке без преобразования... |
|||
221
МуМу
21.11.15
✎
21:50
|
Было лень все читать. Как я делал в свое время и какие основные выводы почерпнул.
1) 1С здесь вообще не при делах(скорость важна, как форма отображения пожалуйста) 2) Реляционные СУБД тоже не очень подходят - но в моем вариантов особых не было, поэтому применялись следующие варианты комбинаторики. Сразу скажу что ошибка в два и более символа это уже на основании словарно-справочного сопоставления. Основная концепция построена на предрасчете(типа как ОЛАП кубы рассчитываются) Берется слово оригинал - к нему рассчитывается большое количество комбинаций слов с одной ошибкой. Как это делается - Путем простой замены каждого символа на любой проивзольный. Также аналогично делается для +1 и -1 символ близлежащий. Таким образом можно сопоставлять. Далее можно накладывать ограничения типа "нельзя столько и таких согласных подряд". Далее можно включать словарное сопоставление. Получается соотношение один ко многим. Служебная база очень растет, Но возможно сопоставление в онлайне. Если же онлайн не важен то тут другие алгоритмы, реляционные СУБД не самый лучший выбор. |
|||
222
МуМу
21.11.15
✎
21:51
|
Да и еще эти задачи хорошо параллелятся и поэтому скорость очень зависит от оборудования(при хороших алгоритмах).
|
|||
223
МуМу
21.11.15
✎
21:52
|
Обратите внимание как яндекс подсказки выдает. Можете подумать об ограничениях.
|
|||
224
Garykom
гуру
21.11.15
✎
22:05
|
(223) яндекс выдает подсказки на методе n-грамм + захардкоженный словарик
примеры: водка = вотка - ищется вобла = вопла - не ищется |
|||
225
Garykom
гуру
21.11.15
✎
22:09
|
(221) а проблема в принципе решена, при небольших объемах (до нескольких тысяч строк, причем строки до 150 символов)
даже просто расстояние Левенштайна нормально работает при реализации на общих языках и засовывании все в память если нужно "еще быстрее" то специальные методы с построением битовых хешей строк (коротких к примеру 32 бита) и сравнении уже только их |
|||
226
Злопчинский
21.11.15
✎
22:48
|
(217) вот вы все продолжаете велосипед изобретать
Эти ваши перестановки по трем символам стрмач автоматом понимает что эти пять фамилий очень близки по похожести Он их в пуле похожих автоматом поверху выдаст |
|||
227
Злопчинский
21.11.15
✎
22:53
|
С недели две назад клиент нарисовался
Я ему дохренища лет назад рм писал для магазина радиодеталей для заказов по прайсам поставщиков - до сих пор работает клиент счастлив А у него сиуевина посложнее чем с фамилиями была - у него все буквенно цифровое и все короткое и надо было похожее искать И даже в таких сложных условиях стрматч спавлялся очень хорошо Без оператора нифига все равно не обойдетесь Всегда какаяниь фигня вылезет типа щекатурка и штукатурка |
|||
228
ProxyInspector
21.11.15
✎
23:00
|
(220) Ему до лампочки русский на английский работает без предварительный замены. Алгоритм красивый и умнее всех нас вместе взятых. Обрабатывает пропуски 1-2 букв.
А мой алгоритм ищет водка = вотка вобла = вопла воводка вовыводка и так далее и тому подобное |
|||
229
Garykom
гуру
21.11.15
✎
23:00
|
(227) да тут уже предлагали нейронные сети...
|
|||
230
Garykom
гуру
21.11.15
✎
23:01
|
(228) № патента? ну или хотя бы авторского свидетельства
|
|||
231
ProxyInspector
21.11.15
✎
23:04
|
Свой алгоритм я тестировал на прайсах по запчастям. 250 тыс строк за 5 сек. Это уже с выводом отфильтрованных строк регистра сведений
|
|||
232
Garykom
гуру
21.11.15
✎
23:05
|
(231) а можно хоть что то для подтверждения? хотя бы видео?
|
|||
233
ProxyInspector
21.11.15
✎
23:07
|
Идея - смотри (182). Это нулевое приближение. За 1 мин этот алгоритм меняется до уровня (228)
|
|||
234
ProxyInspector
21.11.15
✎
23:09
|
Идеально он работает когда надо производить нечеткое сравнение по более чем одному полю. Чем больше полей, тем лучше
|
|||
235
ProxyInspector
21.11.15
✎
23:15
|
щекатурка и штукатурка по моему при поиске по трем символам мой алгоритм посчитает разными вернее
щекатурка = штукатурка штукатурка <> щекатурка В этом что-то есть, для дополнительной фильтрации |
|||
236
Garykom
гуру
21.11.15
✎
23:19
|
(233) хаха ))
"По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй эгото ялвятеся то, что мы не чиатем кдаужЮ бкуву по отдльенотси, а все солво цликеом. " |
|||
237
ProxyInspector
21.11.15
✎
23:23
|
(236) У тебя в каждом слове по две ошибки через правильный символ. Такого он конечно не съест. А вот
Иванов Иван Иванович Иавнов Иван Иванович Ивааанов Иоан Иванонанович Петров-Иванов Иван Иоанович съест |
|||
238
Garykom
гуру
21.11.15
✎
23:26
|
(237) проблема слишком много будет ложных срабатываний
можешь сам убедиться Иванов, Пиванов, Упиванов, Выпиванов, Черезногузадерищенкованов.... |
|||
239
ProxyInspector
21.11.15
✎
23:27
|
Естественно по этому и надо несколько полей
|
|||
240
ProxyInspector
21.11.15
✎
23:28
|
Фамилия, имя, отчество ну а потом оператор
|
|||
241
ProxyInspector
21.11.15
✎
23:29
|
Согласись, что Иванов, Пиванов - это одно и тоже. Ошибка в одной букве
|
|||
242
Garykom
гуру
21.11.15
✎
23:30
|
(241) для поиска "Пиванков" нет
|
|||
243
ProxyInspector
21.11.15
✎
23:32
|
Иванов = Пиванов
Иванов <> Пиванков Иванов = Иванков |
|||
244
ProxyInspector
21.11.15
✎
23:36
|
Конечно там есть побочные эффекты типа
Иванов = Иванкян - это правильно, если ты допускаешь ошибку в трех буквах |
|||
245
Garykom
гуру
21.11.15
✎
23:39
|
(243) по сути то что предлагается это обычный "Алгоритм расширения выборки"
из http://habrahabr.ru/post/114997/ только без составления словаря, вместо этого составляем "шаблоны поиска" |
|||
246
ProxyInspector
21.11.15
✎
23:43
|
Да только он реализован средствами базы по индексированному полю. Поэтому очень быстрый. Более того Алгоритм расширения выборки они не смогут реализовать по трем символам. А у на он реализован
|
|||
247
Garykom
гуру
21.11.15
✎
23:47
|
(246) и все равно процент достоверности в сравнении со скоростью поиска никакой ))
т.е. если посчитать "качество" алгоритма то будет хуже других стандартных вот для сопоставления номенклатуры скажем может и катит (по артикулам/кодам зарытым внутри длинной строки в вперемешку с хламом) |
|||
248
ProxyInspector
21.11.15
✎
23:49
|
Если ты ищешь во трем полям, то все получается великолепно. Ну и конечно если ошибок не очень много
|
|||
249
ProxyInspector
21.11.15
✎
23:54
|
Качество поиска великолепное.
Есть две большие разницы ошибка в одной букве, ошибка в двух буквах и перестановка, ошибка в трех буквах и перестановка, английский/русский алфавит |
|||
250
ProxyInspector
21.11.15
✎
23:58
|
Что просишь, то и получаешь. Если делать поиск по словарю как (245) Словарь 100 тыс слов,
То "крокодил" - отработает замену трех символов за время << 1 сек. |
|||
251
Garykom
гуру
21.11.15
✎
23:58
|
(249) очень сложно "уровень похожести" регулировать для выборки
точнее даже никак |
|||
252
ProxyInspector
22.11.15
✎
00:00
|
Ты делаешь предварительную выборку по мягкой схеме ТРИ символа, а потом на результате делай уровень похожести
|
|||
253
Garykom
гуру
22.11.15
✎
00:05
|
(252) можно конечно, но зачем?
когда сразу можно искать с заданным уровнем похожести? причем этот поиск даже быстрее будет вот предварительная подготовка (разовая) построение хешей и запись их в базу (получение их нее) да не очень быстро |
|||
254
ProxyInspector
22.11.15
✎
09:45
|
(236)
"По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм. Пичрионй эгото ялвятеся то, что мы не чиатем кдаужЮ бкуву по отдльенотси, а все солво цликеом. " Имея словарь на 100 тыс символов. При условии, что первая и последняя буква правильная, что внутри буквы могут быть переставлены в произвольном порядке, а несколько букв добавлены, алгоритм (182) прочитает данный текст без ошибок на уровне 99%. Чуть хуже, чем человек. Человек привлекает для фильтрации контекст. |
|||
255
ProxyInspector
22.11.15
✎
09:49
|
Если еще хотя бы совпадал еще и слог. А вот если еще прикрутить дополнительный анализ, то может прочитать все.
|
|||
256
МуМу
22.11.15
✎
13:38
|
Я вас умоляю - 200 анкет в месяц явно не стоят сложных алгоритмов. ФИО в 200 записей можно и глазами просмотреть.
|
|||
257
Злопчинский
22.11.15
✎
13:41
|
(256) в день...
"все что они делают руками - все плохо..." |
|||
258
Кирпич
22.11.15
✎
14:14
|
(256) да там алгоритм примитивный, вся программа в 20 строчек да функция расстояния Левенштейна, которая тупо копипастится из интернета.
|
|||
259
Кирпич
23.11.15
✎
10:15
|
Здравствуй, бложек.
С утра встал в прекрасном настроении и сделал вариант с хешированием по сигнатуре. Отрабатывает за 1,5 секунды. Прежний вариант (154) отрабатывал за 4,5 секунды. Прогресс! |
|||
260
Garykom
гуру
23.11.15
✎
10:19
|
(259) ага ))
|
|||
261
Garykom
гуру
23.11.15
✎
10:19
|
(259) длина битового хеша какая?
|
|||
262
Кирпич
23.11.15
✎
10:21
|
(261) тупо со статьи на хабре стырил. 13
|
|||
263
Кирпич
23.11.15
✎
10:21
|
(261) да он у меня и не битовый. просто строка с нулями и единицами
|
|||
264
Garykom
гуру
23.11.15
✎
10:27
|
(263) ыыыы, ты переведи на битовый )) и дальше XOR'ами
слегка удивишься )) |
|||
265
Garykom
гуру
23.11.15
✎
10:28
|
(264) писал уже вроде, на тестовых 1 запись среди 10к за 1 мс при подборе похожих
это как бы тысячная доля секунды |
|||
266
Кирпич
23.11.15
✎
10:31
|
(264) да это не тот хеш
ты про simhash наверное говоришь |
|||
267
Garykom
гуру
23.11.15
✎
10:35
|
(266) а когда хеши сравниваются это уже пофиг
от видов хешей зависит только качество поиска и скорость подготовки базы а ищем то потом все равно одинаково по числу различий в битах |
|||
268
Кирпич
23.11.15
✎
10:47
|
(267) да у меня после этого хеширования всего штук 300 хешей получается на твою базу из 5000 фамилий. там даже смысла нету в битах это хранить. ну сэкономлю 100 миллисекунд. фигня.
Попробую simhash теперь запилить. |
|||
269
Кирпич
23.11.15
✎
10:51
|
+(268) вот для simhash важно хранить в числе и быстро разницу в битах считать, потому что там на каждую фамилию будет свой хеш, если я правильно понял эту хрень.
|
|||
270
Кирпич
23.11.15
✎
11:02
|
+(269) ну не на каждую фамилию, а на группу похожих фамилий.
|
|||
271
Кирпич
23.11.15
✎
11:04
|
Гы. Получается, в нашем случае, когда похожих ФИО мало, simhash вообще нафиг не нужен. Тратить время на его создание глупо и смешно, если он действительно долго создается.
|
|||
272
Garykom
гуру
23.11.15
✎
11:27
|
(271) нет не долго, долго это относительно поиска по нему
(269) (270) не совсем, для симхеш можно просто нужную длину выбирать и этим регулировать как хочется размеры похожести |
|||
273
Кирпич
23.11.15
✎
11:38
|
(272) ну у тебя сколько по времени хеши генерятся?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |