Форум » KooBAudio 2.0 » Словарный анализ текста » Ответить

Словарный анализ текста

bobo4ka: Возможно, Вы просто его ещё не доработали, но на текущий момент (бэта 4 фикс) пользоваться им не очень удобно в отдельных моментах.. В данный момент застрял на Именах. Работаю я в режиме "Автоматически произносить слово при выделении". Если стать на любое "Имя" из "списка имён" в окошке ниже сразу отображаются все его словоформы. Это безусловно удобно, если бы не несколько "но". 1. Я хочу просто "пробежаться мышкой" по списку этих "похожих" слов с целью послушать их звучание. При перемещении в "окне похожих слов" я не хочу автоматически "перемещаться (устанавливать фокус)" на это слово и в основном окне "списка всех найденных имён" и автоматически запускать поиск похожих слов я тоже не хочу. Я хочу просто услышать звучание этого найденного похожего слова и продолжать находится в этом списке "похожих слов"... А вот режим "перехода вглубь" с последующим поиском похожих слов можно было бы повесить на "дабл-клик". Повторюсь - это только для окна со списком похожих слов. 2.В текущий момент если в словаре уже есть правило, определяющее звучание одного из найденных похожих слов, то при "становлении" на это слово (в окне похожих слов) в текущий момент ничего не происходит - это слово не произносится вслух, на него не перемещается фокус в "основном списке имён" и не запускается механизм поиска похожих на него слов... Как бы не удобно.. Похоже я понял почему: в момент добавления нового правила те Имена, которые подпадают под зону действия этого правила, исчезают/удаляются из основного Списка Имён.. Но при этом эти имена продолжают отображаться в окне найденных "похожих слов".. Кроме того, при удалении "такого правила", эти Имена автоматически не возвращаются в "список Имён", и даже кнопка "Перезагрузить словари" не помогает в этом. 3. Можно ли в списке "похожих слов" те слова, звучание которых уже изменено пользовательскими правилами выделять другим цветом и по правому клику мышки на таком слове отображать доп.окно с теми правилами которые определяют его звучание (с возможностью дальнейшего перехода к редактированию/удалению любого из этих правил).

Ответов - 28, стр: 1 2 All

Cminant: Да, словарный анализ пока что самая "недоделанная" часть программы =) Будем дорабатывать, пожелания учту.

bobo4ka: Работа с именами. При добавлении правила (с последующим сохранением словаря) не происходит его автоматическое использование. Т.е Имена продолжают произносится по-старому, и не выделяются цветом как те, для которых определены правила. Приходится после добавления правил каждый раз жать кнопочку "Перезагрузить словари". После этого всё приходит в норму. Можно сделать, чтобы правило вступало в силу сразу после его добавления в словарь?. Пропали "содержательные" всплывающие подсказки для кнопочек "xyz" и "произносить в слух при выделении". Какой-то глюк с кнопочкой "Скрыть слова уже имеющиеся в словарях". Нажал "включить" - пару раз мигнуло, перезагрузило список слов.. Слова действительно пропали из списка, но вот на панельке инструментов эта кнопка всё-равно находится в состоянии "выключено" и больше не реагирует на "клики" - т.е изменить её состояние в текущем сеансе работы "словарного анализа" не возможно.

Cminant: bobo4ka пишет: Можно сделать, чтобы правило вступало в силу сразу после его добавления в словарь?. Можно, будет в следующей версии. Какой-то глюк с кнопочкой "Скрыть слова уже имеющиеся в словарях" Операция по поиску и удалению слов запускается в отдельном потоке (в фоновом режиме), т.е. можно продолжать работу со списком, найденные слова будут исчезать по ходу. Когда операция будет завершена кнопка "отожмется" сама. Так сделано из-за довольно низкой скорости поиска (чтобы не дожидаться завершения операции несколько минут). Возможно пока еще процесс не совсем отлажен, будут доработки.


Алексей: добрый день. такой вопрос возник: как убрать из словарей правила такого типа: book=бук, publishing=паблишин..., но автоматически, не каждое по отдельности? может програмка какая есть для чистки текста? наделал таких правил, а теперь, когда англ. слова читает соответственнй языку движок, они только мешают заранее благодарю.

