Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сравнение двух текстов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SunChase
Отправлено: 11 Января, 2012 - 18:14:50
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Доброго времени суток.

Нужен совет на тему: Как можно реализовать сравнение двух текстов с выводом результата, в виде текста, взятого из первого источника, с выделениями слов(областей) совпадений из второго источника ?

Знаю что прозвучало "туманно", потому попробую отобразить пример:

Текст 1: На улице не идёт снег, а идёт дождь
Текст 2: На улице идёт дождь

Результат: <b>На улице</b> не идёт снег, а <b>идёт дождь</b>

Можно ли такое реализовать на ПХП, или попробовать воспользоваться JS или jQuery?
 
 Top
Panoptik
Отправлено: 11 Января, 2012 - 18:43:49
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




такое можно реализовать на любом языке...
ваш пример легко реализуем, но если второе предложение изменить на:
"На улице пока не идёт дождь"
тогда совпадения искать гораздо сложнее.
тут нужен алгоритм а не язык программирования. если у вас такой имеется, то тогда нет проблем


-----
Just do it
 
 Top
SunChase
Отправлено: 11 Января, 2012 - 19:13:02
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Понятно. Спасибо за ответ.

А может ли ктото ткнуть носом в подобный алгоритм, или если возможно, написать его сюда? Знаю что нагловато, но голова уже просто не варит, а реализовать надо.

Да и такой вопрос. Касательно потребления ресурсов системы, один человек посоветовал подобные вычисления выполнять на серверной стороне. Так ли это? Нужно сравнить текст, содержащий приблизительно 50тыс символов(~ 20 А4 страниц)

UPD: Алгоритм таки "родил". На jQuery работает отлично. Но перед внедрением в систему всётаки хотелось бы узнать есть ли разница на чьей стороне его реализовывать: сервер или клиент?

(Отредактировано автором: 11 Января, 2012 - 20:37:25)

 
 Top
Panoptik
Отправлено: 11 Января, 2012 - 20:44:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




самый простой алгоритм это посимвольное сравнение со сдвигом.
Например есть 2 строки:
ждлоафыавфыа
ждложфвп
сравнение начинается с первого символа и "указатель" постепенно смещается
4 первых символа - одинаковые, а вотдойдя до 5 символа у нас появляются отличия и тут всё зависит от ваших нужд. мы можем пытаться найти символ "а" во второй строке перебирая каждый символ. дойдя до конца и не получив результата. мы возвращаемся к следующему символу - "ф" а указатель у нас как мы помним был на 4 позиции. вот и начинаем перебирать снова все символы во второй строке начиная с 4-го. находим совпадение на 6 символе - перемещаем указатель. сравниваем "ы" - не находим, "а" - тоже.
"в" - находим на 7-позиции. после проходим остальные символы и ничего не находим до конца проходов.
результат получился такой "ждло" "ф" "в". суть думаю ясна

на счет памяти и мощностей можете сами прикинуть. по идее 50к это ерунда для сервера. но помните что если 2 текста по 50к - это уже около 2.5М - соответственно столько памяти.
если сомневаетесь, попробуйте урезать для начала тексты до 1к и потестить. а после переходить на полные тексты


-----
Just do it
 
 Top
Okula
Отправлено: 11 Января, 2012 - 21:17:46
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




А по мне удобнее сравнить по словам. Например разбить предложение на отдельные слова и сравнивать совпадение слов во втором предложении. Конечно результат может быть не всегда удачным, но так гибкости больше. Улыбка
 
 Top
SunChase
Отправлено: 11 Января, 2012 - 22:00:28
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Panoptik пишет:
сравнение начинается с первого символа и "указатель" постепенно смещается
4 первых символа - одинаковые, а вотдойдя до 5 символа у нас появляются отличия и тут всё зависит от ваших нужд. мы можем пытаться найти символ "а" во второй строке перебирая каждый символ. дойдя до конца и не получив результата. мы возвращаемся к следующему символу - "ф" а указатель у нас как мы помним был на 4 позиции. вот и начинаем перебирать снова все символы во второй строке начиная с 4-го. находим совпадение на 6 символе - перемещаем указатель. сравниваем "ы" - не находим, "а" - тоже.
"в" - находим на 7-позиции. после проходим остальные символы и ничего не находим до конца проходов.
результат получился такой "ждло" "ф" "в". суть думаю ясна

Хех. Именно так и сделал, только разбивку делал по словам Закатив глазки

Panoptik пишет:
на счет памяти и мощностей можете сами прикинуть. по идее 50к это ерунда для сервера. но помните что если 2 текста по 50к - это уже около 2.5М - соответственно столько памяти.
если сомневаетесь, попробуйте урезать для начала тексты до 1к и потестить. а после переходить на полные тексты

Хм. Сложно на данном этапе предположить насколько "популярной" будет эта функция в системе, но всёже если предположить что во время сессии(для института пишу инструмент коллективной работы над документом с сохранением версий правок) если пускать через сервер, то нагрузка будет уже ощутимой.
 
 Top
Panoptik
Отправлено: 11 Января, 2012 - 23:04:12
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




так воспользовались бы существующими инструментами SVN, Git, Googledocs ... зачем изобретать велосипед?


-----
Just do it
 
 Top
SunChase
Отправлено: 12 Января, 2012 - 00:14:29
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Panoptik пишет:
так воспользовались бы существующими инструментами SVN, Git, Googledocs ... зачем изобретать велосипед?

по той простой причине, по которой под одной крышей обьеденяют, к примеру, форум и Приватные сообщения, если вместо ПМок можно попросту оставить эл. адресс и пользоваться почтовыми клиентами. А именно - для выполнения всех необходимых операций без потребности переключения между отдельными сайтами Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB