Я знаю, что это не способ JSF, но если вы хотите избежать боли в ИД, вы можете установить специальный класс CSS для селектора. Просто убедитесь, что используете хорошее имя, чтобы, когда кто-то читает имя класса, ясно, что он использовался для этой цели.
<h:inputText id="emailAddresses" class="emailAddressesForSelector"...
В вашем JavaScript:
jQuery('.emailAddressesForSelector');
Конечно, вам все равно придется вручную управлять уникальностью имени класса. Я считаю, что это поддерживается, если вы не используете это в компонентах многократного использования. В этом случае вы можете сгенерировать имена классов с помощью соглашения.
Различные стратегии могут быть использованы для создания пакетов и триплетов или пар. Обычно партии создаются случайным образом, а затем выбирается самый тяжелый негатив или один из самых тяжелых негативов в партии.
Так что да, положительные и отрицательные примеры должны быть включены в пакет. И очень важно выбрать негативы. Но обычно прилагаются усилия, чтобы выбрать правильные негативы внутри партии, а не создавать партии определенным образом. Этот пост, объясняющий, как работает ранжирование потерь, может оказаться полезным https://gombru.github.io/2019/04/03/ranking_loss/