Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Web-программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 17.04.2012, 13:11   [включить плавающее окно]   #1
Молекуля
Мужской Новенький
Автор темы
 
Регистрация: 16.04.2012
Сравнение последовательностей символов

Добрый день, нужно сделать сравнение 2х вордовских документов. То есть например в одном есть текст:
Шла Саша по шоссе
и во втором
Шла Саша по дороге
и нужно чтобы он сравнил в них данные, и показал на сколько они совпадают, имеется ли уже реализованный с открытым кодом скрипт? знает кто?)
Молекуля вне форума  
Ответить с цитированием
Непрочитано 17.04.2012, 13:40   [включить плавающее окно]   #2
Ariny
Женский Супер модератор
 
Аватар для Ariny
 
Регистрация: 21.04.2004
Адрес: Московская область
имеется ли уже реализованный с открытым кодом скрипт
А вордовское сравнение документов с помощью параметра "Юридическое примечание" не подходит?
__________________
Veo voto.
Ariny вне форума  
Ответить с цитированием
Непрочитано 17.04.2012, 14:00   [включить плавающее окно]   #3
Молекуля
Мужской Новенький
Автор темы
 
Регистрация: 16.04.2012
я просто хотел, чтобы у меня выбирался файл на форме, загружался в базу, и сравнивался поочередно с файлами из базы, поэтому видимо предложенный вами вариант не прокатит((
Молекуля вне форума  
Ответить с цитированием
Непрочитано 17.04.2012, 15:39   [включить плавающее окно]   #4
garniv
Мужской Модератор
 
Аватар для garniv
 
Регистрация: 29.06.2004
Молекуля
Врятли ты найдешь такой сложный метод и бесплатно... хотя все может быть
Наверно лучше будет сравнивать размер и дополнительно использовать какую-нибудь простую функцию вычисления хеша файлов. Хотя это больше фантазия - сам я с таким на практике не сталкивался никогда.
garniv на форуме  
Конфигурация ПК
Ответить с цитированием
Непрочитано 17.04.2012, 16:39   [включить плавающее окно]   #5
Молекуля
Мужской Новенький
Автор темы
 
Регистрация: 16.04.2012
я делал на js сравнение данных в двух формах, но это не совсем то, что нужно
Молекуля вне форума  
Ответить с цитированием
Непрочитано 17.04.2012, 17:31   [включить плавающее окно]   #6
garniv
Мужской Модератор
 
Аватар для garniv
 
Регистрация: 29.06.2004
Молекуля
А код этого js покажешь?)
garniv на форуме  
Конфигурация ПК
Ответить с цитированием
Непрочитано 17.04.2012, 18:38   [включить плавающее окно]   #7
FeyFre
Мужской Опытный
 
Аватар для FeyFre
 
Регистрация: 05.03.2010
Адрес: Vinnitsa, UA
Цитата
Врятли ты найдешь такой сложный метод и бесплатно... хотя все может быть
Зачем далеко бежать? Взять какой-нибудь TortosieSVN, оттуда diff который собственно этим и занимается. В педивикую заглянуть по поводу алгоритмов сравнивания двух строк.
Цитата
и нужно чтобы он сравнил в них данные, и показал на сколько они совпадают
Называется Edit Distance, не?
Давайте договримся спрашивать грамотно?

Последний раз редактировалось FeyFre; 17.04.2012 в 19:49.
FeyFre вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 17.04.2012, 22:10   [включить плавающее окно]   #8
garniv
Мужской Модератор
 
Аватар для garniv
 
Регистрация: 29.06.2004
Цитата (FeyFre) »
какой-нибудь TortosieSVN, оттуда diff который собственно этим и занимается
тоесть он реально сумеет сравнить два разнотипных (doc/docx/txt/odt/rtf) файла, содержащих одинаковый текст, но при этом имеющий разное форматирование, и покажет что содержания идентичны? Или он сравнит "внутренности" файлов как единое целое, принимая форматирование за текст?

Последний раз редактировалось garniv; 17.04.2012 в 22:13.
garniv на форуме  
Конфигурация ПК
Ответить с цитированием
Непрочитано 18.04.2012, 04:47   [включить плавающее окно]   #9
FeyFre
Мужской Опытный
 
Аватар для FeyFre
 
Регистрация: 05.03.2010
Адрес: Vinnitsa, UA
garniv, Вы меня немного не так поняли(ну и ТС естественно тоже). Алгоритм сравнения в принципе абстрагирован от типа информации, которую он сравнивает. Работу diff-подобных алгоритмов можно описать такой схемой:
1. Входящие данные (текстовые файлы, потоки, ЛЮБЫЕ блобы) состоят из набора символов. Для текстовых данных символ - собственно символ, для звуковых данных символ - предположим кадр 20мс, для графических данных - предположим плитки 16х16 пикселей, для видео - кадр, и т.п.
2. Символы находящие на входе группируются в более крупные группы по какому-то признаку. Текстовые данные - группы - символы разделенные символами перевода строки разной масти, изображения - пусть группой будет одна горизонтальная развертка символов(плиток 16х16), для звука - кадры звука "не тихого"(слова) между кадрами "тихими"(паузы между словами), для видео - кадры изображения между ключевыми кадрами(I-frame-ами).
3. Два символа всегда должны быть сравнимыми. Не обязательно точно. Например, для текста, символ "Ё" равен "Е" + диакритический символ "надстрочное двоеточие". Для звука - совпадение спектров кадров, для изображения - совпадения среднего тона кадров, и т.п.
4. На основе сравнимости символов также существует сравнимость групп. Тоже не обязательно строгая. Так для текста строки иногда считаются равными даже если они отличаются количеством повторения пробелов, и их наличием в начале-конце строки. Для звука - одна группа дольше второй, за счет того, что некоторые кадры повторяются неодинаковое количество раз(ну протянул он тот звук "а" лишние 40мс, это не значит что слова)
Ну а далее просто: ядру diff-а(собственно достаточно сложный алгоритм сравнения абстрактных символов) дают набор символов разбитый на группы, и он сравнивает эти символы и группы предоставленными внешними компараторами, и в результате выдает схему различий(за правильное понимание/сохранение которой отвечает ещё-одна внешняя функция, не ядро).
Так вот, я и предложил взять вот это вот готовое Ядро - как самую сложную часть из TortosieDiff и прочих подобных вещей. Что и как ему сравнивать - это уже ТС пусть решает. Он полностью определяет, на каком уровне и как точно сравнивать. Пусть немного у него голова поболит, а не у непричастных особей. Я час сна угробил на написание этого сообщения.
FeyFre вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 18.04.2012, 11:19   [включить плавающее окно]   #10
Молекуля
Мужской Новенький
Автор темы
 
Регистрация: 16.04.2012
а как я прицеплю это ядро к веб форме?
Молекуля вне форума  
Ответить с цитированием
Непрочитано 18.04.2012, 11:31   [включить плавающее окно]   #11
garniv
Мужской Модератор
 
Аватар для garniv
 
Регистрация: 29.06.2004
Молекуля
Ты издеваешься? Учись понимать основы - что выполняется на стороне клиента, а что на стороне сервера. Разговор бессмысленен с тобой, пока ты этого не поймешь.

FeyFre
Спасибо за подробное описание, есть чему поучиться

Последний раз редактировалось garniv; 18.04.2012 в 13:03.
garniv на форуме  
Конфигурация ПК
Ответить с цитированием
Непрочитано 18.04.2012, 12:10   [включить плавающее окно]   #12
Молекуля
Мужской Новенький
Автор темы
 
Регистрация: 16.04.2012
на сервере происходят все операции с файлами, выполняются процедуры и т.д. на клиенте же виден результат, или не?

Добавлено через 1 минуту

получается тогда этот ТС нужно размещать на стороне сервера, а на клиенте просто разместить формочку для выбора или как то так)?
Молекуля вне форума  
Ответить с цитированием
Непрочитано 18.04.2012, 13:02   [включить плавающее окно]   #13
garniv
Мужской Модератор
 
Аватар для garniv
 
Регистрация: 29.06.2004
получается тогда этот ТС нужно размещать на стороне сервера
да!
garniv на форуме  
Конфигурация ПК
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 14:56. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey