Конкорданс на основе содержимого определенного абзацного стиля

  • Автор темы Автор темы gasyoun
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

gasyoun

Санскритятина
Топикстартер
15 лет на форуме
Сообщения
926
Реакции
30
Почитал ликбез. Начал пролистивать GREP in InDesign Oreilly.
Есть известный скрипт Concordances. Того же автора, что и GREP in InDesign.

Скрипт работает за считанные секунды (когда хочет что-либо выдать).
Вот искал "V P." - глаголы 5-го класса действительного
залога, за 3 секунды обработал книгу из 250 страниц.
  • 40 V P. – заключать, решать,
  • 42 V P. – мочь; быть
  • 43 V P. – мочь; быть
  • 51 V P. – скрывать, окутывать;
  • 53 V P. – скрывать, окутывать;
  • 58 V P. – покрывать, пересыпать,
  • 58 V P. – покрывать, наполнять,
  • 63 V P. – покрывать, пересыпать,
  • 64 V P. – покрывать, наполнять,
  • 77 V P.) – идти, двигаться
  • 80 V P. – открывать, раскрывать

Есть там и более интересные штуки, как-то:
  • claims?
  • claim\w*
Попробовал искать по s? (то есть без разницы что за последняя буква) или \w* (от 0 знаков и более), но после долгового зависания скрипт выдает или первую или вторую ошибку. То есть когда он не хочет - он не сразу говорит, что не хочет. Мне нужно скопировать в отдельный файл все абзацы определенного стиля в указанием на какой странице они найдены. При этом скрипт Питера первым выдает номер страницы, а потом уже что там нашел, а мне нужно сначала что нашел, а потом (под ним) список страниц, на которых он именно это нашел.
  • 15 ; || netra n – глаз;
  • 22 ; || netra n – глаз;
  • 60 ); || netra n – глаз;
  • 66 ); || netra n – глаз;
а мне бы
  • netra n – глаз;
    15, 22, 60, 66
При этом начало (слово до первого пробела) может совпадать, а после могут снова пойти разночтения, разные переводы, соответсвенно нужно отметить и объединить именно те страницы, на которых встречается именно указанный перевод.
  • netra n – глаз;
    15, 22, 60, 66
  • netra n – глазик; глазунья
    115, 122, 160, 166
Как найти пустоту? То есть не определенное слово, а все слова определенного класа, используя указанный скрипт? Задал название класса в настройках (внутри самого скрипта) - не помогло.
 

Вложения

  • concordance.jpg
    concordance.jpg
    50.2 КБ · Просм.: 643
  • nedostatocno.jpg
    nedostatocno.jpg
    47.6 КБ · Просм.: 1 030
Покопавшись в самом скрипте попытался сделать желаемое.
1 заменил формирование строки
//array[n] =pagenum + ' ' + s ;
на array[n] =s + ' ' + pagenum;
и соответственно функцию
return a.match (/^\d+/)[0] - b.match (/^\d+/)[0]
на return a.match ( /\w*\s(\d{1,}$)/) - b.match ( /\w*\s(\d{1,}$)/)
Знаю что не правильно задал, помогите исправить.
Это просто пытался поменять текст и числа местами.
 
Переформулировал вопрос и на английском, но молчание.
Готов отблагодарить за оказанное содействие, спасибо.
 
InDesign русско-локализованный? Странности в работе скриптов — гарантированы.
 
  • Спасибо
Реакции: George
Странности в работе скриптов — гарантированы
Понял, попробую обратно английский поставить. Просто он падал и поставил этот
кириллический ужас. Русским его не назвать. Но это не отменяет основной проблемы :)
 
Есть возможность выложить рабочие файлы или они сильно секретные?
 
Ловите, вырезал кусок, чтобы не загрузить тотально и сразу.

Интересный исторический образец, не достижимый автомату, но возможный руками Monier-Sakuntala-1876-335.jpg
osnova-konkordansa1.rar и osnova-konkordansa2.rar - это то, от чего пляшем, на основе чего генерируем конорданс.
Там же указаны шрифты в конце.
rezultat-konkordansa.pdf и rezultat-konkordansa3.rar - то, к чему пришли. И то, к чему нужно было бы придти, 2 варианта.
 

Вложения

Посмотрел одним глазом в исходники. Большой плюс — стили используются нормально, работать с ними можно. Минус — скорее всего придется писать свой скрипт для конкорданса, ибо по трудозатратам исправление готового скрипта примерно столько же займет. И, главное, с логикой определиться.
 
