Форум » KooBAudio 2.0 » Рабочие группы словарей » Ответить

Рабочие группы словарей

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

Ответов - 7

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

Cminant: MoppoH пишет: другой словарь помести в группу постобработка Лучше не надо =) Особенно, если речь о больших словарях на пару мегабайт. отсутствие оптимизации в алгоритме "постобработки" скажется не лучшим образом... Можно переименовать такие словари, чтобы они оказались в конце списка. Я пользуюсь числовыми префиксами для всех файлов, типа "1_рег выражения.dic", "2_имена собственные.dic" "3_омографы(словосочетания).dic" ... "8_части_слова.dic" Искать ошибки в словарях проще всего с помощью окна "отладка словарей". Вбив неправильно произнесенное слово/словосочетание высветится список задействованных для него правил, двойной клик по которым откроет соответствующее праило в редактрое словарей, где его можно подправить / удалить / переместить в другой словарь...

MoppoH: Cminant пишет: Можно переименовать такие словари, чтобы они оказались в конце списка. Я пользуюсь числовыми префиксами для всех файлов, типа "1_рег выражения.dic", "2_имена собственные.dic" "3_омографы(словосочетания).dic" ... "8_части_слова.dic" это да, но тогда будет проблема в том что слово резервируется допустим из словаря 1 и в словаре 2 оно уже не заменит его, это касается таких выражений как, у кра'я затем если в словаре номер 2 есть выражения у кра'я стены' он уже не заменит слово стены, надо будет переносить такие выражения в первый словарь. пы.сы. так же пропала возможность прокрутки в окне где составляется регулярное выражение, раньше прокручивалось .


odinokiyklaus: Проблему редактирования правил для какого-либо слова сразу во всех словарях я решаю при помощи всё того же матасловаря. Для этого делаю вот что: 1. выбираю активные словари 2. включаю режим мета-словаря 3. в левой части выбираю нужное слово 3. в правой части части выбираю нужное правило. один клик его выделяет, два клика переводит в режим редактирования. Все правила из правой части можно удалять через клавишу "удалить выделенное правило". После проделанных операций результат лкгко сохранить нажав на кнопку "выбрать активные словари". При этом вылезет окно с вопросом о сохранении изменеий. Выбирем "да" Лично я считаю, что эта возможность очень удобная и полезная, и убирать её из программы не стоит. Прилагаю скриншот.

Cminant: MoppoH пишет: это да, но тогда будет проблема в том что слово резервируется допустим из словаря 1 и в словаре 2 оно уже не заменит его, это касается таких выражений как, у кра'я затем если в словаре номер 2 есть выражения у кра'я стены' он уже не заменит слово стены, надо будет переносить такие выражения в первый словарь. Да, в таких случаях "резервирование" идет во вред, создавая нежелательные "конфликты" правил. Решение проблемы - использовать группы поиска вперед / назад. [pre2] у края=у кра<я у края стены=у кра<я стены<[/pre2] изменить на : [pre2] #(?i)(?<=\bу )края=кра<я #(?i)(?<=\bу края )стены=стены<[/pre2] ^ даже в таком порядке правила будут работать, т.к. группы "поиск вперед/назад" ничего не резервируют сами по себе, и срабатывают даже если фрагмент текста был зарезервирован другим правилом. Поскольку словарей с простыми словосочетаниями довольно много, переделывать их все вручную будет проблематично, к тому же в, "сыром" виде ругулярные выражения менее наглядны, и удобочитаемость словарей пострадает. Я думаю, в следующей версии можно добавить оптимизацию в код загрузки словарей, чтобы для обычных (не RegEx) правил со словосочетаниями сторилось выражение, в котором совпадающие в начале или в конце шаблона/произношения слова< брались бы в группу (?<=...) / (?=...), а в результате осталось только измененное слово... Короче говоря, перобразовывать "на лету" правила, как в примерах выше. Поэтому хотелось бы функцию "рабочая группа" или типа того P.S. Да по поводу сабжа подумаю... Т.е. нужен аналог режима "мета-словаря", но не для всех, а только для некоторых словарей, плюс возможность добавления правил (редактирование имеющихся правил в режиме мета-словаря уже и так работает)...

Cminant: оптимизацию для словосочетаний добавил в 2.0.11.04 (хотя и не с помощью групп (?<=...) / (?=...), т.к. с ними производительность обработки упала аж на 50%, так что пришлось реализовывать ручным сдвигом позиций "резервирования"...) Над реализацией "рабочих групп" еще нужно время обдумать как следует... MoppoH пишет: так же пропала возможность прокрутки в окне где составляется регулярное выражение, раньше прокручивалось . это ограничение нового элемента управления fastcoloredtextbox... Я уже ранее обещал вернуть опцию использования стандартного TextBox'а с прокруткой и любыми шрифтами без подсветки синтаксиса, но пока не до этого, (слишком многое придется менять, постоянно подразумевая выбор свойств и обработчкиов событий того или иного типа элемента управления, и высока вероятность что-то упустить, породив новый баг)

odinokiyklaus: Всем привет! Есть проблема. Пишу регулярки для числительных, отыечающих на вопрос КАКУЮ (Винит. падеж) к примеру, регулярка На (1-19|20|200 ... 900|21-100,101-199,201-299 ...)-ти километровую длину решается так #(?i)(?<=\b(в|во|на|за|по|про|сквозь)\b\s)(?<D>([1]{0,1}[0-9]{0,1}|20|[2-9]{1}[0]{2,}|[1]\d+|[2-9]\d+))([\-но]{2,3}\s|[\-ух]{2,3}\s|[\-еёх]{2,3}\s|[\-тми]{2,3}\s|[\-ка]{2,3}\s|[\- ]{1,3}|[\s])(?<S>(часовую|дневную|месячную|годовую|вековую|градусную|футовую|фунтовую|дюймовую|долларовую|центовую|рубл[её]вую|процентную|десятую|миллионную|миллиардную|этажную|эпизодную|рядную|тактную|\b(пико|нано|микро|милли|санти|деци|дека|гекто|кило|мега|гига|пета){0,1}(вольт[\-]{0,1}амперную|литровую|амперную|вольтовую|ваттную|герцовую|метровую|граммовую|битную|байтную)\b))=#(${D},2,0) ${S} Для выражения на 200-километровую оно выдает сносный результат на двухстот километровую А вот для выражения на 2135-километровую выражение будет совсем неверным на двух тысяч (Родит. падеж) ста тридцати пяти(Родит. падеж) километровую (Винит. падеж) Должно быть так на две тысячи(Родит. падеж) сто(Винит. падеж) тридцати пяти(Родит. падеж) километровую (Винит. падеж) Это не первая проблема. Аналогичная ситуация наблюдается и с другими выражениями в русском языке: сто(Именит. падеж) двадцати(Родит. падеж) метровая(Именит. падеж) девяносто(Именит. падеж) пяти(Родит. падеж) процентная(Именит. падеж) и т.д У меня огромная просьба к уважаемому Cminant-у. Не смогли бы вы функцию перевода числительных в текст #(${D},Падеж,Форма) выполнить так, чтобы для слов, пуличившихся на выходе, можно было самостоятельно проставить падеж, и для всех слов форму. На выходе бы получилось выражение вида На пять(Винит. падеж) тысяч(Родит. падеж) сто(Винит. падеж) шестидесяти(Родит. падеж) четырёх(Родит. падеж) метровую(Винит. падеж) высоту (высота Эвереста).



полная версия страницы