Неочевидные решения часто возникающих задач
Исключить неправильные частотные срабатывания
Часто возникает такая задача: есть грамматика, выделяющая, например, даты. Нужно убрать очевидные частые исключения, например «улица 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=/по-.*[цс]ки>;