Практика на PHP. Пишем скрипт, который сравнивает 2 текста на совпадение.
10 Ноябрь 2009 // Комментарии (2) // Уроки PHP
Долго не писал в своем блоге, был занят одной интересной задачкой. Родилась она из нечего делать. Я решил написать программу на PHP, которая бы сравнивала два текста на совпадение и в конце выдавала на сколько процентов два текста похожи. Прежде чем писать свой скрипт на PHP я погуглил, нашел не много вариантов решения этой задачи, больше было вопросов – “Как написать такой скрипт?”, что в принципе понятно – самому тоже лень было делать, но я все же смог=).
Я начал с поиска алгоритма, потому что для такого скрипта – это самое главное. Ничего внятного по этому вопросу не нашел, долго думал как сравнить два текста. Решил сделать так.
Мой алгоритм для сравнения двух текстов:
1. Делаем нижний регистр для всего текста.
2. Оставляем только слова, все остальные символы удаляем(кроме пробелов).
3. Превращаем оба текста в массивы из слов, теперь задача упростилась нужно сравнить уже два массива. После этого шага можно пойти разными путями, но вот как я решил сравнить эти два массива из слов.
4. Создаем дополнительные массивы, в которых удаляем дубликаты слов. После этого для каждого слова считаем количество повторений в тексте.
5. Сравниванием число повторений для каждого слова из двух массивов.
6. Т.к. будут попадаться такие слова, которые единожды встречаются в тексте, придется их посчитать.
7. Считаем суммарное различие и подсчитываем процент совпадения.
8. Если один текст совсем отличен от другого или в каком-то слов больше, то результат будет отрицательным. Поэтому для такого случая будем говорить что один текст похож на другой на 0%.