Cminant: Алексей В редакторе словарей есть фильтр с поддержкой рег. выражений Чтобы вывести только правила с латиницей можно использовать шаблон ^\*?[A-z] Затем можно включить режим мульти-выделения правил, выбрать все (можно выбрать первое правило в списке и нажать Ctrl+Shift+End), и нажать кнопку "вырезать в буфер" (по сути то же удаление) Можно так же предварительно включить "режим мета словаря", чтобы удалить правила во всех активных словарях сразу...

Алексей: Отлично! все вычистил. Спасибо!!!

Алексей: а что, если включить словарь(ри) в релиз программы. в программе будет стандартный словарь, + пользователь сможет добавлять свои...? многие пользователи не имеют времени или желания заниматься словарями, и таких не мало. для программы будет большой плюс наличие словаря(рей), это вызовет бОльший интерес к ней. в развитие стандартного(ных) словаря(ей) можно вовлекать способных и желающих пользователей. Можно также создать раздел на сайте для выкладывания пользователями своих словарей, помнится, так было во время разработки 1-й версии программы.

KOMODOR: давненько уже собираюсь свои выложить) Самому ж можно - в разделе справки создаешь ветку "словари", и готово

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

Cminant: а что, если включить словарь(ри) в релиз программы. в программе будет стандартный словарь Я бы с радостью, да вот подходящего на роль "основного" словаря как-то нету. Сам использую старый "005_main.dic" еще от версии 0.7, но "мусора" в нем полно, то и дело приходится вычищать "лишние" правила, которые лишь мешают движку... Остается надеяться на активность пользователей =)

KOMODOR: кстати, с счет вычищения мусора из словарей... До релиза Кубы2 приходилось в словарь exc_rus.txt заносить кучу правил, типа: кнопочка : <кно<почка> /i кнопочная : <кно<почная> /i кнопочные : <кно<почные> /i кнопочный : <кно<почный> /i кнопочным : <кно<почным> /i кнопочных : <кно<почных> /i Теперь же, когда словари автозамены с подстановочными знаками работают чотко и безглючно, хватает одного правила кнопоч*=кно<поч Проблема в том, что таких однокоренных правил в словаре - ооочень много, и вот теперь думаю, как их автоматически выковырять оттуда. Видится мне чудосрипт, который бы все однокоренные слова вырезал из файла словаря и переместил в отдельный файлик, - уже для ручной обработки. Но как оно должно работать - понятия не имею, медведь тактик, а не стратег

MoppoH: да KOMODOR пишет: Видится мне чудосрипт, который бы все однокоренные слова вырезал из файла словаря и переместил в отдельный файлик, - уже для ручной обработки. да было бы очень здорово если автор сможет написать такой скрипт, а то у меня в словаре 163 тысячи слов и выражений половина из которых однокоренные слова.

Cminant: KOMODOR MoppoH На счет скрипта подумаю, однако не следует все же забывать принципы "не навреди" и "лучшее враг хорошего" =) Это я к тому, что не всегда универсальные правила с подстановочными знаками лучше отдельных правил для однокоренных слов... Если использовать оптимизацию словарей, 10 таких отдельных правил будут выполняться в разы быстрее одного "универсального". К тому же непреднамеренных срабатываний можно не опасаться, когда у слов с разным ударением совпадают начала...

KOMODOR: Cminant пишет: Если использовать оптимизацию словарей, 10 таких отдельных правил будут выполняться в разы быстрее одного "универсального". Как бэ да, но никогда однокоренные правила из exc_rus, сколько бы их ни было, не смогут перекрыть весь перечеь вариаций. Тут тебе и падежи, и приставки, и хитрые окончания, и сложносоставные слова... А вот звездочке пофигу на всю мощь великого и могучего К тому же чистка словаря нужна и потому, что 1 из 20 книжек по его вине ступорятся в записи. Если разгрузить его хотя бы однокоренными, то есть надежда, что потом либо косюки станут заметнее, либо процент заступоривания уменьшится.

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

