Регулярные выражения
Иногда для работы с текстом удобно использовать шаблоны, или регулярные выражения. С помощью шаблонов можно, например, научиться извлекать из текста год рождения персонажа. Для передачи этой информации в тексте обычно используется шаблон «X родился в YEAR», где X – имя персонажа биографии. Мы уже умеем извлекать имена собственные, слово «родился» можно задать леммой с соответствующей грамматической информацией, а для задания даты нам потребуется написать регулярное выражение:
#encoding "utf-8"
ProperName -> Word<h-reg1, gram='имя'>
Word<h-reg1, gram='отч'>
Word<h-reg1, gram='фам'>;
S -> ProperName 'родиться'<gram='прош'> 'в'
AnyWord<wff=/[1-2]?[0-9]{1,3}г?\.?/> ('год' <gram='ед, дат'>);
Регулярное выражение, как правило, пишется в поле wff (подробно см. список помет) и его синтаксис почти полностью совпадает с синтаксисом регулярных выражений в Perl-е .
С помощью написанного правила из текста
(10) Иван Иванович Иванов родился в 1875 году в небольшом городке в поместье своего отца.
мы без труда узнаем подробности биографии Ивана Ивановича.
Исходные файлы проекта tutorial3
tutorial3/config.proto | Конфигурационный файл парсера |
tutorial3/mydic.gzt | Корневой словарь |
tutorial3/fioborn.cxx | Грамматика |
tutorial3/test.txt | Текст |
tutorial3/config.proto | Конфигурационный файл парсера |
tutorial3/mydic.gzt | Корневой словарь |
tutorial3/fioborn.cxx | Грамматика |
tutorial3/test.txt | Текст |
В конфигурационном файле указано, что анализируемый текст нужно читать из файла test.txt, поэтому проект запускается обычным способом.