Нечеткое сравнение строк #322136


#0 by Вадимыч
Посоветуйте пожалуйста алгоритм нечёткого сравнения строк. Мне нужно сравнивать названия контрагентов, т.е. строки в среднем от 10 до 25 символов. Перевёл один хороший алгоритм в Delphi на 1С, но он работает ужасно долго! Где-то по 10-20 мин на одно сравнение! Помогите пожалуйста! //------------------------- Нечеткое сравнение -------------------- Функция Соответствие(с1, с2, А, Б)    ГлобальнаяСумма = 0; Мах = 0;    //~Цикел:                //Если Сред(А, с1, 1)=Сред(Б, с2, 1) Тогда      //    ГлобальнаяСумма = ГлобальнаяСумма + 1;    //    Если (с1<СтрДлина(А)) И (с2<СтрДлина(Б)) Тогда    //        с1 = с1 + 1;    //        с2 = с2 + 1;    //        Перейти ~Цикел;    //    КонецЕсли;    //КонецЕсли;    Пока Сред(А, с1, 1)=Сред(Б, с2, 1) Цикл        ГлобальнаяСумма = ГлобальнаяСумма + 1;        Если (с1<СтрДлина(А)) И (с2<СтрДлина(Б)) Тогда            с1 = с1 + 1;            с2 = с2 + 1;        Иначе            Прервать;        КонецЕсли    КонецЦикла;    Если (с1<СтрДлина(А)) И (с2<СтрДлина(Б)) Тогда        Сумм = Соответствие(с1+1, с2+1, А, Б);        Если (Мах<Сумм) Тогда Мах = Сумм; КонецЕсли;    КонецЕсли;        Если с1<СтрДлина(А) Тогда        Сумм = Соответствие(с1+1, с2, А, Б);        Если (Мах<Сумм) Тогда Мах = Сумм; КонецЕсли;    КонецЕсли;    Если с2<СтрДлина(Б) Тогда        Сумм = Соответствие(с1, с2+1, А, Б);        Если (Мах<Сумм) Тогда Мах = Сумм; КонецЕсли;    КонецЕсли;    Возврат ГлобальнаяСумма + Мах; КонецФункции Функция НечеткоеСравнение(Строка1, Строка2)    Возврат Соответствие(1, 1, Строка1, Строка2) * 2.0/(СтрДлина(Строка1) + СтрДлина(Строка2)) * 100; // Процент соответствия КонецФункции //--------------------------------------------------------------
#1 by Вадимыч
Ой, извините, забыл коменты убрать и тег код вставить!
#2 by Ursus maritimus
За перейти надо расстреливать без суда и следствия.
#3 by Ursus maritimus
если 8.1, то есть полнотекстовый поиск.
#4 by Андрюха
"Цикел" - готично
#5 by yukon
может не стоит изобретать велосипед? попробуй, посмотри здесь strmatch - Нечеткое сравнение и поиск строк и здесь [P2P] "Удар По Бездуховности" v.1.0д
#6 by Вадимыч
>>>strmatch Спасибо! То что надо. Работает очень быстро!
#7 by Злопчинский
Автору strmatch - памятник при жизни! офигенная вещь!
#8 by insider
кто код смотрел: обработка по пробелам слова вычленяет и потом по ним ищет? тогда это просто...
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям