Алгоритм сравнения строк
Функция нечёткого сравнения использует в качестве аргументов две строки и параметр сравнения - максимальную длину сравниваемых подстрок. Результатом работы функции является число, лежащее в пределах от 0 до 1. 0 соответствует полному несовпадению двух строк, а 1 - полной (в определённом ниже смысле) их идентичности.
Сравнение строк происходит по следующей схеме. Пусть, например, в качестве аргументов заданы две строки "test" и "text" и некоторая максимальная длина подстрок, скажем, 4. Функция сравнения составляет все возможные комбинации подстрок с длинной вплоть до указанной и подсчитывает их совпадения в двух сравниваемых строках. Количество совпадений, разделённое на число вариантов, объявляется коэффициентом схожести строк и выдаётся в качестве результата работы функции.
Продолжим пример.
|
Сравниваемая подстрока |
Подстроки второй строки |
Есть совпадение? |
Количество совпадений |
Количество вариантов |
|
Сравниваем строку test со строкой text по подстрокам длины 1. |
|
t |
t, e, x, t |
да |
3 |
4 |
|
e |
t, e, x, t |
да |
|
s |
t, e, x, t |
нет |
|
t |
t, e, x, t |
да |
|
Сравниваем строку text со строкой test по подстрокам длины 1. |
|
t |
t, e, s, t |
да |
3 |
4 |
|
e |
t, e, s, t |
да |
|
x |
t, e, s, t |
нет |
|
t |
t, e, s, t |
да |
|
Сравниваем строку test со строкой text по подстрокам длины 2. |
|
te |
te, ex, xt |
да |
1 |
3 |
|
es |
te, ex, xt |
нет |
|
st |
te, ex, xt |
нет |
|
Сравниваем строку text со строкой test по подстрокам длины 2. |
|
te |
te, es, st |
да |
1 |
3 |
|
ex |
te, es, st |
нет |
|
xt |
te, es, st |
нет |
|
Сравниваем строку test со строкой text по подстрокам длины 3. |
|
tes |
tex, ext |
нет |
0 |
2 |
|
est |
tex, ext |
нет |
|
Сравниваем строку text со строкой test по подстрокам длины 3. |
|
tex |
tes, est |
нет |
0 |
2 |
|
ext |
tes, est |
нет |
|
Сравниваем строку test со строкой text по подстрокам длины 4. |
|
test |
text |
нет |
0 |
1 |
|
Сравниваем строку text со строкой test по подстрокам длины 4. |
|
text |
test |
нет |
0 |
1 |
|
Итого |
8 |
20 |
Приведённая таблица иллюстрирует алгоритм подсчёта коэффициента схожести двух строк. Для строк "test" и "text" и длины
|