Новости Энциклопедия переводчика Блоги Авторский дневник Форум Работа

Декларация Поиск О нас пишут Награды Читальня Конкурсы Опросы








ГП-цитатник

Прописать правило сегментирования для слова с пробелом

Прописать правило сегментирования для слова с пробелом

Сообщение sparkster » Чт мар 25, 2021 15:15

Всем привет!
Я хочу прописать правило для слова et al. и мне нужно, чтобы после al. не было разделения на сегменты. Можно легко прописать правила для al. , но тогда предложения с таким окончанием тоже не будут сегментироваться. Поэтому надо прописывать для et al. целиком.
Аватара пользователя
sparkster

 
Сообщения: 93
Зарегистрирован: Чт фев 26, 2015 08:04





Re: Прописать правило сегментирования для слова с пробелом

Сообщение esperantisto » Чт мар 25, 2021 17:41

Так в чём сложность-то?

sparkster писал(а):… но тогда предложения с таким окончанием тоже не будут сегментироваться.


Не будут, если правильно прописать шаблон «после».
«И вообще погаными тряпками гнать этих переводчиков. Ишь чего удумали — переводить. Да ещё, чтоб удобно им было, хотят.» (на форуме разработчиков ПО)
esperantisto

 
Сообщения: 7035
Зарегистрирован: Ср фев 25, 2004 12:14
Откуда: Менск
Язык(-и): En→Ru/Be, De→Ru/Be

Re: Прописать правило сегментирования для слова с пробелом

Сообщение AsIs » Чт мар 25, 2021 18:10

Вот это выражение находит et al. как единое слово: \bet al\b\.
Можно убрать два элемента \b (они означают границу слова), но тогда сюда будут подходить и сочетания, если вдруг такие бывают, с этим et al., например: budget al.
Если предполагается, что между et и al. может оказаться больше одного пробела, то такое выражение: \bet[\s]?al\b\.
*Точки в конце каждого regex'a — это обязательный элемент выражения, а не знаки пунктуации.

Расшифровка:
\b — первая граница слова,
et — часть искомого слова,
\s — пробел,
? — предыдущий элемент встречается один или больше раз,
[\s] — квадратные скобки ограничивают действие знака ?, чтобы он распространялся только на пробел, но не на 'et с пробелом',
al — часть искомого слова,
\b — вторая граница слова,
\. — точка как самостоятельный знак (без \ она означает "любой знак").
AsIs

 
Сообщения: 1081
Зарегистрирован: Ср сен 22, 2010 16:13
Язык(-и): RU-EN-RU

Re: Прописать правило сегментирования для слова с пробелом

Сообщение esperantisto » Чт мар 25, 2021 18:17

А ещё прописать в шаблоне «после»:

Код: Выделить всё
[a-z]


чтобы уж точно исключить случаи, когда там будет следующее предложение.
«И вообще погаными тряпками гнать этих переводчиков. Ишь чего удумали — переводить. Да ещё, чтоб удобно им было, хотят.» (на форуме разработчиков ПО)
esperantisto

 
Сообщения: 7035
Зарегистрирован: Ср фев 25, 2004 12:14
Откуда: Менск
Язык(-и): En→Ru/Be, De→Ru/Be

Re: Прописать правило сегментирования для слова с пробелом

Сообщение AsIs » Чт мар 25, 2021 18:20

Я не пользуюсь OmegaT, но если верить вот этой инструкции, вам нужно согласно пункту 4 в поле "До" указать \bet[\s]?al\b\.
а в поле "После" указать \s
И галочку то ли снять, то ли поставить, не знаю. Попробуйте и так и сяк.
Последний раз редактировалось AsIs Чт мар 25, 2021 18:24, всего редактировалось 2 раз(а).
AsIs

 
Сообщения: 1081
Зарегистрирован: Ср сен 22, 2010 16:13
Язык(-и): RU-EN-RU

Re: Прописать правило сегментирования для слова с пробелом

Сообщение AsIs » Чт мар 25, 2021 18:21

esperantisto писал(а):А ещё прописать в шаблоне «после»:
Код: Выделить всё
[a-z]
чтобы уж точно исключить случаи, когда там будет следующее предложение.

А... Не успел увидеть это сообщение. Ну вот esperantisto, видимо, точнее подскажет.
AsIs

 
Сообщения: 1081
Зарегистрирован: Ср сен 22, 2010 16:13
Язык(-и): RU-EN-RU

Re: Прописать правило сегментирования для слова с пробелом

