Ограничения-поля

Какие бывают женщины? Чтобы ответить на этот непростой вопрос, нам необходимо добавить к нашим правилам немного морфологической информации, а именно, указать, что нас интересуют не все имена собственные, а только женские. В Томите для этого используются ограничения-поля. В отличие от ограничений-помет (h-reg1, fw, rt и т.д.), поля могут иметь разные значения, которые задаются как имя_поля = ‘значение’. В нашем случае нам нужно поле gram, которому приписано значение «женский род».

Немного измененная грамматика для извлечения информации о женщинах будет выглядеть так:

#encoding "utf-8"
ProperName ->  Word<h-reg1, gram='жен'>+; 
Person -> ProperName | 'женщина'; 
FormOfAddress -> 'товарищ' | 'мисс' | 'миссис' | 'госпожа';
AdjCoord -> Adj;
AdjCoord -> AdjCoord<gnc-agr[1]> ',' Adj<gnc-agr[1]>;
AdjCoord -> AdjCoord<gnc-agr[1]> 'и' Adj<gnc-agr[1]>; 
S -> Adj<gnc-agr[1]>+ (FormOfAddress) Person<gnc-agr[1], rt>; 
S -> AdjCoord<gnc-agr[1]> (FormOfAddress) Person<gnc-agr[1], rt>;

Такая грамматика сработает только на последнем из примеров (6)-(8).

В качестве значения поля gram может выступать любая граммема, приписанная данному слову в морфологическом словаре. Например, чтобы увеличить точность выделения имен собственных, можно указать, что они могут состоять из фамилии, имени и отчества, а не просто из слов, написанных подряд с большой буквы:

ProperName -> (Word<h-reg1, gram=”фам, жен”>)
              Word<h-reg1, gram=”имя, жен”>
              (Word<h-reg1, gram=”отч, жен”>);