писать свой скрипт для конкорданса
Я-то всегда за переделку чужого кода, но раз говорите. Главное, чтобы из 3500 слов разбросанных по 250 страницам не пришлось 700 корней выбирать руками. Да и не пойму я как выбрать все слова определенного стиля. Все, что определенного стиля - забирать. Хоть для этого-то скрипт мог бы пригодится, но даже этого не получается сделать.
 
По каким признакам можно определяются эти пресловутые корни?
 
Перед каждым корнем есть псевдо-корневой знак, в тяжелых случаях он внутри корня, если перед ним приставка, то может быть приставка-тире-знак корня-корень ("птичая лапка") пробел а дальше уже перевод. Не на месте математического корня. Скрипт Карела копипастом их кушает.
 
Понял, попробую обратно английский поставить. Просто он падал и поставил этот
кириллический ужас. Русским его не назвать. Но это не отменяет основной проблемы :)

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

Вложения

  • Спасибо
Реакции: gasyoun
черновик скрипта выбирающего все слова определенного чарактер стайл
Бываюте же такие же люди, делающие что-то из коммунстических соображений, спасибо Вам, честь и хвала.

добавляет номера страниц
Действительно добавляет. Вопрос.
  • Нельзя ли объедениять полностью идентичные записи. Сейчас получил:
    • svarūpa 2
    • svarūpa 9
    • svabhāva11
    • svabhāva19
    • svabhāva29
    • svabhāva40
    • sthiti32
    • sthiti75
    • sthiti85
  • Было бы здорово увидеть (то есть объединять идентичных):
    • svarūpa 2, 9
    • svabhāva11, 19, 29, 40
    • sthiti32, 75, 85
Иначе в 2 столбиках потребуется 53 страниц, чтобы уместить указатель, не экономно :)
Вопрос. Список из 241 цифры в начале файла:
Код:
    1
    1
    108
    109
    109
    109
    109
    109
    16
    2
    2
    2
Откуда мог взяться? Не вопрос убить руками, понять бы кого убиваю.
Оказались вначале списка
Код:
-mātra    67
-nandin    99
-sāgara    95
-tas    85
-tas    85
-upama    65
-çālin    98

Можно ли, пожалуйста, не учитывать тире в начале слова и распологать согласно их месту?

Дальше сложнее - сортировка нужна используя правила языка санскрита, там мало общего с стандартной латиницей. Есть ли какие-то встроенные фичи для сортировки языков типа хинди - пока для меня темный лес. Хинди это грубо говоря те же правила, что и санскрит, с отдельными поправками, которые, увы, не всегда подлежат кодификации. Использовал osnova-konkordansa1.rar А так, конечно, смотрю на шустрость скрипта и радуюсь уже готовым блокам:

Код:
mūrdhan    46
mūrkha    6
mūḍha    25
mṛdu    64
 

Вложения

  • raspiraet-frame.jpg
    raspiraet-frame.jpg
    22.3 КБ · Просм.: 583
поройтесь в файловом архиве.

евгениус для меня делал скрипт, объединяющий подобные записи.
должен там лежать.
 
угу. про это.

Женя по моей просьбе сделал. Что сильно на некоторых моих задачах облегчило жизнь.
 
облегчило жизнь.
Видимо дело в том, что у меня нет разделителя, про который пишет Евгений.
Код:
abala    98
abhi- ⎷i    105
abhibhāṣin    101
abhicāra    74
abhidhāyaka    74
abhigam    55
abhihita    10
abhikāṅkṣ    88
abhimāna    73
abhiprāya    79
abhiprāya    88
abhisaṃbuddha    42
abhitas    53
abhitas    88
abhitāpa    100
abhiçakya    74
abhi–ā– ⎷i    34
abhra    36
abhyadhika    39
abhyarthanā    92
abhyasana    31
abhyāgata    65
abhyāsa    104
abhyāsa    20
abhāva    10
abhīkṣaṇam    61
abhīvṛta    47
abhūti    18
acala    32
acetas    29
acyuta    20
adakṣiṇa    30
adbhuta    37
adhas    28
adhastāt    12
adhi- ⎷i    14
adhi-sthā    47
adhidaivata    60
adhipa    5
adhivāsa    65
adhiṣṭhita    73
adhiṣṭhāna    34
adhiṣṭhātar    65
adhvan    42
adhvan    96
adhyakṣa    73
adhyās II    109
adhyātma    61
adri    35
adroha    97
advaya    21
adya-prabhṛti    71
aghnyā    52
agnihotra    78
agra    44
agraja    3
agratas    44
agrāhya    75
agrū    54
ahaṃ    29
ahaṃkṛti    21
ahi    48
ahiṅsā    30
aho    84
aho bata    84
ahī    48
aikamatya    109
aiçvarya    4
aja    44
ajasram    65
ajā    12
ajāni    54
akasmāt    107
akīrti    9

