Синтаксис XPDL

XPDL состоит из правил, которые описывают языковые паттерны и позволяют извлекать их элементы. Правила XPDL могут быть написаны в любом текстовом редакторе, но рекомендуется использовать редактор правил PolyAnalyst, в котором есть подсветка, проверка синтаксиса, навигация и другие дополнительные возможности. В этом разделе описывается структура XPDL-правила, объясняется значение его элементов и приводится несколько примеров.

Пример

Первый пример — это простое правило, с помощью которого можно извлечь названия улиц.

xpdl syntax streets dia2.rus
Изображение 1. Правило, извлекающее названия улиц

Правило начинается с ключевого слова rule: , за которым следует название правила. Правило на Изображении 1 называется «find_streets». Названия правил должны состоять из буквенно-цифровых символов или символов подчеркивания (не допускаются специальные символы и знаки препинания, такие как % или @, точки, запятые, скобки и т.д.). Название правила может быть произвольным, однако рекомендуется использовать значимые, понятные названия для удобства поиска и навигации.

Правила могут быть последовательными, вложенными или сочетать эти виды (подробное описание иерархии правил см. в следующих разделах).

Тело правила заключено в фигурные скобки. Оно состоит из запроса и результата.

Раздел query является основным элементом правила и описывает паттерн, который нужно найти. Раздел начинается с ключевого слова query: , за ним следует поисковый запрос, написанный на языке PDL.

Примечания

  1. Все функции PDL, кроме поиска по нескольким столбцам, поддерживаются в XPDL;

  2. Этот документ не содержит описания языка PDL. Если Вы не знакомы с синтаксисом и функциями PDL, обратитесь к разделу «Введение в PDL».

Как показано на Изображении 1, запрос формирует именованную группу. Чтобы объявить именованную группу, запрос должен быть заключен в фигурные скобки, за которыми следует двоеточие и метка, заданная пользователем (имя). Именованная группа сохраняет найденный текст под названием, указанным в ее имени. К выражению, которому соответствует именованная группа, позже можно обратиться через обратную ссылку $метка. Именованные группы в XPDL похожи на захватывающие группы в регулярных выражениях.

Текст, сохраненный в именованной группе, может быть выведен как результат правила. В примере весь запрос хранится в именованной группе «str», поэтому все, что соответствует запросу, выводится в результат (например, «ул. Комсомольская», «улица Смольная»). Однако любой элемент запроса может быть сохранен как именованная группа. Для вывода только названий улиц (например, «Комсомольская», «Смольная») запрос должен выглядеть следующим образом:

xpdl syntax streets query2.rus

Подробнее об иерархии правил см. раздел «Иерархическая организация правил».

Раздел «result» следует за разделом «query» и описывает вывод результата правила. Этот раздел определяет, какие части найденного паттерна должны быть включены в результат и под какими названиями. Раздел начинается с ключевого слова result: , за которым следуют пользовательское название результата, знак равенства и ссылка на именованную группу. Так, пример ниже выводит текст, соответствующий запросу под названием «Улица». Имя результата, указанное после result:, используется в отчете узла в качестве имени колонки, содержащей результаты.

Результат работы правила в отчете узла «Извлечение сущностей» показан на Изображении 2:

xpdl syntax streets output.rus
Изображение 2. Отчет узла

Раздел «result» является необязательным и может отсутствовать, если правило находится вверху в иерархии правил. Результат может иметь опциональные атрибуты — его части или свойства. Атрибуты перечисляются после результата, для этого используется тот же синтаксис, но перед ними должно стоять ключевое слово attribute:. Названия результатов и атрибутов могут состоять из нескольких слов (например, «Название улицы», «Почтовый индекс»).

Правило на Изображении 3 ищет даты в формате «5 ноября 2017 года». Когда совпадение найдено, раздел «результат» выводит его под названием «Дата», а элементы вхождения также выводятся в качестве атрибутов под соответствующими названиями — «День», «Месяц» и «Год».

xpdl syntax dates.rus
Изображение 3. Пример правила, извлекающего даты

Результат работы правила в отчете узла «Извлечение сущностей» показан на Изображении 4. Каждый атрибут выводится в отдельную колонку.

xpdl syntax dates output.rus
Изображение 4. Отчет узла

В XPDL поддерживаются как однострочные, так и многострочные комментарии. Чтобы написать однострочный комментарий, в начале строки нужно поставить двойной слеш //. Все символы в одной строке справа от // игнорируются. Если комментарий ограничен символами /* и */, он может быть как однострочным, так и многострочным. Как показано на Изображении 5, комментарии могут быть вставлены до, после или в середине правила — в любом месте, где можно вставить пробел.

xpdl syntax comments.rus
Изображение 5. Пример синтаксиса комментария

XPDL-правило может также содержать опциональный раздел «достоверность»: она начинается с ключевого слова confidence:, за которым следует значение вероятности — число в диапазоне [0; 1]. Этот раздел должен быть расположен после раздела «запрос» и перед разделом «результат».

xpdl syntax confidence.rus
Изображение 6. Расположение раздела confidence

Если значение достоверности не указано, применяются настройки по умолчанию. Значение достоверности по умолчанию равно 1 для правил верхнего уровня, дочерние правила наследуют это значение от своего родительского правила. Значение достоверности не рассчитывается статистически, а отражает мнение разработчика правила о способности последнего извлекать релевантные результаты и указывает, будет ли это правило иметь приоритет над другими, если у них совпадают искомые паттерны.

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

xpdl syntax confidence sort.rus
Изображение 7. Колонка сonfidence в отчете узла Извлечения сущностей