Неочевидные решения часто возникающих задач

Исключить неправильные частотные срабатывания

Часто возникает такая задача: есть грамматика, выделяющая, например, даты. Нужно убрать очевидные частые исключения, например «улица 8 марта».

Можно перечислить такие названия в газеттире, включив их в качестве

ключей к статье с название «плохие_даты».

Some_type "плохие_даты"
{ 
    key = "улица 8 !марта"
}

А в грамматике дат в директиве #GRAMMAR_KWSET

упомянуть эту статью.

#GRAMMAR_KWSET [“плохие_даты”]

В этом случае парсер перед запуском грамматики на тексте «дом на улице 8 марта» превратит подцепочку «улице 8 марта» в один мультиворд и отдельно слова «8» и «марта» он уже не увидит.

Ту же задачу можно решить общее, если не перечислять жестким списком все плохие упоминания дат в именах собственных, а описать их в грамматике. Тогда в ключе статьи «плохие_даты» будет уже ссылка на грамматику.

Some_type "плохие_даты"
{ 
    key = { "tomita:bad_dates.cxx" type=CUSTOM }
}

Описать только изменяемые существительные

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

Noun<GU=~[nom,acc,dat,instr,loc,gen]>

Описать классы слов с регулярным словообразованием

Иногда не хочется в словаре перечислять слова, которые образуются стандартным способом. Например «по-испански», «по-французски». Такие случаи легко описать с помощью регулярок.

S -> Word<wfm=/по-.*[цс]ки>;