Поиск в Total Commander в пределах заданного количества слов

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Anna_27
Сообщения: 1
Зарегистрирован: Ср апр 14, 2021 15:31

Поиск в Total Commander в пределах заданного количества слов

Сообщение Anna_27 »

Добрый день. Посмотрела все форумы, вопросы и ответы на них, но нигде не нашла внятный ответ на следующий специфический вопрос.
На HDD имеется более 10 000 000 документов в PDF. Распознанные (созданные из Word). Требуется совершать в них поиск ключевых фраз в пределах нескольких слов. Например, мы хотим найти слова "мама" и "папа". В каждом документе есть слова "мама" и "папа". Значит, система найдёт нам все 10 000 000 документов. Но нам это не нужно.
Нам нужно найти эти слова с таким условием, чтобы они повторялись В ПРЕДЕЛАХ пяти слов. Или трёх слов, или шести слов, или десяти слов (в зависимости от поставленной лингвостатистической аналитической задачи). Более чёткий пример на пальцах: Имеется предложение "Наверное, мама хорошо знает как найти папу" (предложение состоит из семи слов). Нам НЕ ТРЕБУЕТСЯ найти существительные "мама" и "папа", раскиданные по тексту где попало и повторяющиеся тысячу раз. Нам ТРЕБУЕТСЯ найти все выражения где "мама" и "папа" расположены, в данном случае, в пределах семи слов.
Можете, пожалуйста, расписать пошагово, как это сделать через Total Commander? Или посоветуете другую программу с такого рода возможностью? Спасибо!
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Anna_27
Слишком сложные условия. А если, как в приведённом примере, ещё и падеж может меняться... Впрочем, могут быть и другие мнения.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Mailk
Сообщения: 251
Зарегистрирован: Сб янв 16, 2010 20:19

Сообщение Mailk »

Плагин для поиска и обсуждался здесь http://forum.wincmd.ru/viewtopic.php?t=15967&start=30, через регулярные выражения реализуем легко.
Ну и наверно плагин http://wincmd.ru/plugring/TextSearch.html
Сколько нужно "И" и "или " пропиши и найдет.
Да и лучше не" на пальцах писать" а не стеснятся и прислать реальную задачу.. а то про папу или маму не понятно..

Posted after 4 minutes:

Anna_27
Скиньте реальную задачу с примером, Вам помогут..
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Mailk
Кто поможет, вы что ли? Зная ваши прошлые достижения на этом форуме, крайне сомневаюсь, а за других говорить не следует. И в любом случае не надо тут очередных "умных советов" и рассуждений о том, как легко решить задачу (между прочим, приведённую с вполне реальным примером), которую вы, похоже, даже не соизволили как следует понять. В очередной раз, как обычно. Если нечего сказать полно и точно по существу дела, не надо говорить ничего. Иначе получается флуд. А что у нас делают с флудом и флудерами, в правилах форума сказано.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

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

Возможно, программы для поиска файлов по содержимому с индексацией, типа Recoll или DocFetcher, позволяют составлять такие замысловатые поисковые запросы, а использование базы может существенно оптимизировать работу. Кстати, у Recoll вроде есть API для Python, возможно, это может упростить поиск решения задачи.
Mailk
Сообщения: 251
Зарегистрирован: Сб янв 16, 2010 20:19

Сообщение Mailk »

Я прочитал внимательно Авада, и зная что есть квантаторы в регулярных. Будет реальный тект будет реальный ответ я уверен что пример приведенный не корректен. И под каждую задачу можно написать разные выражения. В рамках строки можно найти например.
Мама (\s\w\s){3,9} папа
это выражение по задумке ищет сочетание
"мама" потом несколько слов от 3х до 9ти и потом "папа"
Спецы по регулярным поправите если что то не так. Я только начал тему регулярок изучать. Я просто пример написал , будет реальный текст будет реальное выражение.
Ну если не прав поправте.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Кстати, да, постоянно забываю, что в PCRE есть возможрость использовать юникод (чаще имею дело с другими реализациями).
Учитывая, что для каждого PDF плагин сначала будет выдирать текст, причём не раз, если условий (полей) больше одного, это будет то ещё веселье...

"Мама (\s\w\s){3,9} папа" не очень подходит, т.к. не учитывает регистр и склонения и повторение неправильно задано, для предела в 7 слов как минимум

Код: Выделить всё

\bмам\w*\b(?s)\s+\K(\w+){,6}\s+пап\w*
тогда можно рассчитывать зацепить и "мамочка", например.
Если нужно и наоборот, с "папа" в начале, то тут либо в лоб, добавив аналогичное правило в новое поле плагина и искать по двум полям, либо усложнять - просмотр назад или обратные ссылки, если вообще возможно прикрутить условие, чтобы не зацепить "папа"-"папа".

Кто у нас хорошо разбирается в регулярках? Может быть, у milo1012 на оффоруме стоит спросить?
Mailk
Сообщения: 251
Зарегистрирован: Сб янв 16, 2010 20:19

Сообщение Mailk »

Skif_off писал(а):не очень подходит, т.к. не учитывает регистр и склонения и повторение неправильно задано, для предела в 7 слов как минимум

Код: Выделить всё

\bмам\w*\b(?s)\s+\K(\w+){,6}\s+пап\w*
тогда можно рассчитывать зацепить и "мамочка", например.
Спасибо !!! Главное ты меня понял! Я просто как пример написал так как нету самого текста задания а "на пальцах" и я "на пальцах" написал.
Ответить