Сравнение 2х текстов

spnova

Новичок
Сравнение 2х текстов

Как можно сравнить 2 текста и подсветить схожие словосочетания?

Например 2 текста:
"Новичкам, которые собираются задать свой вопрос, но не знают как это сделать я бы порекомендовал заглянуть также в корзину. Там очень большое количество примеров неправильных постановок вопросов."
и
"Если вы обнаружили свой вопрос в корзине, не надо задать свой вопрос повторно, это не поможет. Прочтите еще раз правила. Если вопрос задан в рамках правил, но тем неменее оказался в корзине, значит вы задали вопрос, ответ на который есть на http://phpclub.ru/faq/
Либо он задан слишком сумбурно и невнятно. Переформулируйте вопрос."


Нужно подсветить так:
"Новичкам, которые собираются задать свой вопрос, но не знают как это сделать я бы порекомендовал заглянуть также в корзину. Там очень большое количество примеров неправильных постановок вопросов."
и
"Если вы обнаружили свой вопрос в корзине, не надо задать свой вопрос повторно, это не поможет. Прочтите еще раз правила. Если вопрос задан в рамках правил, но тем неменее оказался в корзине, значит вы задали вопрос, ответ на который есть на http://phpclub.ru/faq/
Либо он задан слишком сумбурно и невнятно. Переформулируйте вопрос."


Т.е. словосочетание: "задать свой вопрос" выделено потому что повторилось.
 

kruglov

Новичок
Там еще запятые повторяются, пробелы и предлоги с союзами. Их тоже подсвечивать?
 

spnova

Новичок
Да нет, только одинаковые словосочетания, 2 и больше одинаковых слов подряд.
 

Армян

Новичок
ппц!
взять первые два слова искать по тексту, затем следующие два слова, и т.д. ?
если найдено совпадение двух слов, то проверить на совпадение влево и вправо
 

Camillo

Новичок
Да прикалываются над тобой. Никто тебе готового решения или алгоритма не даст.

Я бы делал так. Превращаешь тексты в ассоциативные массивы (предварительно убрав ненужны знаки препинания и т.д.) (в массивах хранишь положение слова в исходном тексте и само слово разумеется, чтобы потом выделять их) . Потом начинаешь последовательно брать по 2 последовательных элемента массива (2 потому, что словосочетание - это сочетание из 2х и более слов) и сравнивать последовательно со всем парами элементов другого массива. Потом делаешь то же самое, но по 3 элемента сразу и т.д. до n элементов массива. А дальш сам думай... задача почти решена.

-~{}~ 30.08.08 12:28:

Армян был первее. :)
 

spnova

Новичок
Автор оригинала: Camillo
Да прикалываются над тобой. Никто тебе готового решения или алгоритма не даст.

Я бы делал так. Превращаешь тексты в ассоциативные массивы (предварительно убрав ненужны знаки препинания и т.д.) (в массивах хранишь положение слова в исходном тексте и само слово разумеется, чтобы потом выделять их) . Потом начинаешь последовательно брать по 2 последовательных элемента массива (2 потому, что словосочетание - это сочетание из 2х и более слов) и сравнивать последовательно со всем парами элементов другого массива. Потом делаешь то же самое, но по 3 элемента сразу и т.д. до n элементов массива. А дальш сам думай... задача почти решена.

-~{}~ 30.08.08 12:28:

Армян был первее. :)
Ну как раз с массивами я и сделал, просто я думал что есть более простой алгоритм возможно с функциями сравнения текстов о которых я незнал.
 
Сверху