Сообщение esperantisto » Чт мар 25, 2021 19:06

Не могу не отметить весьма толковое пояснение AsIs, особенно с учётом того, что AsIs не является пользователем программы.
«И вообще погаными тряпками гнать этих переводчиков. Ишь чего удумали — переводить. Да ещё, чтоб удобно им было, хотят.» (на форуме разработчиков ПО)
esperantisto

 
Сообщения: 7035
Зарегистрирован: Ср фев 25, 2004 12:14
Откуда: Менск
Язык(-и): En→Ru/Be, De→Ru/Be

Re: Прописать правило сегментирования для слова с пробелом

Сообщение AsIs » Чт мар 25, 2021 20:37

Спасибо))
AsIs

 
Сообщения: 1081
Зарегистрирован: Ср сен 22, 2010 16:13
Язык(-и): RU-EN-RU

Re: Прописать правило сегментирования для слова с пробелом

Сообщение sparkster » Пт мар 26, 2021 09:22

Спасибо, что так быстро откликнулись! Я попробовал предложенные варианты правил, но к сожалению, не сработало.
Аватара пользователя
sparkster

 
Сообщения: 93
Зарегистрирован: Чт фев 26, 2015 08:04

Re: Прописать правило сегментирования для слова с пробелом

Сообщение AsIs » Пт мар 26, 2021 11:58

Вот так попробуйте:
Шаблон до: \set[\s]*al\.
Шаблон после: \s

*Не знаю, почему, но если заменить знак ? на *, то и это тоже работает:
\bet[\s]*al\b\.

**А... Я знаки перепутал. Не ?, а * должна быть.
AsIs

 
Сообщения: 1081
Зарегистрирован: Ср сен 22, 2010 16:13
Язык(-и): RU-EN-RU

Re: Прописать правило сегментирования для слова с пробелом

Сообщение AsIs » Пт мар 26, 2021 12:08

Но вообще-то странно: у меня сработало и \bet[\s]?al\b\.
Просто ? означает "0 или 1", а не "0 и больше".
То есть со знаком ? этот regex должен ловить, если между et и al. один пробел. И у меня с ? ловит. Но для чистоты эксперимента я одно предложение сделал с четырьмя пробелами. И его regex с ? не cловил. А вот со * словил.
Изображение
AsIs

 
Сообщения: 1081
Зарегистрирован: Ср сен 22, 2010 16:13
Язык(-и): RU-EN-RU

Re: Прописать правило сегментирования для слова с пробелом

Сообщение AsIs » Пт мар 26, 2021 12:43

Время для редактирования вышло, так что придется флудить еще третье сообщение...
В общем должно работать. Ничё не знаю)) Я с непривычки не сразу разобрался, куда исходный файл там запихать и как обновить (F5, если что). Может, и вы какие-то настройки недонастроили? Язык указывали? Оба выражения рабочие (\bet[\s]?al\b\. и \bet[\s]*al\b\.) — установил программу, лично убедился. С той лишь только разницей, что второе, которое со *, "видит" ваш et al. с более чем одним пробелом в середине.

Короче, чтобы закрепить то, в чем я запутался:
? = 0 или 1 (ловит etal. и et _ al.)
* = 0 и больше (ловит etal. и et _ al. и et _ _ _ _ al.)
+ = 1 и больше (ловит et _ al. и et _ _ _ _ al.)
Знаком _ показаны пробелы, ибо сайт не дает ставить несколько пробелов, превращая их в один.
Последний раз редактировалось AsIs Пт мар 26, 2021 12:59, всего редактировалось 3 раз(а).
AsIs

 
Сообщения: 1081
Зарегистрирован: Ср сен 22, 2010 16:13
Язык(-и): RU-EN-RU

Re: Прописать правило сегментирования для слова с пробелом

Сообщение esperantisto » Пт мар 26, 2021 12:55

Покажите:
а) свои правила;
б) пример файла.
«И вообще погаными тряпками гнать этих переводчиков. Ишь чего удумали — переводить. Да ещё, чтоб удобно им было, хотят.» (на форуме разработчиков ПО)
esperantisto

 
Сообщения: 7035
Зарегистрирован: Ср фев 25, 2004 12:14
Откуда: Менск
Язык(-и): En→Ru/Be, De→Ru/Be

Re: Прописать правило сегментирования для слова с пробелом

Сообщение sparkster » Сб мар 27, 2021 14:04

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

 
Сообщения: 93
Зарегистрирован: Чт фев 26, 2015 08:04

Re: Прописать правило сегментирования для слова с пробелом

