|
|
Автор | Сообщение | Балаболка |
---|
Lexus Эксперт
Сообщений : 413
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | |
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | |
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 02.07.10 13:39 |  |
| flegont Вы уверены, что это была самая последняя, 464-ая версия программы "Балаболка"? У меня получается другой текст на выходе (такой же, как в "Демагоге"); я использовал словарь только с теми правилами, что Вы перечислили. Может быть, дистрибутив был скачен из кэша Вашего браузера или из кэша прокси-сервера; проверьте, пожалуйста, номер версии в окне "О программе".
Или же в настройках "Балаболки" выбран "стандартный" метода, а не "быстрый". Кстати, на примере использования "стандартного" метода видно, что приведенные Вами примеры правил не так однозначны; именно от использования такого рода правил я стараюсь отговорить пользователей.
Результат применения "стандартного" метода:
- Код:
раз два три четыре пять вышел Лексус погулять Не стрелять!три И наступила тишина.раз. пять.раз..четыре
(Я не мог не обратить внимание на то, что Вы на редкость профессионально анализируете функциональные возможности программ "Демагог" и "Балаболка", а также алгоритмы, которые в них используются. Либо Вы программист с большим опытом, либо Вы являетесь автором программы "Демагог"...) |
|
|
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | 02.07.10 18:30 |  |
| Флегонт безусловно талантлив. Криптография, кодирование, программирование, высокий поэтический стиль. Все это, и не только уживается под маской одного человека. Как его ФБР проглядело? Видать еще один русский шпиён. Нужно стукнуть  Мне нравится профессионализм в его суждениях.
Насчет программы: Очень огорчает, перестала читать смайлики. Были занесены в словарь. Не совсем корректно добавлять перед ними звездочки. Что в плюсе? Возможность пользоваться звездочкой, как подстановочным символом для слов. Наверное я слишком консервативен, но для этого нужно очень хорошо знать язык, чтобы безошибочно ею пользоваться. По поводу скорости, так и ранее "быстрый" способ в балаболке работал с приемлемой для чтения в реале скоростью. Насчет последующей обработки словосочетаний, не проверял как это работало ранее в балаболке, просто доверился словам автора, которые косвенно указывали на дальнейшую обработку. Пока для себя не решил, переходить или нет на новую версию. Старый "быстрый" метод меня устраивает и пока нравится больше. Я не вижу в нем ограничений, появившихся в последних версиях. Конечно, некоторые из них можно обойти при помощи Ini словаря, но это будет больше походить на костыли. Программа должна иметь возможность правильно озвучивать любые тексты, в том числе и программы на Си. Может быть, если это не очень противоречит стратегии развития программы, дать выбор пользователю из двух вариантов "быстрых" методов. Как сейчас существует стандартный, быстрый, добавить быстрый классический. И дальше работать по их сближению, соединяя лучшие стороны воедино. |
|
|
 | |
evmir_troll-hunter Admin
Сообщений : 628
Репутация : 208
 | |
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | |
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 08.07.10 18:08 |  |
| flegont Спасибо, постараюсь исправить эту ошибку в следующей версии программы. |
|
|
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 12.07.10 17:29 |  |
| Lexus Спасибо, там я не догадался проверить. (Жара, мозг плавится.) Поправлю в следующей версии программы. |
|
|
 | |
evmir_troll-hunter Admin
Сообщений : 628
Репутация : 208
 | 12.07.10 19:03 |  |
| - Lexus пишет:
- Evmir1 не утруждай себя нажатием минусов
Lexus как я уже писал Секуке - я этим не страдаю! Прошу прощения у модератора за оффтопик, но нужно было ответить. Прежде чем обвинять, нужно доказать. У нас не Средневековье! |
|
|
 | |
sm151058 Новичок
Сообщений : 19
Репутация : 2
 | 01.09.10 17:44 |  |
| По поводу сносок в fb2. Вроде, раньше Балаболка их читала по мере появления (или я ошибаюсь?). Поставил новую версию - не читает. А хотелось бы слышать сразу.
|
|
|
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | |
 | |
