Это очень сложная математическая система. Но можно применить несколько интересных решений.... но это чисто для человека, который просто ворует новости и делается свой сайт популярным (якобы)
во-первых:
valenok пишет:можно попробовать проверять на совпадение слов
Тоесть превращать обе новости в массив строк
и для каждого слова проверять есть ли оно во втором массиве.
без обид, но нужно знать не слова, а их значимость. Например, совпали 1000 слов "убить", но не совпало только одно слова "путин" и "обама"
В данной ситуации нужно делать приоритет слов. А это уже большие затраты и большая работа.
И далее...
Форматирование на сайтах разное, а значит
if $str1 == $str2 не прокати.
Для этого нам нужно:
1. мы считаем что слова имеющие менее 3-х букв (не считая слова из цифр) не актуальны. Это скорее всего союза и что-то такое подобное.
2. Нам не нужны пробелы, точки, запятые, тире, кавычки и т.п. и т.д.
Тут мы уже получаем первое правило:
- нужно из текста вытащить все слова по правилам: если слово состоит из только цифр, только букв, цифр и "примеси".
- нужно вытащить слова не менее 3-х знаков. Это не распространяется на слова "только цифры" и "цифры с примесью"
Теперь мы имеем массив слов. И можем смело выставлять приоритеты
1. Допустим если совпали все слова из букв - ставим 10
2. Если совпали все слова с цифрами - ставим 5
3. если совпали все слова с цифрами с "примесью" - ставим 2
Результат
- 17 - полное совпадение
- 15 - возможное совпадение
- 10 - общее совпадение
Чуть поясню...
[1] буквы - тут всё понятно.. Слово есть слова.. его трудно поменять как то. Но есть варианты: Иванов, Иванова, Иванову...
Тогда мы можем добавить ещё одно правило к словам из "букв". Удаляем гласные из слов и получаем дополнительное правило
- если совпали все слова из букв без окончаний - ставим 8
- если совпали все слова из букв - ставим 2
Как видно мы 10 разделили на две части. Т.е. результат можно ещё более сделать "интеллектуальным"
[2] только цифры... очень кратко..
- 100 = сто
- 1000 = 1 тысяча
- и т.п.
Если это предусмотреть то можно "Результат" ещё более сделать "интеллектуальным"
[3] цифры с примесью.. Всё просто
30-х годов = 30 годов
2-летие = 2-х летие = 2 летие
И опять же .... как в [2]
Т.е. мы получили общее правило, а потом начали его дробить... т.е. создавать "интеллект"
ну это при условии что всё будет делать скрипт...
В общем где-то так. Надеюсь информация будет полезной
(Отредактировано автором: 14 Марта, 2015 - 16:04:07)