Сообщение esperantisto » Сб мар 27, 2021 14:57

Всегда нужно учитывать, что правила применяются последовательно в порядке их записи. То есть, если сегмент разбит из-за предшествующего правила, снова склеить его не получится.
«И вообще погаными тряпками гнать этих переводчиков. Ишь чего удумали — переводить. Да ещё, чтоб удобно им было, хотят.» (на форуме разработчиков ПО)
esperantisto

 
Сообщения: 7035
Зарегистрирован: Ср фев 25, 2004 12:14
Откуда: Менск
Язык(-и): En→Ru/Be, De→Ru/Be

Re: Прописать правило сегментирования для слова с пробелом

Сообщение sparkster » Чт май 13, 2021 16:17

Пытался по аналогии написать правила для аббревиатур с несколькими точками и не могу понять причину, почему они не работают.

К примеру, Reg. no.

Правило такое: шаблон до Reg\.\sno. после \s

или

канд. тех. наук
Шаблон до канд\.\sтех\.наук после \s

Подскажите, в чем может быть проблема?
Аватара пользователя
sparkster

 
Сообщения: 93
Зарегистрирован: Чт фев 26, 2015 08:04

Re: Прописать правило сегментирования для слова с пробелом

Сообщение esperantisto » Чт май 13, 2021 21:15

Код: Выделить всё
Reg\.\sno.


Вторая точка не экранирована. Это во-первых. А во-вторых, сначала неплохо бы прописать, что не надо разделять Reg. и no., иначе между ними (скорее всего) будет разрыв и правило просто не будет работать.
«И вообще погаными тряпками гнать этих переводчиков. Ишь чего удумали — переводить. Да ещё, чтоб удобно им было, хотят.» (на форуме разработчиков ПО)
esperantisto

 
Сообщения: 7035
Зарегистрирован: Ср фев 25, 2004 12:14
Откуда: Менск
Язык(-и): En→Ru/Be, De→Ru/Be

Re: Прописать правило сегментирования для слова с пробелом

Сообщение sparkster » Пн май 17, 2021 06:52

esperantisto писал(а):
Код: Выделить всё
Reg\.\sno.


Вторая точка не экранирована. Это во-первых. А во-вторых, сначала неплохо бы прописать, что не надо разделять Reg. и no., иначе между ними (скорее всего) будет разрыв и правило просто не будет работать.


Спасибо за обратную связь! Вторую точку заэкранировал, но правило по-прежнему не работает. Как запретить разделение предложений? Какой для этого нужен тег?
Аватара пользователя
sparkster

 
Сообщения: 93
Зарегистрирован: Чт фев 26, 2015 08:04

Re: Прописать правило сегментирования для слова с пробелом

Сообщение esperantisto » Пн май 17, 2021 09:23

Ещё раз: сначала следует добавить правило, чтобы не разбивать Reg. и no., что-то типа:
перед:
Код: Выделить всё
Reg\.

после:
Код: Выделить всё
\s\no\.


А в чём смысл запрета разделения предложений? Ну, снимите галочку «Сегментирование по предложениям» в свойствах проекта.
«И вообще погаными тряпками гнать этих переводчиков. Ишь чего удумали — переводить. Да ещё, чтоб удобно им было, хотят.» (на форуме разработчиков ПО)
esperantisto

 
Сообщения: 7035
Зарегистрирован: Ср фев 25, 2004 12:14
Откуда: Менск
Язык(-и): En→Ru/Be, De→Ru/Be

Re: Прописать правило сегментирования для слова с пробелом

Сообщение sparkster » Пн май 17, 2021 10:46

esperantisto писал(а):Ещё раз: сначала следует добавить правило, чтобы не разбивать Reg. и no., что-то типа:
перед:
Код: Выделить всё
Reg\.

после:
Код: Выделить всё
\s\no\.

С таким правилом предложение все равно разбивается. Я попробовал вместо \s\no\. написать \sno\. - это тоже не сработало.

esperantisto писал(а): А в чём смысл запрета разделения предложений? Ну, снимите галочку «Сегментирование по предложениям» в свойствах проекта.

Возможно я не так выразился. Я как раз и имел в виду правило, которое будет препятствовать разбиению двух сокращений в слове Reg. no.
Аватара пользователя
sparkster

 
Сообщения: 93
Зарегистрирован: Чт фев 26, 2015 08:04

След.


Словари русского языка

www.gramota.ru
Словарь Мультитран
Язык

Вернуться в OmegaT

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3