Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

Открыть новую тему     Написать ответ в эту тему

leftMIND

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
   Регулярные выражения
Обучающий материал
  • Книги    
  • Шпаргалки: от AZJIO (AutoIt3, PCRE) от Dave Child
  • wikipedia.org - Регулярные выражения на wiki  
  • edlinsoft.blogspot.com - Регулярные выражения в .NET Framework  
  • php.ru - Синтаксис регулярных выражений  
  • php.net - Синтаксис регулярных выражений  
  • regexpstudio.com - Регулярные выражения для Delphi  
    Официальные источники:
  • docs.notepad-plus-plus.org - Официальный источник Notepad++ (англ. яз.)  
  • pcre.org - Официальный справочник движка PCRE (англ. яз.)  

  •    Тестирование регулярных выражений
    Программы
    Онлайн сервисы
  • RegexBuddy - крутая и платная  
  • RegExp - бесплатно, AZJIO, PCRE, AutoIt3  
  • Expresso  
  • The Regex Coach  
  • RegExstar, Github (AutoHotKey, PCRE)
  • Обзор программ от ManHunter    
  • regexr.com здесь в Community множество готовых регулярных выражений  
  • pagecolumn.com - для javascript  
  • pagecolumn.com - для php  
  • cuneytyilmaz.com - для javascript  
  • php-include.ru - на флеш-плеере  
  • regex101.com  
  • easyregexp.ru  
  • debuggex.com - показывает структурно  

  •    Схожие темы
  • javascript регулярные выражения
  • PHP: Регулярные выражения (RegExp, Regular, eregi, preg)
  • Игра - Регулярно выражайтесь!
     
    первое сообщение темы...
    Обсуждение шапки данной темы ведётся в этой теме
    Рекомендации по составлению вопросов в данной теме:

  • Всего записей: 33 | Зарегистр. 07-04-2002 | Отправлено: 23:55 15-10-2002 | Исправлено: AZJIO, 15:18 12-02-2021
    obtim



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
    AZJIO
    Спасибо!

    Всего записей: 9026 | Зарегистр. 03-03-2002 | Отправлено: 17:27 20-05-2019
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IvanStepanov

    Цитата:
    меня бы устроило нахождение просто одинаковых (без учёта пробельных разделителей) кусков.

    Пробельные символы как раз не проблема при программном решении задачи. Первый шаг при таком подходе - индексация текстового массива. Пофайлово - это просто, и реализовано в любой поисковой (по тексту) базе: из текста выбрасывается все лишнее по определенному алгоритму, таким образом, что остается голый набор значимых слов.
     
    Плавающая выборка - имелось ввиду что строка сравнения может быть произвольной длины и находиться в его теле в любом месте. При этом ее длина и положение последовательно меняются, перебирая все возможные варианты (с учетом искусственных ограничений на предельные значения), после каждого сравнения со строками в других файлах, выбранными аналогичным образом.
     Как очевидно, число вариантов неописуемо нулями, даже с учетом того, что единица - лексическое слово, а не байт.
    * * *
    Похожие картинки (видео, аудио) ищутся по другим алгоритмам, с использованием т.н. цифровых отпечатков и это оправдано, в силу того, что значимой информации в этих файлах много меньше, чем незначимой (разница идет на порядки). С текстами все сложнее, поскольку даже частица "не" в огромном тексте способна поменять смысл на прямо противоположный со всеми вытекающими.
    * * *
    Если powergrep пошагово вам помогает, то запишите все возможные дублирующиеся блоки в список, создайте многошаговый скрипт, выбрав соответствующую опцию в программе и выполните его одномоментно на всех файлах. Как уже сказано выше, универсального регэкспа для вашего случая просто не существует. Но любой литеральный текст можно расширить за счет регэкспов, подобно тому, как вместо  
    мама мыла раму
    можно, например, искать
    мам[^ ]*? .*? рам[^ ]*?(?=[ \n\r]|$)
    что на выходе найдет не только первую фразу, но и другие, типа
    мамы мыли рамы
    мама сломала раму
    мама выбросила раму
    маму ударила рама
    мама любит раму
    мама и рама
    мама не рама

    и т.д.

    Всего записей: 1376 | Зарегистр. 17-01-2011 | Отправлено: 19:54 20-05-2019 | Исправлено: Jonmey, 20:32 20-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    Но лучше от этого не стало. Повторяющиеся фрагменты находятся строго в одном файле? Или могут присутствовать в нескольких?  

    Блин, ребят.
    А если голову включить?
    Или вы хотите, чтобы я разжёвывал самые очевидные вещи?
    Ну вот сами подумайте: могут ли одинаковые куски текста встречаться в разных файлах, скачанных из инета?
    Естественно могут. Как иначе?
     
    И чуть выше я об этом сказал.
     
    Добавлено:
    Ребят! А может есть какой-то самый примитивный скриптовый язык для работы с регулярками?
    А может есть какие-то программы, работающие не с регулярками, а с грамматиками более высокого уровня?
     
    Ведь что нужно-то
     - IF THEN ELSE
     - функции доступа к файлам в каталоге (чтобы можно было "перебирать" по очереди все файлы)
     - Функция, которая может искать "назад" или "вперёд" с заданной позиции в файле и возвращающая позицию и сам найденный фрагмент, если соответствующая регулярка найдена, и "FFFF" - если не найдена
    - ну и, соответственно, переменные, для временного хранения промежуточных значений счетчиков, номеров позиций(курсоров), подстрок и строк
     
    Можете AutoIT, AutoHotKey?

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 20:30 20-05-2019 | Исправлено: IvanStepanov, 20:30 20-05-2019
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IvanStepanov (Пост)

    Цитата:
    А если голову включить?  
    Или вы хотите, чтобы я разжёвывал самые очевидные вещи?  
    Ну вот сами подумайте: могут ли одинаковые куски текста встречаться в разных файлах, скачанных из инета?  
    Естественно могут. Как иначе?  

    Вы заставили меня улыбнуться)) Спасибо))
    Если серьёзно - то это вовсе не так очевидно. Всё зависит от контента, с которым вы работаете. Дубликаты файлов - да, согласен, частое явление. А чтоб блоки текста - тут уже может быть, а может не быть...
     
    Ладно, это всё лирика. Вам нужна программа (скрипт), которая делала бы следующее (распишу программную логику):
     
    1) Принимала на вход каталог с текстовыми файлами
    2) Создавала временный файл, конкатенируя эти файлы (с записью офсетов куда-нибудь в кэш / лог)
    3) "Линейно", либо с использованием специализированной библиотеки, искала повторяющиеся блоки текста, возвращая массив офсетов с найденными совпадениями (конкретная реализация может быть как "простейшей", так и "продвинутой", в зависимости от используемого модуля)
    4) Конвертировала найденные офсеты в оффсеты из кэша/лога, соотнося их с оригинальными, неконкатенированными файлами
    5) Выводила соответствующий результат.
     
    Трудности:
    1) Всё это дело написать
    2) В зависимости от объёма ваших данных и алгоритма поиска дубликатов, весь процесс может быть очень затратным в плане потребляемых ресурсов компьютера. Конкатенированный файл должен целиком находиться в оперативной памяти - здесь нет других вариантов. Точнее, есть, но они кратно усложнят реализацию - не уверен, что даже опытные программисты возьмутся за эту задачу.
     
    Возможно реализовать на:
    - из скриптовых языков точно подойдёт Python, JS под Nodejs, Perl. Всякая экзотика типа Ruby, тоже, вероятно, подойдёт.
    - по AutoIt/AutoHotKey лучше пояснит AZJIO, но что-то подсказывает, что узким горлышком будет производительность - AutoIt, по крайней мере, чрезвычайно медленный на больших объёмах данных. Работа с массивами - тоже не его конёк. Объектов, вроде, нет. Также, сомневаюсь, что под него удастся найти качественную специализированную под эту задачу (поиска дубликатов) UDF (модуль).
    - компилируемые языки. C, C++, Java, .NET, etc. - на них можно всё. Кто что знает, тот в том и работает.
     
    Ну и завершающий вопрос - при чём здесь регулярные выражения?..

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 11:42 21-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81

    Цитата:
    В зависимости от объёма ваших данных и алгоритма поиска дубликатов, весь процесс может быть очень затратным в плане потребляемых ресурсов компьютера.  


    Цитата:
    по AutoIt/AutoHotKey лучше пояснит AZJIO, но что-то подсказывает, что узким горлышком будет производительность - AutoIt, по крайней мере, чрезвычайно медленный на больших объёмах данных.  

    Вы знаете? Я уже больше недели ВРУЧНУЮ с помощью PowerGREP вычищаю выборку из 700 файлов от повторяющихся фрагментов, содержащих только одно ключевое слово. Думаю, что  чтобы полностью вычистить её от повторящихся фрагментов у меня уйдёт месяца полтора.
     
    Поэтому даже если комп в автоматическом режиме сделает то же самое за неделю - это будет не медленно. Это будет называться "очень быстро"

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 00:01 22-05-2019 | Исправлено: IvanStepanov, 00:02 22-05-2019
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    выборку из 700 файлов

    Если вы ее выложите, то вам ее вычистят быстрее, чем вы будете ждать некоего спасительного решения. Или совершенно точно скажут, что ваш случай забесплатно (быстро) нерешаем.
    Если, конечно, вам ехать, а не шашечки.
    Потому что, если речь о текстовых файлах (любого типа), то вопрос идет о каких -то смешных количествах, ради которых разведен балаган, как будто нужно что-то сделать с бибилиотекой конгресса, которая еще не оцифрована.

    Всего записей: 1376 | Зарегистр. 17-01-2011 | Отправлено: 01:01 22-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Если вы ее выложите, то вам ее вычистят быстрее, чем вы будете ждать некоего спасительного решения.  

    Jonmey
    Не. Мне нужно именно универсальное законченное  решение.
    Потому что сегодня у меня одна выборка, завтра другая, после завтра - третья.
    Нужно именно законченное решение по фильрации не нужных и/или повтоярющихся фрагментов текста
     
    Добавлено:
    Нашёл тут программу (xMarkup), которая добавляет к REGEX дополнительный функционал путём поддержки  спец. языка текстовых перобразований ICON(UNICON).
    Поизучаю. Может там есть что полезное для решения моей задачи
     
    Добавлено:
    Подробнее...

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 12:51 22-05-2019
    U235

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IvanStepanov
    Возможно будет быстрее, если для файлов создать что-то типа таблицы из базы данных: слово, сколько раз встречается, его позиции в тексте. Индексация первого столбца позволит быстро находить положение слова, и его позиции, и, следовательно, быстро находить дубликаты последовательных слов.  Если же использовать регулярные выражения, то, каждый раз файл придется читать с диска, что не очень хорошо.
    Прошу прощения за оффтопик.

    Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 19:20 22-05-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IvanStepanov
    Была бы задача понятна можно было бы пытаться её решить. Открыть файлы не проблема, грубо говоря перебрать 700 файлов в цикле, только что с ними делать-то? Я ранее спрашивал каждый файл = 1 кусок или в одном файле может быть 100 кусков. Как определить кусок, если у него начало и конец, или просто найти слово и искать его в тексте? Если найдено второе слово, то является ли оно принадлежащем одному куску или разным, что вырезать если найдено второе слово, если неизвестны границы куска? Можно же вырезать сразу 100 кусков или пол-куска, как определить что ты вырезаешь? А если при этом ещё и учесть что мы ищем вообще не слово (ограниченное пробелами), а некий текст, то предположим мы берём от начала 400 символов и ищем его повтор, далее 400-1 символов, то есть при каждом шаге уменьшаем на 1 символ и ищем повтор, дойдя до 8 символов вероятность повтора велика, допустим 2 символа попадётся дофига раз, итак где остановиться что считать совпадениями? После этого сдвигаем начало поиска на 1 от начала файла и повторяем 400 шагов. Но мы ещё не разобрались с предыдущими повторами, что к чему и куда их совать.
     
    Скачать - пример AutoIt3 (v3.3.8.1) скрипта. Положи его в папку, в которой нужно просканировать файлы, просто положи в тестовую папку с какими нибудь txt-файлами и запусти, получишь Log.txt в той же папке (сам откроется в конце поиска), посмотри содержимое. Меняй регулярное выражение, переписывай скрипт, он может выдать тебе тексты которые нашёл, а не только число совпадений. Пиши в цикле любой функционал, удаляй, заменяй найденное, копируй куда-нибудь файл, в общем придумывай сам. Русскую справку по AutoIt3 можешь скачать тут.

    Всего записей: 4547 | Зарегистр. 03-05-2006 | Отправлено: 20:54 22-05-2019 | Исправлено: AZJIO, 21:58 22-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Была бы задача понятна можно было бы пытаться её решить.

    AZJIO
    Как это возможно?
    На последних 2-х страницах я разжевал уже всё до кашеобразного состояния.
    И не по одному разу.
    Может Вы просто не читали всё, что я писал?
     
    Нужно в массиве TXT-файлов найти все повторящиеся с точностью до пробельных символов фрагменты текста максимальной длины и удалить их сохранив только одну копию в отдельном файле коллекции.
     
     
    Вот и всё.
     
    Что тут может быть непонятно.
     
     
    Повторы ("копипаста") - это настоящая болезнь интернета, когда авторы воруют друг у друга целые куски текста
     
    Добавлено:

    Цитата:
    Как определить кусок, если у него начало и конец, или просто найти слово и искать его в тексте?

    AZJIO
    Я оказался прав. Вы точно не читаете, что я пишу.
     
    А ведь я писал, что в этом-то и проблема, что  границу между блоками выделить если не невозможно, то крайне затруднительно и лучше не тратить на это время а парсить вест текст сплошняком.
     
    Найти сначала маленькие повторяющиеся кусочки, затем наростить их и поискать совпадения, затем ещё наростить и так до максимума
     
    Добавлено:
    AZJIO
    А вообще спасибо Вам за желание помочь.
    Про AutoIT, AutoHotKey я тоже думал.
     
    С AutoHotKey  я даже довольно плотно работал лет 5 назад.
     
    Но пока решил поиграться с xMarkup и скриптами в ней на языке ICON.
     
    В рекламе говорится что это язык сверхвысокого уровня, предназначенный для разработки систем искусственного интеллекта для обработки текстов на естественных языках.

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 23:08 22-05-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IvanStepanov

    Цитата:
    Я оказался прав. Вы точно не читаете, что я пишу
    я читал может пару раз в начале, но потом перестал ввиду того что я начал сомневаться что последующие разы помогут.

    Цитата:
    Найти сначала маленькие повторяющиеся кусочки, затем наростить их и поискать совпадения, затем ещё наростить и так до максимума  
    В итоге куски текста если это какие либо описания то они не должны быть маленькими, то есть начинать надо с длинны среднего предложения, допустим 80 символов. Или фрагменты могут быть написаны таким образом чтобы не совпадать, то есть воруют друг у друга куски но выкладывают не один в один, а переписывают оставляя смысл но создавая не оригинальность текста. Тогда такие куски трудно выявить, то есть на густо населённом словами участке нужно найти 80% совпадений? Тогда нужно экспортировать слова в массив и проверять одно скопление слов с другими. В общем я пас, это надо иметь желание это делать.

    Цитата:
    xMarkup
    глянул набор функций, пока не вижу, то что заставило бы меня изучать очередной язык, после AutoIt3 изучаю PureBasic, но в принципе мне и AutoIt3 хватает, единственное на PureBasic я могу писать плаги для NPP и писать в Linux, в остальном работу со строками можно написать, то есть написать строковую функцию которой изначально нет, это и есть "функция" или "процедура".

    Всего записей: 4547 | Зарегистр. 03-05-2006 | Отправлено: 23:59 22-05-2019 | Исправлено: AZJIO, 00:15 23-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO

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

    Судя по рекламе язык ICON (скрипты на котором можно писать в xMarkup) как раз "заточен" для сложных преобразований текстовой информации и "быстрого программирования" (так как относится к языкам "сверхвысокого" уровня) различных преобразований текста.
    Как я понял, это что-то типа PROLOG с его  перебором вариантов и backtraking, но заточенного конкретно под преобразование текстов.  
     

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 11:29 23-05-2019
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IvanStepanov

    Цитата:
    Как это возможно?

    А так и возможно. Вам ведь несколько человек, причем понимающих в программировании, уже не один раз написали, что с такой постановкой задачи, какую показали Вы, решений найти, практически невозможно.
    Вот Ваши условия:
    1. Найти неопределенного размера куски текста, состоящие из любых символов, т.е. от 0 символов и до бесконечности, но имеющие дубликаты в любом месте всего массива текста.
    2. Поиск необходимо вести в массиве текста, который собирается из массива файлов неопределенного количества, т.е. от 1 шт. и до бесконечности.
    3. Получаемый массив текста из файлов, также неопределенного размера, т.е. от 0 байт и до 1 Йоттабайт (теоретический предел NTFS).
     
    И Вы хотите, чтобы кто-то выстроил Вам эффективный алгоритм автоматического поиска дубликатов, по таким вводным данным? Да вы оптимист, батенька...
    Ну, изучайте LISP, ICON и т.д.... быть может опыт - сын ошибок трудных, подскажет Вам, что зла Вам никто не желал, говоря о невозможности поиска решения с такими вводными данными.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:39 23-05-2019 | Исправлено: YuS_2, 12:43 23-05-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Что мы можем получить от этого? Выявление людей нарушающих лицензию? Чисто для себя сканировать вещи, которые за всю жизнь не перечитаешь удаляя из них дубликаты-похожести, чтобы что? Чтобы меньше прочитать на 5%.

    Всего записей: 4547 | Зарегистр. 03-05-2006 | Отправлено: 19:05 23-05-2019
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    В научных работах искать плагиат
    Однако даже в этом случае задача некорректна, поскольку бессмысленно решать ее в лоб, тупым перебором без изначального структурирования исходных файлов, учета тематики контента и т.д.
    * * *
    Есть и еще одна проблема в контексте поиска "универсального решения", так сказать, идеологического плана. Речь о ценности и целесообразности поиска такого решения.
    Например, все тут гуртом напряглись и родили это "универсальное решение". Начинаем применять. Имеем 700 файлов - обработали - получили некий набор огрызков файлов. Огрызков - потому, что в принципе непонятен принцип, какой из файлов назначать СТАРШИМ, по отношению к остальным, содержащим дублирующиеся фрагменты. То есть, например, в одном файле содержится полный текст трагедии Шекспира, а в других - цитаты из него, а сами файлы для алгоритма изначально равны, то чисто статистически трагедия Шекспира на выходе окажется огрызком, в котором многие фрагменты вырезаны, тогда как недостающие части будут рассеяны по остальным файлам, где они процитированы. Ценность полученного набора файлов, как это очевидно стремится к нулю, в отличие от набора исходного. Но бог с этой "проблемой огрызков".
    Куда важнее другая. Имеем 700 файлов без дубликатов. Через год насобирали 1500 тысячи файлов иных, но с пересекающимся в той или иной степени контентом по отношению к первым 700. Чтобы после обработки следующие 1500 имели смысл, мы должны включить в обработку первые 700. Огрызки первых 700 станут еще большими огрызками, а нам потребуется на обработку времени в несколько раз больше, чем на первую группу (число операций растет нелинейно с ростом числа файлов, а в некоторой геометрической прогрессии).
    Далее еще прикопили файлов, а потом еще и еще... И каждый раз растет время обработку. А если сразу обрабатывать форумами (типа данного - 750 тыс. тем) то все станет очевидно, после того, как к обработанному данному форуму просто прибавить второй аналогичный необработанный. И выяснится, что чтение нужного с дублями займет меньше времени (электричества и денег), чем обработка с целью получения огрызков, которые, скорее всего, будут в принципе нечитабельными (отсутствующие куски в текстах будут рассеяны по остальным файлам, которые найти будет практически невозможно).

    Всего записей: 1376 | Зарегистр. 17-01-2011 | Отправлено: 20:40 23-05-2019 | Исправлено: Jonmey, 20:40 23-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подробнее...

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 22:09 23-05-2019 | Исправлено: IvanStepanov, 22:51 23-05-2019
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Я виноват, что задача именно такая?

    А что, дядя с улицы ее придумал, а вас силком заставил претворять в жизнь?
    Подробнее

    Всего записей: 1376 | Зарегистр. 17-01-2011 | Отправлено: 00:42 24-05-2019 | Исправлено: Jonmey, 00:42 24-05-2019
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IvanStepanov
     
    Вам все присутствующие очень дельные вещи говорят. Вот на самом деле. В очень доступном, и "разжёванном" виде. Я многое из этого хотел сказать, но мне было лень. А вот люди не поленились, и я, со своей стороны, могу подписаться практически под всем, что здесь было сказано на эту тему. Видно, что присутствующие понимают о чём пишут и имеют представление о многих (далеко не всех) сложностях и подводных камнях, связанных с разработкой решения для вашей задачи. Это не надуманность, не пессимизм, не сгущение красок. Это реальность. От вашего же подхода, буквально веет упрощением, и, извините, примитивизмом.
     
    Почему нет таких программ? Не потому что невозможно, а потому что сложно, действительно сложно реализовать. При том, эта программа будет "заточена" на очень узкий спектр задач, фактически на одну задачу. Но в таком виде она будет бесполезна для широкого круга пользователей - задачи у каждого свои. Значит, в программе нужно делать различные настройки, позволяющие, к примеру, менять алгоритмы сопоставления, анализировать отрезки разной длины и ещё много чего, что имеет смысл кастомизировать. Но такая кастомизация ещё более усложнит разработку. А что в итоге? Кому будет нужен этот софт? Кто его купит (извините за прагматизм и меркантильность - но это реальность)?
     
    Если, конечно, немного пофантазировать, то задачка-то вполне может иметь решение при применении новомодных нейро-сетей, машинного обучения и т.п. Но... мы-то тут при чём? Обратитесь в соответствующую контору, поставьте соответствующее ТЗ, оплатите счёт (разработка - это время, а время, как вы сами сказали - это деньги) и пользуйтесь в своё удовольствие! Только не забудьте потом, пожалуйста, нам здесь сообщить, во сколько обойдётся всё это счастье - я например, уже сгораю от любопытства .
     
    Ну и ещё, чисто по техническим моментам. Вам, для вашего процесса, по сути не надо ничего удалять (т.к. это лишь всё усложнит). Вам надо подсвечивать дублирующиеся блоки определённым уникальным цветом, чтоб вы при просмотре уже визуально могли сразу отличить повтор это, либо уникальный контент.
    Сама программа, как я её вижу, это должно быть что-то вроде катологизатора текстов (типа Calibre). Она должна вести базу повторяющихся фрагментов, запоминать их, естественно. Сравнивать с ней новые добавленные файлы (а это уже легче оптимизировать). При нахождении сразу подсвечивать определённым, присущим только этой разновидности повтора цветом. Естественно должна иметься возможность вывести общее кол-во повторов по каждому блоку (с быстрым переходом к нему для каждого файла, его содержащего).
     
    Это всего-лишь драфт, набросок. Всё может быть немного не так, или совсем не так - вам виднее. Вы представьте себе идеальную ситуацию, в которой вам было бы наиболее комфортно работать. Опишите её в тех. задании. С вашей точки зрения, как пользователя. Не надо думать о технических деталях, учитывая что вы о них имеете достаточно смутное представление. Получившееся ТЗ обсудите уже со специалистом-программистом. Крайне желательно, чтоб у него уже был опыт разработки решений для анализа текстовых данных (ЯП здесь дело даже не третье). В процессе обсуждения, он, с позиции своего опыта, вам уже что-то посоветует, порекомендует изменить тем или иным образом, возможно предложит более лучшее и оригинальное решение (с точки зрения пользователя), о котором вы даже не догадывались. После согласования ТЗ и соотв. стоимости услуги, программист(ы) создадут для вас этот программный продукт.
     
    Только так, а не иначе.

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 01:59 24-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    А что, дядя с улицы ее придумал, а вас силком заставил претворять в жизнь?  

    Jonmey
    Я уже сказал выше, что эту задачу пытаюсь решить не ради чисто академического интереса.
    Просто задолбало кучу времени (99%) тратить  ВПУСТУЮ при сборе инфы из-за того, что по 1000 раз натыкаешься либо на мусорные фрагменты текста, либо на те, которые ты уже читал 100 раз

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 10:43 24-05-2019
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброе время, IvanStepanov
    [offtopic]
    Я вспомнил, что мне напоминает Ваша задача. Посмотрите Алгоритм опознавания и сравнения текстов от Грибова Дмитрия (автора fb2). И там есть готовый перловский модуль.
    [/offtopic]

    Всего записей: 1906 | Зарегистр. 07-08-2002 | Отправлено: 12:03 24-05-2019
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru