Имя: Пароль:
1C
 
Интелектуальное сравнение строк
0 kunashir
 
22.09.08
16:24
Есть потребность сравнить две строки и определить их процент идентичности, т.е.
Стр1="Информациооно-тех.сопровождение программы 1С"
Стр2="Информационно-техническое сопровождение программы 1С"
и выдавала что строки схожи на 80%.
Имеются ли такие алгоритмы вообще и для 1С в частности?
1 PRADA
 
22.09.08
16:26
(1) вообще имеются, я думаю - можно и самому придумать, но что тут интелектуального?
2 FN
 
22.09.08
16:27
Разбивай обе фразы на слова и в списки значений загоняй - потом обход первого списка и проверка на Принадлежит второму списку
как-то так
3 Медвед1Сник
 
22.09.08
16:28
(0) Это задача для нейросетей. Ну можно и каким то эквивалентом. Ведь поисковые машины тоже в принципе с подобной задаче сталкиваются (определяя "релевантность").
4 kunashir
 
22.09.08
16:30
(1) под интелектуальностью имел ввиду отличие от просто Найти (Стр1, Стр2) и им подобных
5 Токс3
 
22.09.08
16:42
(4) Найти (Стр1, Стр2) в цикле это уже интеллект?
6 Deon
 
22.09.08
16:45
Функция Релевантность(выр1,выр2)
   Длина1 = СтрДлина(Выр1);
   Длина2 = СтрДлина(Выр2);
   
   СовпавшихСимволов = 0;
   Сч = 1;
   Для Сч = 1 По Длина1 Цикл
       Символ = Сред(Выр1,Сч,1);
       НомерПозиции = Найти(Выр2,Символ);
       Если НомерПозиции = 0 Тогда
           Продолжить;
       Иначе
           СовпавшихСимволов = СовпавшихСимволов + 1;
           Выр2 = Лев(Выр2,НомерПозиции-1)+Сред(Выр2,НомерПозиции+1);
       КонецЕсли;
   КонецЦикла;
   рел="";
   Если (Длина1<>0) и (Длина2<>0) тогда рел=цел((СовпавшихСимволов/Длина1 + СовпавшихСимволов/Длина2)/2*100);КонецЕсли;
   возврат рел;
КонецФункции
7 andrewalexk
 
22.09.08
16:53
(6)
:)
..а я в свое время тупо сравнивал совпадения посимвольные с начала потом с конца.. а потом эмпирически выводил порог вероятности совпадения..
8 Deon
 
22.09.08
16:55
(7) Круто :) Хорошо работало?
9 andrewalexk
 
22.09.08
17:05
(8)
:)
"хорошо" это не то слово для категории "эмпирически"
но пары типа
Иванофф Андрей Петрович ~ Иванов Андрей Петрович
и
Иванов Андрей Петроффич ~ Иванов Андрей Петрович
ловились
;)
10 Дядя Васька
 
22.09.08
17:11
Свалить символы в ТЗ и отсортировать имхо... Колонка1 - символы из строки 1, колонка2 - символы из строки 2.. После сортировки посмотреть сколько получилось пустых, это несовпавший процент. Т.е. если из 10 символов пустых три, значит совпадение 70%.
11 Токс3
 
22.09.08
17:25
(6) Посимвольное сравнение может круто облажаться...
Угадай, с чем будет 100-ное совпадение "улыбок тебе казак"?
12 Михей
 
22.09.08
17:27
(11) "казак е...т кобылу" чтоли?
13 Токс3
 
22.09.08
17:30
(12) Уху... перестановка символов валит интеллект на корню...