 |  | |  | |
Алгоритмы нечеткого сравнения строк. Практическое применение. | Полный текст материала
Другие публикации автора: Left Left
Цитата или краткий комментарий: «... Алгоритмы нечеткого сравнения строк. Практическое применение. ...» |
Важно:- Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
- Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
- При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
- Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.
Добавить свое мнение.
| | Содержит полезные и(или) интересные сведения | [1] | 1 | 33.3% | | | | Ничего особенно нового и интересного | [2] | 2 | 66.7% | | | | Написано неверно (обязательно укажите почему) | [3] | 0 | 0% | | Всего проголосовали: 3 | Всего проголосовали: 0 |
[INTERBASE] [Поиск и сортировка] [Обработка текста] [Нечеткое сравнение]
Отслеживать это обсуждение 
Всего сообщений: 617-04-2020 16:03Перевёл на c (с некоторыми удалениями - у меня текст уже подготовлен, без пробелов и т.п.)
int Flag(int Count_, char* S1_, char* S2_, int i, int j)
}
return Result;
}
int CompareStrings(char* S1, char * S2, int MatchCount, int * NCount)
int i = 1;
do
++j;
}
while(j < strlen(S2));
++i;
}
while(i < strlen(S1));
if (strlen(S1) < strlen(S2))
Count_ = strlen(S1);
else
Count_ = strlen(S2);
*NCount = Count_ - Count;
return Count;
}
|
|
18-05-2009 01:51Выдаёт высокую релевантность для ооочень далёких фраз. |
|
14-11-2005 09:13Есть в этой функции подводный камень на который я напоролся: не всегда кол-во несовпадений равно кол-ву символов в меньшей строке минус кол-во совпавших символов.
В качестве примера:
S1 = '00280ММПТИЦАПРОДОМАРКЕТПРОДОМАРКЕТЛЕНИНА87'
S2 = '00050ММПТИЦАПРОДОМАРКЕТЮРША100'
число совпавших символов = 30
длина наименьшей строки = 30
число несовпадений = 0!!!
и это с учетом, что MatchCount = 4
|
|
29-08-2005 04:40сообщение от автора материала Кстати насчет искуственного ин-та:
Пробывал составить "нейроннуюсеть" и обучить ее.
Задача настолько трудоемкая, что проще все написать if-ами |
|
20-08-2005 16:14И мне пришлось конвертировать базу данных с ФИО и адресами. Для экономии времени надо первоначально
проверять записи с совпадающими первыми символами фамилии, имени и отчества,и лишь при неудаче плавно переходить к нечеткому сравнению. |
|
01-08-2005 16:29"Качество" работы такой функции можно оценить двумя числами: процентом ложных нахождений, когда функция признает совпадающими совершенно разные строки, и процентом пропусков совпадений, когда она не признает совпадающими те строки, которые нам бы хотелось "по смыслу" видеть совпадающими.
Так вот, думаю, что у такой функции есть значительный резерв повышения качества, за счет отказа от универсальности, и "погружения" ее в конкретные особенности сравниваемых строк. Например, если часто встречаются сокращения некоторых слов, типа "Договор" - "дог.", "Свидетельство" - "св-во", то можно жестко закодировать перечень подобных сокращений. Если какие-то слова встречаются часто, то есть текст перегружен ими, и они дают завышенный процент совпадения на разных фразах, например "государственный", "типовой", то опять же можно составить список таких слов, и научить алгоритм учитывать их с ментшим весовым коэффициентом. И наоборот, если какие-то слова являются ключевыми, можно составить их список и учитывать их с большим весовым коэффициентом.
Короче говоря, я бы посмотрел на случаи ложных срабатываний, разобрался с причинами, и устранял бы их способами вроде приведеных. А вообще - тема неисчерпаемая, переходящая в искусственный интеллект.
|
|
|
|