vetandr Интересующийся
Сообщений : 7
Репутация : 2
 | 07.09.10 19:03 |  |
| Всем привет! Столкнулся со следующей проблемой. Библиотека у меня в виде отдельных архивов *.rar. Если открыть Балаболкой такой архив и затем сохранить файл, то архив повреждается, и больше его открыть уже не удаётся. (WINRAR на него тоже потом ругается и открывать не хочет) Версия 1.33.0.471 |
|
|
 | |
evmir_troll-hunter Admin
Сообщений : 628
Репутация : 208
 | 07.09.10 20:22 |  |
| - vetandr пишет:
- Если открыть Балаболкой такой архив и затем сохранить файл, то архив повреждается, и больше его открыть уже не удаётся
У меня такой проблемы нет. Попробуйте нажимать не "Сохранить" а "Сохранить как". Удачи. |
|
|
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | |
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 09.09.10 1:42 |  |
| Lexus Если так необходима поддержка обоих вариантов обработки регулярных выражений, можно добавить такой "переключатель" в программу; сделаю в следующей версии. Но я бы рекомендовал подумать об отказе от использования VBScript.
Описанная мной "ошибка" не столько "критическая", сколько неприятная. Ее вполне можно обойти, видоизменив правила. |
|
|
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | 09.09.10 7:53 |  |
| В кратком хелпе к TRegExpr есть упоминание, что начиная с версии v.0.929 для болшей схожести с Perl для указания значения подвыражений используется '$' и допускаются n > 9.
"...Если Вам необходим просто символ '$' предваряйте его обратной косой чертой. Если Вам необходимо сразу после '$n' поместить цифру, заключайте n в фигурные скобки '{}'. Например: 'a$12bc' -> 'a<Match[12]>bc', 'a${1}2bc' -> 'a<Match[1]>2bc'. ..."
Т.е. в VBscript $10 понимается, как значение подвыражения №1 и символ 0. А в Perl это значение подвыражения №10.
Я также обратил внимание, что словарь СИ...ini содержит ошибки вида: "после XXX" --> "после две тысячи десятого" вместо "после тридцатого" Эти ошибки наблюдаются как под VBscript, так и под RegExpr для римских чисел, кратных 10.
Правила, содержащие фрагменты вида "$10" верно отрабатывали под VBscript: "после XXV" --> "после двадцать пЯтого" и ошибочно под TRegExpr: "после пЯтого" Но, если завершающий 0 убрать, вот так: "$1", то сохранялась правильная работа под VBScript и восстанавливалась правильная работа под TRegExpr!
Впрочем, в силу сложности этого (весьма кстати полезного) словаря, правильно "отрихтовать" его сможет, наверное только сам его создатель 
|
|
|
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | 09.09.10 10:02 |  |
| Я думаю, что при наличии исходников, возможно подправить компонент, со временем убрав критические несоответствия. А пока, хорошо бы иметь возможность использовать особенности, предоставляемые vbscript, соответствующие стандрту языка perl. Вспоминаю эпопею с переходом на новый быстрый метод применения правил, когда приходилось откатываться шесть раз на стабильную версию программы. А ведь можно было просто переключить вариант применения правил до выхода откорректированной версии. Помимо описанных несоответсвий хочу обратить внимание на невозможность применения следующей группы правил:
(\b)(\d*)([02-9])1-ю(\b) --> $1$2$30 Первую$4
должно получиться 20 Первую с новым компонентом имеем 2 Первую
Не будучи спецом по дельфи, мне думается,что все-же возможно видоизменить компонент и проводить проверку на наличеие в левой части правила аргумента, соответствующего $30 и при его отсутствии выполнять подстановку $3 переменной. |
|
|
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | |
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 09.09.10 16:17 |  |
| Кстати, в компоненте TRegExpr количество подвыражений вообще не может быть больше, чем 15 (константа NSUBEXP).
Если количество подвыражений равно 10, то мы все равно оказываемся в ситуации неопределенности: в этом случае $10 может обозначить как $10, так и $1 и ноль. То есть, идеального решения не существует - даже проверка количества подвыражений не даст абсолютной уверенности.
Я решил использовать такой код вместо вышеуказанного "куска":
- Код:
begin if Delimited then begin while (p < TemplateEnd) and {$IFDEF UniCode} //###0.935 (ord (p^) < 256) and (char (p^) in Digits) {$ELSE} (p^ in Digits) {$ENDIF} do begin Result := Result * 10 + (ord (p^) - ord ('0')); //###0.939 inc (p); end; end else begin if (p < TemplateEnd) and {$IFDEF UniCode} //###0.935 (ord (p^) < 256) and (char (p^) in Digits) {$ELSE} (p^ in Digits) {$ENDIF} then begin Result := ord (p^) - ord ('0'); //###0.939 inc (p); end; end; end;
В этом случае программа будет считать легитимными такие способы записи: $1, $2, ..., $9, ${10}, ${11} и т.д. Случаи, когда используются десять подвыражений, крайне редки (сейчас в INI-словарях таких нет), так что можно использовать в таких правилах фигурные скобки (или вообще не составлять правила с таким большим количеством подвыражений - это тоже способ обеспечить совместимость словарей). |
|
|
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | |
 | |