KOMODOR: Алексей , дык, об этом и толкуем уже предлагаю такие правила: 1. Словарик создается с нуля. 2. Вернее, не словарик, а несколько словарей, чтобы не запутаться. 2. Правила из говориловских словарей не тащить - они разрабатывались без учета exc_rus, поэтому только навредят 3. За основу, ничтоже сумняшеся, предлагаю взять, например, мои. 4. Синхронизация. Правила небольшими кусками выкладываются либо сюда, либо в гуглодокумент, либо еще куда - я ж не знаю, кому как удобнее, - коллективно обмозговать надо. Последущаее Составление стандартного словаря из получившихся огрызков - работа непростая, ибо у каждого свое восприятие, да и страна большая, - говоры, и всё такое. Поэтому окончательное составление словаря всётаки предлагаю повесить на Cminant`а - чтоб никому не обидно. 5. Не думаю, что есть смысл включать словари в дистр. Помню, какой гемор был каждый раз, когда ставил новую версию mp3book, и каждый раз приходилось восстанавливать свою версию словаря exc_rus... Пускай просто висит ссыль на сайте - каму надо, тот возьмет. зы. При составлении правил особый упор должен делаться на правила с подстановочными, типа *го поля=го по<ля Обработка текста таким словарем, конечно, будет занимать большее время, чем простыми правилами, зато удастся перекрыть все возможные варианты произношения.

Алексей: друзья, английское местоимение 1-го лица, единственного числа I (ай), печему-то заменяется словом "один". вероятно, это происходит из-за какого-то правила в словаре numeric.dic. подскажите, что нужно поправить, так как я не силен в регулярных выражениях. благодарю.

Cminant: Алексей Нужно отключить обработку римских цифр в свойствах проекта... регэкс шаблон для замены римских цифр пока что не редактируется юзером, и выглядит так: \bM{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\b Вследующих версиях попробую доработь, и наверное сделаю доступным для изменения...

Алексей: KOMODOR, разумные замечания и предложение. а что по этому поводу думает сам Cminant?

bobo4ka: Хотелось бы вообще узнать по какому принципу происходит обработка текста имеющимися в словаре/словарях правилами. 1. В какой очередности правила применяются к тексту вообще и каков порядок если есть несколько словарей?. 2. Признак того, что правило построено на базе регулярных выражений влияет каким-либо образом на очерёдность применения этого правила? (допустим сначала применяются все правила основанные на регулярных выражениях а уж потом все остальные) ? 3. Каждое из правил применяется к оригинальному неизменённому тексту или текст меняется динамически после обработки каждым из правил и каждое последующее правило работает с уже модифицированным текстом? т.е грубо говоря если у меня есть два правила: *го поля = го по<ля поля=поля< И текст: Одинокое дерево средь бескрайнего поля. Каким станет текст после словарной обработки?: 1)Одинокое дерево средь бескрайнего по<ля. после обработки первым правилом текст модифицируется и второе правило уже не сработает, т.к "поля" уже будет измененным на "по<ля" 2)Одинокое дерево средь бескрайнего по<ля<. в ходе словарной обработки все "изменения" запоминаются в неком хранилище изменений, не меня при этом оригинальный текст. По окончанию словарной обработки все накопленные в "хранилище" изменения неким хитрым образом накладываются на оригинальный текст. В данному случае для слова "поля" было зафиксировано две модификации которые и были отражены в конечном итоге. 3)Одинокое дерево средь бескрайнего поля<. в ходе словарной обработки все "изменения" запоминаются в неком хранилище изменений, не меня при этом оригинальный текст. Но по окончанию словарной обработки при возникновении коллизий (для одного слова имеетя 2 и более запланированных модификаций) вступает в силу лишь последняя модификация.

MoppoH: Как я заметил если включено сначала рег выражения (это выражения где 2 и более слов) то слова заменяются если несколько словарей сначала из словаря начинающегося с допустим "a" и дальше в алфавитном порядке, к примеру если в словаре "а" есть выражение *го по<ля, а в словаре "б" есть *его поля< то будет только замена *го поля, а *его поля он уже не найдет, и вопрос к автору: выражения из 4 слов раньше заменяется чем из двух слов или нет?

bobo4ka: Просто недавно добавлял новые правила в словарик: #(?i)(?<=(?:ой|часть|ей|ье|ью|ем)\s*)\bруки\b=руки< руки = ру<ки рассчитывал, что вначале текст будет обрабатываться первым правилом, а для всех иных случае будет срабатывать второе правило.. Однако задумка не сработала. Пришлось второе правило тоже оформлять в виде регулярного выражения - только в этом случае работало так как надо #(?i)(?<=(?:ой|часть|ей|ье|ью|ем)\s*)\bруки\b=руки< #(?i)\b(Р|р)уки\b=$1у<ки Хотя, следуя логике, всё должно было работать и в первом случае.. Почему не сраболо - мне не понятно - именно это и породоило цепь вопросов к разработчику изложенных выше..

Cminant: KOMODOR пишет: 4. Синхронизация. Правила небольшими кусками выкладываются либо сюда, либо в гуглодокумент, либо еще куда... Поразмышлял на эту тему. Пока что мне видится такое решение: добавить в программу поддержку "составных словарей" - т.е. допустим будет несколько файлов вида: [pre2] Main.Cminant.dic Main.KOMODOR.dic Main.MoppoH.dic Main.Vasya_pupkin.dic и т.д.[/pre2] В редакторе словарей будут отображаться правила из всех таких файлов, но новые будут добавляться только в "свою" часть, файл которой можно будет выложить тут на форуме... По сути это то же самое как если бы каждый автор делал собственный словарь, однако с той лишь разницей, что результат совместной работы будет сразу перед глазами, что в какой-то мере позволит избежать повторов в словарях...

MoppoH: Что то очень сложные какие то выражения у меня по другому #(?i)(?<=(ые)\b.{0,5})\bруки\b=ру<ки #(?i)(?<=(дойдут).{0,30})\bруки\b=ру<ки #(?i)\bруки\b(?=.{0,30}(не дошли|оторва))=ру<ки #(?i)(?<=(ание|вой|дней|дой|ения|йся|кой|лой|ние|нию|ной|оть|сть|тель|той|шей|шил|ься|вокруг)\b[^\.,]{0,5})\bруки\b=рукиъ< #(?i)(?<=(взмах|коснул|локте|подрезан|попросил|следы|тепло|хватало).{0,30})\bруки\b=рукиъ< а затем идет простое с большой буквы $Руки=Ру<ки

bobo4ka: MoppoH пишет: Что то очень сложные какие то выражения у меня по другому У вас выражения ничуть не проще но суть не в том у кого проще/лучше правила, а в том, как вообще работает алгоритм словарной замены.. Попробуйте преобразовать $Руки=ру<ки в руки =ру<ки и посмотрите что получится.. У меня в этом случае не срабатывает ниодно из впереди идущих регулярных выражений. такое впечатление что сначала текст изменяется правилом руки =ру<ки и лишь потом начинается обрабатывается правилами с рег.выражениями, которые уже не срабатывают, т.к "руки" уже превратились в "ру<ки"

Cminant: 1. В какой очередности правила применяются к тексту вообще и каков порядок если есть несколько словарей?. Словари загружаются в алфавитном порядке. Чтобы менять порядок можно использовать префиксы в именах файлов, например "001_names.dic" "002_authors.dic" ит.д. 2. Признак того, что правило построено на базе регулярных выражений влияет каким-либо образом на очерёдность применения этого правила? (допустим сначала применяются все правила основанные на регулярных выражениях а уж потом все остальные) ? Это все зависит от опции "оптимизация словарей" (Настройки->производительность) По-умолчанию она включена ("сначала простые") "Простым" считается правило, шаблон которого состоит из одного слова, без пробелов, подстановочных символов (звёздочек) и флага "RegEx", например: руки=ру<ки - простое правило Все остальные (из нескольких слов, со "звездочками" или рег выражениями) равны между собой и выполняются всегда в оригинальном порядке Если отключить оптимизацию, будет сохранен точный порядок обработки для всех правил. 3. Каждое из правил применяется к оригинальному неизменённому тексту или текст меняется динамически после обработки каждым из правил и каждое последующее правило работает с уже модифицированным текстом? Обрабатываемый текст меняется после каждого правила. При включенной оптимизации словарей для "простых правил" действует иной алгоритм: Исходный текст разбивается на отдельные слова, затем каждое слово ищется в списке "простых" правил и при совпадении заменяется на результат обработки соответствующего правила. Т.к. нужен всего один проход + сравнение идет по хешу, получаем огромный прирост производительности, но ломается общий порядок обработки...

MoppoH: вbobo4ka пишет: все просто создаем словарь "a" туда заносим все выражения которые должны замениться первыми, затем словарь "b" туда заносим что должно заменяться вторым и так далее, у меня именно так. Может есть какой нибудь другой вариант? или может Автор добавит функцию в каком порядке словарями обрабатывать текст.

bobo4ka: Спасибо. Теперь всё понятно.. Виной "непонятной" работы словарной обработки была оптимизация словерей.. Я то думал правила применяются в том порядке в котором записаны.



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