В PHP под сопоставлением строк понимается процесс определения степени сходства или совпадения между двумя строками. Это может быть полезно в различных сценариях, таких как поиск похожих слов, сравнение введенных пользователем данных с заранее определенным набором значений или реализация алгоритмов поиска. В этой статье мы рассмотрим несколько методов сопоставления строк и расчета процентного совпадения с использованием PHP. Мы предоставим разговорные объяснения и примеры кода, которые помогут вам понять и реализовать эти методы в ваших проектах.
Метод 1: функция «Похожий текст»
Функция similar_text()
в PHP вычисляет сходство между двумя строками и возвращает количество совпадающих символов. Он работает путем сравнения каждого персонажа и присвоения оценки сходства. Вот пример:
$string1 = "Hello";
$string2 = "Hella";
similar_text($string1, $string2, $percentage);
echo "Percentage Match: " . $percentage . "%";
Результат:
Процент совпадения: 80 %
Метод 2: Расстояние Левенштейна
Алгоритм расстояния Левенштейна измеряет минимальное количество односимвольных изменений (вставок, удалений или замен), необходимых для преобразования одной строки в другую. Нормализовав расстояние, мы можем вычислить процент сходства. Вот пример:
$string1 = "Car";
$string2 = "Cat";
$levenshteinDistance = levenshtein($string1, $string2);
$maxLen = max(strlen($string1), strlen($string2));
$percentage = (1 - $levenshteinDistance / $maxLen) * 100;
echo "Percentage Match: " . $percentage . "%";
Выход:
Процент совпадения: 66,666666666667%
Метод 3: косинусное сходство
Косинусное сходство — это мера сходства между двумя ненулевыми векторами пространства внутреннего произведения. В контексте сопоставления строк мы можем рассматривать каждую строку как вектор и вычислять косинусное сходство. Вот пример использования класса CosineSimilarity
из популярной библиотеки PHP под названием “TextRank”:
use TextRank\TextRank;
use TextRank\StopWords\English;
$string1 = "Hello world";
$string2 = "Hello there";
$stopWords = new English();
$textRank = new TextRank($stopWords);
$similarity = $textRank->compare($string1, $string2);
$percentage = $similarity * 100;
echo "Percentage Match: " . $percentage . "%";
Результат:
Процент совпадения: 75 %
В этой статье мы рассмотрели несколько методов сопоставления строк и расчета процентного совпадения с помощью PHP. Мы обсудили функцию similar_text()
, алгоритм расстояния Левенштейна и косинусное подобие. В зависимости от вашего конкретного случая использования и требований вы можете выбрать наиболее подходящий метод. Не забывайте учитывать такие факторы, как производительность, точность и характер сравниваемых строк. Используя эти методы, вы можете улучшить свои приложения с помощью мощных возможностей сопоставления строк.