evmir_troll-hunter Admin
Сообщений : 628
Репутация : 208
 | 20.09.10 9:14 |  |
| Добавлена поддержка аудиофайлов формата MPEG-4 (MP4, M4A, M4B). Отличная новость! Щиро дякую. |
|
|
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 20.09.10 21:48 |  |
| Lexus Простите, но "путаницу" создал не я, а те российские пользователи, которые почему-то решили использовать мою программу не для работы с компьютерными голосами, а для обработки текстов при помощи списков правил. Опция, добавленная в последней версии программы, - это максимум того, на что я готов пойти, чтобы помочь таким пользователям.
Суть дилеммы, которую Вы описали, мне понятна, но делать что-либо для ее разрешения не стану. Таким пользователям остается лишь отказаться от использования новой опции (по умолчанию опция отключена, "галочка" в этом пункте не стоит).
-----
В очередной раз повторяю свою рекомендацию не добавлять в словари правила, затрагивающие более одного абзаца или более одного предложения. ВСЕГДА существует вероятность, что такие правила не сработают: какой бы величины не были "куски" текста, которыми оперирует программа, - большие или маленькие, - между ними всегда будут "стыки". |
|
|
 | |
evilone_ Участник «online словари»
Сообщений : 860
Репутация : 317
 | 04.10.10 19:28 |  |
| балаболка 478 с включенной опцией "Применять правила к большим частям текста" при нажатии на "Показать измененный текст" зависает через раз (подключено два словаря этот и этот используется стандартный метод замен для dic и PCRE для ini)  сначала что-то происходит но под самый конец просто перестает реагировать, индикатор замирает и все, приходится удалять через диспетчер задач и еще почему-то в ини-словаре, который подключен, при редактировании через балаболку начали удаляться комментарии и разрывы строк, это так задумано? можно ли не удалять комментарии и вообще сохранять форматирование ини-словаря? |
|
|
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 04.10.10 21:00 |  |
| evilone_ Скачал словари, попробовал применить к нескольким текстам; вот это правило из INI-словаря отправило компонент для обработки регулярных выражений на "бесконечный" цикл:
- Код:
(\n|\r|\t|\.|\,|\:|\;|\-|\!|\?|"|\»|\)|\]|\}|\s)+(слово)+\s+(было)+\s=$1$2` $3 Это правило располагается почти в конце списка. Мне сложно сказать, что не так с этим правилом или с его обработчиком; надеюсь на помощь специалистов в регулярных выражениях.
С другими правилами проблем не возникло.
- evilone_ пишет:
- и еще почему-то в ини-словаре, который подключен, при редактировании через балаболку начали удаляться комментарии и разрывы строк, это так задумано? можно ли не удалять комментарии и вообще сохранять форматирование ини-словаря?
Не понял, о чем именно идет речь; поясните, пожалуйста.
Исторически так сложилось, что в редакторе словарей я не показываю те первые строки, которые представляют из себя комментарии ("шапку" словаря). Так попросили сделать иностранцы для первой версии "Балаболки", у которых были уже готовые, собственные INI-словари; мне это показалось логичным, и я согласился. В случае с DIC-словарями поступил точно так же.
Но "шапка" никуда не девается - при сохранении словаря на диске, она добавляется в файл. Открыл Ваш словарь в программе, сохранил - получился такой же текстовый файл, как и был прежде. |
|
|
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | |
 | |
evilone_ Участник «online словари»
Сообщений : 860
Репутация : 317
 | |
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 05.10.10 0:36 |  |
| - evilone_ пишет:
- в демагоге такой проблемы нет и правило как-то проглатывается
Вы ошибаетесь, программа "Демагог" зависает (уходит на бесконечный цикл) в тех же местах текста и на том же самом правиле. Не вводите пользователей в заблуждение.
Я уже написал, что мне сложно разобраться, в чем проблема с этим правилом и почему обработчик зацикливается, когда применяет регулярное выражение. Попытаюсь переадресовать вопрос разработчикам компонента, но маловероятно, что это даст результат. Может быть, автор правила может объяснить, в чем тут дело?
----
Редактор словарей менять не стану, так что пустые строки и комментарии в середине списка будут удаляться. Если форматирование принципиально для какого-либо конкретного словаря - используйте обычный текстовый редактор ("Блокнот", например). |
|
|
 | |
Lexus Эксперт
Сообщений : 413
Репутация : 32
 | |
 | |
evmir_troll-hunter Admin
Сообщений : 628
Репутация : 208
 | 05.10.10 12:35 |  |
| - evilone_ пишет:
- балаболка 478 с включенной опцией "Применять правила к большим частям текста" при нажатии на "Показать измененный текст" зависает через раз
Проблема в больших текстах. При обработке corrector.ini, и Балаболка и Демагог зависают! Причем неважно есть ли проблемная строка, или нет. Я пол ночи мучил док. на 10,28 МБ. – такой объём обработать не хватит никакого терпения. Делил текст на две и четыре части – не помогло. В конце концов, я разделил Балаболкой док. по 1 МБ. и всё получилось довольно быстро. Статистика замен, Быстрый метод; Демагог: # Tекст "Сборник рассказов1_1.txt", измененный по "СИ (Вадим Романько).ini" ( 00:02:0) # Tекст "Сборник рассказов1_1.txt", измененный по "omograph.dic" ( 00:03:1) # Tекст "Сборник рассказов1_1.txt", измененный по "corector.ini"( 00:03:5) Балаболка; СИ (Вадим Романько).ini=3 мин. 41,13 сек. omograph.dic=2 мин. 40,04 сек. corrector.ini=4 мин. 24,50 сек.
Считаю, что размер текста в 1 МБ. оптимален на данный момент. По крайней мере для меня. |
|
|
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | 05.10.10 16:37 |  |
| Источник: Дж. Фридл "Регулярные выражения". http://wmate.ru/ebooks/book67.html
Есть 2 алгоритма обработки РВ. ДКА - детерминипрованный конечный автомат. НКА - недетерминированный конечный автомат.
Все современные системы обработки РВ используют НКА, хотя ДКА в тысячи раз более быстрый и абсолютно надежный. Но он не позволяет работать с подвыражениями и вообще со сложныи синтаксисом.
НКА - похож на блуждание в лабиринте. Пошел направо - тупик. Вернулся. Пошел налево - развилка, поошел налево - тупик, пошел направо - тупик - вернулся на пред-предыдущую развилку и т.д. НАИХУДШИЙ случай - это, когда количество проверок становится равным 2 в степени N. где N - число символов в тексте. Если имеем текст в 10000 символов (это меньше 10 кб) то проверок будет 2 в степени 10 тысяч. Время работы алгоритма увеличивается до миллиардов (и много более!) лет. Это называется ЭКСПОНЕНЦИАЛЬНЫЙ ПОИСК. Многие системы отслеживают факт попадания на "дорогу в ад", подсчитывая и ограничивая число проверок. Тогда на текстах бОльшего размера даное РВ выдает Ложь, а на меньших - Истину. Другие системы ограничиваю отводимую память и банально выдают "Stack overflow".
В книге приводятся примеры фатальных РВ и даются советы (эмпирические) как НЕ написать что-либо подобное... Алгоритм НКА крайне чувствителен и к ФОРМЕ записи РВ. Например x+ и xx* - это одно и то же, но 2-е РВ выполняется быстрее.
Естественно, что А.Сорокин, создавая свой компонент не вдавался, да наверное, и не знал многих подробностей. А у меня после беглого просмотра монографии Фридла совершенно отпало желание ваять свой собственный компонент для работы с РВ. Так что - что имеем, с тем и работаем.
Но тем, кто занимается составлением ИНИ словарей - эту книжку настоятельно рекомендую. Чтоб жизь медом не казалась.  |
|
|
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | |
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | |
 | |
evilone_ Участник «online словари»
Сообщений : 860
Репутация : 317
 | 05.10.10 20:22 |  |
| - balabolka пишет:
- Кто автор этого "убийственного" правила? Он тестировал его на своем компьютере?
ну автор правила ломающего программу это снова я, как всегда , но до появления опции "Применять правила к большим частям текста" было все более менее нормально также интересно что у меня почему-то только в связке dic+ini получается зацикливание а просто ini с этим правилом нормально меняет текст  в общем тайна покрытая мраком, а правило - убийца  |
|
|
 | |
evmir_troll-hunter Admin
Сообщений : 628
Репутация : 208
 | 05.10.10 21:03 |  |
| - evilone_ пишет:
- до появления опции "Применять правила к большим частям текста" было все более менее нормально
Без этой опции, Балаболка обрабатывала текст очень медленно. Тот же мегабайтный текст - corector.ini=11 мин. 32,19 сек. |
|
|
 | |
flegont V.I.P.
Сообщений : 355
Репутация : 475
 | 05.10.10 21:48 |  |
| Хм... Наверно, и от текста зависит. Пока что убить Демагога этим правилом не удалось.  Текст в 1.4 Мб. Вот фрагмент статистики.
# Tекст "В.Ли_Гроза_над_Миром.txt", измененный по "corector.ini+omograph.dic" ( 0:02:30)
Венедикт Ли arnys@mail. ru n 1 d 3@yahoo. com Гроза над Миром Чтобы познать то, чего вы не знаете, Вам нужно идти по дороге невежества. Чтобы достичь того, чего у вас нет, Вам нужно идти по дороге отречения. Чтобы стать не тем, кем вы были, Вам нужно идти по пути, на котором вас нет. Т. Эллиот ...
===========================================
А вот еще... 2.5 Мб
# Tекст "MONTEC.txt", измененный по "corector.ini+omograph.dic" ( 0:04:08)
Аликсандр Дюма Граф Монте-Кристо изд. ХудЛит, тысяча девятьсот семьдесят седьмой год. OCR Палек, тысяча девятьсот девяносто восьмой год. ... |
|
|
 | |
balabolka V.I.P.
Сообщений : 1212
Репутация : 986
 | 05.10.10 23:26 |  |
| - flegont пишет:
- Пока что убить Демагога этим правилом не удалось
С чего Вы это взяли?! Если в наших программах используется один и тот же компонент - почему он должен по-разному обрабатывать одно и то же правило?!
В своем предыдущем сообщении я привел образец текста, где проявляются "тормоза" RegExpr. Проверил его в Вашей и своей программах - результат одинаково неутешительный: чем больше пустых строк, тем больше тратится времени на применение правила. 2 секунды, 10, 30 секунд, больше минуты и т.д. - никаких чудес.
- Цитата :
- # Tекст "", измененный по "corector.ini" ( 0:02:28)
Слово слово слово
|
|
|
 | |
|
Балаболка |
---|