Поэтому и не запускается скрипт в InD 6.0.
 

Вложения

  • js-oshibka.jpg
    js-oshibka.jpg
    93.5 КБ · Просм.: 947
Бываюте же такие же люди, делающие что-то из коммунстических соображений, спасибо Вам, честь и хвала.
Рожденный в СССР. Многое сам почерпнул с этого форума(правда нет возможности часто писать). Хочешь сказать спасибо, нажми плюс. Здесь так принято.)))

Нельзя ли объедениять полностью идентичные записи.
Можно и нужно. Это только черновик. В дальнейших планах это есть. Только работа скрипта станет медленней особенно на большем объеме.

Было бы здорово увидеть (то есть объединять идентичных):
Быстро не получится так как в работе большая книга. Времени свободного сейчас маловато. Ближе к концу месяца.

Вопрос. Список из 241 цифры в начале файла. Откуда мог взяться? Не вопрос убить руками, понять бы кого убиваю.
Надо смотреть полный оригинал тогда смогу сказать. Скорее всего или там пустые пробелы или нужным тебе стилем выделены эти цифры.

Оказались вначале списка
-mātra 67
-nandin 99
-sāgara 95
-tas 85
-tas 85
-upama 65
-çālin 98
Все правильно JavaScript сортирует в лексографическом порядке.

Можно ли, пожалуйста, не учитывать тире в начале слова и распологать согласно их месту?
Самый простой вариант на данный момент найти это слово на странице и снять с «-» выделение стилем.

Дальше сложнее - сортировка нужна используя правила языка санскрита, там мало общего с стандартной латиницей. Есть ли какие-то встроенные фичи для сортировки языков типа хинди - пока для меня темный лес. Хинди это грубо говоря те же правила, что и санскрит, с отдельными поправками, которые, увы, не всегда подлежат кодификации. Использовал osnova-konkordansa1.rar А так, конечно, смотрю на шустрость скрипта и радуюсь уже готовым блокам:

mūrdhan 46
mūrkha 6
mūḍha 25
mṛdu 64
Вот тут сильно не скажу. Только одно, сортировка реализованная в данном скрипте сортирует слова по положению символа в таблице символов.
Поэтому могу только предполагать что все должно быть в порядке. А что мешает, залить кусок текста выделить несколько слов и дать на проверку)))
 
Поэтому и не запускается скрипт в InD 6.0.
ну не поэтому.

1. заменить 4 пробела на табуляцию
2. скрипт Евгения (его спросите) небось под ЦС3
тогда - создать папку Version 5.0
и туда его положить.


и должен работать.
 
Спасибо за все. В топик клацнул. После бана на форуме руведи в 2007 г. я и отвык от того, что могут помогать и при этом не журить.

медленней особенно на большем объеме.
Если текст в на 250-1000 страниц за 2-3 недели обработает - я не против. Можно запустить на ноуте и пусть пашет, лишь бы не падал.

нужным тебе стилем выделены эти цифры.
Нет, столько цифр и таких не выделены. Выделены, но другие, римские. Не арабские :)

в данном скрипте сортирует слова по положению символа в таблице символов.
Тогда плохо. Значит будет нужен скрипт альфавизатор. Если-таки не положено сортировать индийское письмо встроенными фичами.

В приложении первый набросок работы скрипта Mikhail Ivanyushin.
Пока вместо страниц он выдал дубли заголовочных слов, что странно.
Код:
*abhibhū — *abhibhū
*abhidhā — *abhidhā, *abhidhā, *abhidhā
*abhidru — *abhidru, *abhidru, *abhidru
*abhigam — *abhigam
*abhigā — *abhigā
*abhihary — *abhihary
 

Вложения

  • concordance-01.jpg
    concordance-01.jpg
    65.7 КБ · Просм.: 867
  • concordance-02.jpg
    concordance-02.jpg
    87.2 КБ · Просм.: 792
Статус
Закрыто для дальнейших ответов.