Ru-Board.club
← Вернуться в раздел «Программы»

» Нужна программа по поиску повторяющихся сочетаний букв

Автор: lid111
Дата сообщения: 25.05.2015 17:20
Добрый день всем. Хотел бы иметь программу такого типа: чтобы в тексте, вставленном в окно, подсвечивались все повторяющиеся буквосочетания. Например, при вставке текста "Бесшумная работа позволяет агрегату почти не вибрировать, что облегчает работу пользователя" подсвечиваются два фрагмента "работ".

Еще лучше, если будет возможность задавать в символах минимальную длину таких буквосочетаний и максимальное расстояние между повторами.

Был бы благодарен, если кто сможет сделать (если это несложно). Или, если уже существуют какие-то аналогичные программы, подскажите их.

К модераторам: если я поместил тему не в тот раздел форума, перенесите, пожалуйста, куда следует, и сообщите мне, куда перенесли.
Автор: NeoAnomaly
Дата сообщения: 25.05.2015 20:24

Цитата:
Еще лучше, если будет возможность задавать в символах минимальную длину таких буквосочетаний....

lid111, немного не точно сформулированное требование. Может быть имеется ввиду минимальная длина слова в которое входит буквосочетание или что-то другое?

А так можете, как вариант использовать любой online тестер регулярок, выполненый на JS. JS - для того, чтобы сохранив страничку - подредактировать скрипт и добавить необходимые условия: расстояние между вхождениями, например.

Как вариант: http://regexpal.com/
Автор: lid111
Дата сообщения: 25.05.2015 22:10
Нет, не слова, а именно буквосочетания. Суть в том, чтобы выявить повторы однокоренных слов (как стилистическую ошибку в тексте). То есть если не задать минимальную длину скажем, в четыре-пять символов, то высветятся все предлоги или, например, высветится "раз" в словах "разница" и "раздолбай", а это не то, что ищем.

А нужно выявить, и желательно все сразу, относительно близлежащие слова, например, "предлагаемых" и "предлагается" (совпадение "предлагае"), "Использовать", "пользователь" и "пользы" (совпадение "польз") и т. п. Независимо от регистра, разумеется.

Что касается "подредактировать скрипт" — тут я дерево дуб. Даже над словами "тупо использовать скрипт" — и то мне придется задуматься.
Автор: protoror
Дата сообщения: 26.05.2015 13:43
Всегда удивлялся людям которых забанили в гугле, неужто так сложно ввести в гугл, то что вы хотите найти и пробежаться по 1-10 первым ссылкам, например я ввел "поиск однокоренных слов", 6 ссылка "Программа для контроля повторов однокоренных слов", щелкнув по ней видим ссылку http://quittance.ru/tautology.php
Действительно ОЧЕНЬ тяжелый и ВЫСОКОИНТЕЛЛЕКТУАЛЬНЫЙ процесс...
Автор: lid111
Дата сообщения: 28.05.2015 14:29
Ура! Спасибо. Потестирую.
Автор: vahhabit
Дата сообщения: 01.06.2015 10:34
lid111
regexbuddy классно подсвечивает. Скрин программы с вашим текстом.
Автор: evoroz
Дата сообщения: 01.06.2015 10:49
lid111
Из программ поиска с подсветкой вспомнилась dtSearch. http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=6635#1
Автор: lid111
Дата сообщения: 01.06.2015 23:15
Новые предложения тоже потестирую.

А вот тут я еще спросил, про эту программу ничего не скажете? Не подойдет? http://forum.ru-board.com/topic.cgi?forum=5&topic=12201&start=140#lt

У онлайнового "Свежего взгляда" есть два недостатка:

1) при настройках по умолчанию показывает много лишнего. Но это ладно, опытным путем установил настройки 30 - 1000 - 0, так более-менее нормально.

2) созвучия (паронимии) ищутся только в пределах одного абзаца. То есть не ловится повтор, например, в соседних предложениях, но в разных абзацах.

И еще плохо, что офлайновая программа "Свежий взгляд" работает в режиме командной строки. Мне бы желательно GUI
Автор: lid111
Дата сообщения: 02.06.2015 13:21
В regexbuddy ничего не понимаю. Как там задать мое требование?

А dtSearch уже по описанию, мне кажется, "из другой оперы"
Автор: sikemo
Дата сообщения: 05.06.2015 19:16
Автор: lid111
Дата сообщения: 05.06.2015 19:46
Ну и к чему вы это? Мне же надо не "работ" искать, а все повторы заданного размера во столько-то символов (буквы могут быть любыми). Но точные совпадения и по всему тексту ("Свежий взгляд" ищет не только точные и только в пределах абзаца)
Автор: KDPoid
Дата сообщения: 08.06.2015 22:27
lid111,
Поигрываю я тут на досуге своим аналогом "Свежего взгляда"...
Из ваших описаний, мне показалось, что встретив в тексте "работу надо работать", программа должна выделить в тексте и все остальные формы "работы".
Это так ? А то мне не понятно - зачем...

Автор: lid111
Дата сообщения: 09.06.2015 06:04
Попытаюсь объяснить еще раз.

Программа "Свежий взгляд" (онлайн) ловит много лишнего. Для того, чтобы максимально приблизиться к желаемому, я выставляю в ней настройки (сверху вниз) 30 - 1000 - 0. Это резко сокращает мусорные результаты, но и тогда мусор остается.

Мне надо, чтобы ловились (подсвечивались) одномоментно (по аналогии со "Свежим взглядом") все повторы всех возможных сочетаний букв (не менее заданной мной длины в символах, без пробелов, независимо от регистра и языка) по всему тексту, которые найдены в тексте на расстоянии друг от друга не более заданного мной расстояния в символах, причем деление текста на абзацы, переводы строк, пустые строки — всё это не должно играть никакой роли .

Минимальную длину буквосочетания я должен задать для того, чтобы не высвечивались повторяющиеся союзы и предлоги — "и", "в", "на" и т. п.

Максимальное расстояние между повторами ограничивается, потому что "работ" и "работ" в начале и в конце текста — это никакая не "тавтология", это никого не волнует, а цель программы — обнаружить стилистические погрешности текста — та же цель, что и у программы "Свежий взгляд".

Поясняю на примере. Например, я задал в настройках программы минимальное число символов — 5 и максимальное расстояние между повторами — 300 знаков.

В таком случае по всему тексту подсветится сочетание "работ" если между "работ" и "работ" расстояние не больше 300 знаков. Если между этими повторами 310, 350, 400 знаков, то они не подсвечиваются.

В тот же время в том же тексте по всему тексту будет подсвечено "польз" (если между "польз" и польз" будет не больше 300 знаков), будут подсвечены также "отлич", "запас", "революц", "капитал" и т. д. — все возможные найденные в тексте сочетания букв не меньше указанного размера (5 знаков). И не будет подсвечено "преп", "курс" и т. п., так как эти сочетания имеют длину меньше 5 знаков.

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

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

Так что, KDPoid, родина (в моем лице ) на Вас очень надеется!

P. S. Упс... Что-то я вдруг задумался: если задан размер 5 знаков, то, получается, по-моему, что должны быть подсвечены одновременно и "истор", и "истори" в словах "исторический" и "история"?

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

Но можно и такой подход применить, как вариант: подсвечивать в тексте не куски слов, а целиком слова, в которых встречается хоть какой-либо повтор, соответствующий моим настройкам. Тогда, правда, совпадающая часть слов не будет выделена, но ее ведь и так можно отловить глазами. Например, в предложении "До исторического материализма мало кто верил в такие истории" программа находит повтор "истори" и подсвечивает два слова — "исторического" и "истории".

Вот такие варианты, если, конечно, это под силу программисту.
Автор: KDPoid
Дата сообщения: 09.06.2015 11:20
Программисту под силу всё...

Мой вариант пока мне кажется несколько хуже Взгляда.
Например, моё творение не отлавливает "после посылки" на разумных уровнях чувствительности.
Надо ещё поработать над алгоритмом...

А можно увидеть текст, на котором вы тестировали ? В ПМ или в почту.
У меня не возникло ощущения, что Взгляд делает много ложных срабатываний, и порог срабатывания в 600 мне казалось вполне разумной настройкой. Надо бы синхронизировать наши наборы тестов...

В своей поделке сейчас выделяю слово целиком. Поскольку степень похожести - это число, в будущем возможно выделение разными цветами, в зависимости от степени похожести.
Автор: KDPoid
Дата сообщения: 09.06.2015 20:22
Ну вот, в качестве основного алгоритма я со "Свежим Взглядом" сравнялся...
Сейчас программулька работает как-то так:


При этом работает под win64 и не требует Инета
lid111, чего-то такого вы и хотели ?
Пора cделать следующий шаг и заняться реализацией плюшек.
Автор: lid111
Дата сообщения: 09.06.2015 20:41
Текст неважно какой брать: любой. Мне лично важно, чтобы он не был ограничен объемом (или, если ограничивать объем, то чтобы хотя бы текст тысяч на семь знаков программа заглатывала без проблем).

Теперь Вам нужны тестеры для следующего шага. Присылайте прогу, будем поглядеть...
Автор: lid111
Дата сообщения: 10.06.2015 01:14
KDPoid

Цитата:
Например, моё творение не отлавливает "после посылки" на разумных уровнях чувствительности.


Так это и прекрасно, это и не нужно отлавливать. Интересуют не созвучия, а использование однокоренных слов, надо приближать результат к этому. "Масло масляное" отлавливать, а "слом мослов осла" — не надо. Так что задача не столь проста...
Автор: Waran789
Дата сообщения: 10.06.2015 10:56
lid111
Программу "Hilitext" - http://www.fanix.com/?src=hlf151 не пробовал?. Она позволяет на экране монитора подсвечивать выбранные символы в любой программе.
Автор: KDPoid
Дата сообщения: 10.06.2015 14:02
lid111,
Та нее... Мне кажется, ваши требования - это частный случай алгоритмов Свежего Взгляда.

Чтобы "мослов осла" не отловилось, минимальная длина фрагмента должна быть больше 3.
А чтобы отловить масло масляное - не больше 4-х.
Отключаем поиск созвучий и видим:

В этом режиме, алгоритм примитивен: есть общий кусок достаточной длины - значит подсвечиваем. Настройка чувствительности игнорируется. Кошка - кишка не отлавливается, потому что длина общего фрагмента - три символа.

Включаем поиск с учётом созвучий:

Масло отловилось, осёл - нет и кишки кошки найдены. Лепота.

20 лет прошло, а алгоритмы Свежего Взгляда не стареют

Описание установки Грамотея ушло вам на мыло. Экспериментируйте.
Написание программы меня позабавило, спасибо за чудесно проведённое время.
Автор: lid111
Дата сообщения: 10.06.2015 18:54
Спасибо, попробую.

Так я и не просил дублировать "Свежий взгляд". Изначально "кошка" и "кишка" меня не волновали, не та цель. Почему я и выставлял там ( в СВ) настройки 30-1000-0

Сегодня с утреца попробовал пофантазировать над названием, ничего пока не придумал. "Грамотей" — хорошее, но, увы, слишком широкое и неточное. Из точного мне придумалось разве что "Зри в корень", но это, видимо, не подойдет?
Автор: KDPoid
Дата сообщения: 10.06.2015 19:44
Грамотей работает на тех же алгоритмах, что и СВ. Модификации незначительны и не затрагивают сути. Поэтому, "не хуже чем СВ" - это моё собственное, внутреннее требование.
Если бы, реализуя такую же идею, я не мог бы получить такой же результат, это бы характеризовало мой уровень программирования...

Так что, Грамотей может работать и не хуже чем СВ, и немного по другому, как нужно вам.

Название, как я и предполагал, - самая большая проблема.
Даже "Cвежий Взгляд" мы постоянно пытаемся как-нибудь сократить. Два слова - психологически слишком длинно. Нужно одно слово.
Но как назвать одним словом "выявление в тексте случаев омонимии, паронимии и парономазии"...
Я такого слова не знаю...

Hilitext попробовал - совсем не то.
Эта утилитка когда-то была заменой поиска в тексте. Одно слово в её окне вводишь, она такие же находит в рядом работающих программах и подсвечивает. Паронимы таким способом искать - утомишься.
Да и в Windows 8.1 оно уже никак не работает. Видимо, вольницы в винде стало меньше, и Hilitext-у кислород перекрыли.
Автор: KDPoid
Дата сообщения: 24.09.2015 06:55
Чего-то мы забыли здесь похвастаться...

В результате некоторого приложения ручек, "из старой швейной машинки Зингера" была собрана вполне удобная программулька.


И повторения и созвучия ищет многими способами, поддаётся тонкой настройке под себя.

Ежели кому понадобится что-то подобное - обращайтесь.
Расскажу, покажу, подскажу.
Автор: 404NF
Дата сообщения: 24.09.2015 08:55

Цитата:
Ежели кому понадобится что-то подобное - обращайтесь.

Обращаюсь Очень полезная программа для пишущих людей, почти так же нужная, как и спелчикер. Мои запросы полностью аналогичны ТС, но если есть плюшки - кто же откажется от плюшек. Те же созвучия: созвучные слова в одном предложении присутствовать могут, а вот подряд - чаще всего будут стилистической ошибкой. Так что буду признателен если поделитесь плодом трудов.
Автор: mvk2006
Дата сообщения: 24.09.2015 09:13

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

если не сочинить, то и не будет такого слова
Паромоник (Парономик)
Хотя у меня больше ассоциаций со словами
Буквоплёт (Словоплёт)
Автор: 404NF
Дата сообщения: 24.09.2015 09:48

Цитата:
если не сочинить, то и не будет такого слова
Паромоник (Парономик)
Хотя у меня больше ассоциаций со словами
Буквоплёт (Словоплёт)

Парономик созвучно с параноик а словоплет скорее подошло бы генератору случайного текста.
По-моему, должно быть что-то производное от "тавтологии" (Тавтологик, например, или Тавтологер или Тавтоглот какой-нибудь). Хотя, думаю, автор уже привык к своему Грамотею и менять ничего не захочет.
Автор: mvk2006
Дата сообщения: 24.09.2015 10:11
Грамотей нормальное название и никаких с моих сторон нареканий - по ходу обсуждения я понял, что автор как раз в поиске - а для успеха нужно обсуждение, обмен мнениями.
С Тавтоглотом - разумно (хотя мне само звучание не так нравится).
Автор: KDPoid
Дата сообщения: 25.09.2015 07:22
Автор человек непривередливый, и с "Грамотеем" уже свыкся...
Ощущение, что всё уперлось в название сложилось случайно, потому что автор и ключевые пользователи в какой-то момент ушли в личку и дальнейшее обсуждение получающегося вели там.
"Тавтоглот" - феерично. Может я ещё напишу что-нибудь такое, не пропадать же слову...

Вернёмся к Грамотею.
Программулька несамостоятельна. Была рождена для работы внутри MAGGOT - среды для запуска мелких плагинчиков.

Как получить у себя работающий MAGGOT с одним плагином - описано здесь.

Всё маленькое, портабельное, старающееся не создавать проблем... Пробуйте.
Созвучия тоже ищет, не хуже Свежего взгляда. А то и лучше.
Будут вопросы, непонятки, сообщения об ошибках, идеи о дополнительном функционале - можно писать в эту тему, в ПМ или в этот форум.
Скорость моего ответа одинакова.

Хелпа нет. Пользователи программы пишут тексты по работе, писать ещё и в свободное время... Желающих не появилось.
Настроек, влияющих на результат, много. Не знаю, стоит ли сразу лить сюда "многабукав", думаю, полезнее будет отвечать на возникшие вопросы.

На поверхностный взгляд, большинство пользователей Грамотея используют его в паре с Тендзином,
т.е. настраивают себе MAGGOT как-то так:

Первый плагин ищет созвучия, аки Свежий взгляд, только без проблем на границе абзацев, поддержкой "ё" и т.д., и т.п.
Второй - случайную латиницу, аки similetters, но уже с поддержкой уникода, настройкой словарей замены, раскраской и прочими удобностями.
При этом они в одном месте, функционируют на соседних закладках в одном окне и обмениваются между собой редактируемым текстом.

В общем, делалось для себя, любимого.



Автор: 404NF
Дата сообщения: 25.09.2015 20:02
Спасибо, попробовал. Установилось не без труда, но сейчас работает. В тексте, который читали два человек, нашлись очень интересные вещи, вроде трех слов (в разных формах) "много" в трех подряд предложениях.
По настройкам непонятно, что такое "длина контекста" и что такое "порог срабатывания" и почему при отключенном поиске созвучий "порог срабатывания" неактивен. И почему при отключенном поиске созвучий программа находит намного больше совпадений (в основном ложных), чем при включенном, ведь по логике должно быть наоборот.
Зачем нужен Тендзин я не понял. Это чтобы находить, когда вместо русской А использована английская Эй? Так это любой спелчикер должен выявлять, нет?
Еще раз спасибо за программу. В нынешнем виде, почти с настройками по умолчанию она нашла достаточно ляпов в считавшемся вычитанным тексте, чтобы продолжать ею пользоваться.
Автор: KDPoid
Дата сообщения: 26.09.2015 07:40
Длина контекста - максимальное расстояние на котором ищутся похожести. Меряется в словах.
У меня там 9. Т.е. слова, между которыми 10 других, не будут считаться похожими, даже если они одинаковые. Это способ отсечь далеко расположенные слова.

Если включен поиск созвучий, дальше алгоритм действует так:
Для каждого слова проверяются все соседи вокруг в пределах указанной длины контекста. В каждой паре вычисляется степень похожести. Вычисляется сложно, учитывает матрицу созвучности, расстояния, длину созвучных фрагментов и много ещё чего. Суть алгоритма аналогична Свежему взгляду и на 90% настройки взяты оттуда. Результат вычисления похожести - целое число.
Тут и вступает в действие порог срабатывания. Если похожесть больше указанного вами порога - слово выделяется. Этот параметр индивидуален, и зависит от типа текста. Сделаете слишком мало - будет много ложных срабатываний. Слишком много - будет пропускать. Я использую значение 675
В этом режиме на результат практически не влияет минимальная длина фрагмента и у меня она 1.
"пришли гости" - в них есть общий фрагмент длиной 1, но вычисленная суммарная похожесть слов существенно меньше 300, и срабатывания не происходит.

Если отключить поиск созвучий...
Отключается расчёт похожести. Порог срабатывания теряет смысл. Происходит просто поиск одинаковых фрагментов указанной длины. Тогда всё упирается только в указанную минимальную длину фрагмента, она и определит количество срабатываний.

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

Суть Тендзина вы поняли правильно, использовать ли их совместно - личный выбор каждого

Сложности первой установки имеют обратную сторону. Создание нового плагина - дело пары вечеров... Сел после ужина и собрал новый плагин. Поэтому они появляются на каждый чих Однажды оказалось быстрее создать плагин, чем найти портабельный, интернето-независимый спелчекер ради поиска затесавшегося "y"

Автор: 404NF
Дата сообщения: 26.09.2015 09:48
Вроде более-менее разобрался. Выставил настройки 15-3(2)-700. В поиске созвучий все волшебство: если эту фичу отключить, то при длине фрагмента 4 многое пропускается а при 3 подсвечивается половина текста. Кстати, длинна фрагмента сильно влияет на результаты поиска и при включенном поиске созвучий, даже сильнее, чем изменение порога срабатывания.
Осталась еще парочка вопросов. Зачем нужен частотный словарь? Что означает цветовой градиент (чему соответствует первый цвет а чему второй)?
А сделать эту программу плагином к LibreOffice/OpeneOffice сложно? А то гонять фрагменты из одной программы в другую чревато тем, что можно совсем потерять результаты редактирования.

Страницы: 12

Предыдущая тема: oMega Commander


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.