Достоверность правил и разрешение конфликтов

Если несколько правил находят пересекающиеся результаты, XPDL разрешает конфликты в соответствии со следующими правилами:

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

Пример

На Изображении 1 первое правило находит слова «министерство», а второе - названия министерств, состоящие из слова «министерство», за которым следует существительное в родительном падеже (например, «министерство промышленности»).

xpdl conflict submatch rule rus NEW
Изображение 1. Пример правил, извлекающих названия министерств

В тексте

xpdl conflict submatch input rus

первое правило находит результат «министерство», а второе правило - результат «Министерство финансов». Результат «министерство» отбрасывается, потому что полностью входит в более длинный результат «Министерство финансов». Правила возвращают только результат «Министерство финансов».

2) Если несколько правил извлекают частично пересекающиеся результаты, сохраняются оба результата.

Пример

На Изображении 3 приведены правила для поиска имен людей по контексту. Правило «профессии» находит два слова с большой буквы, после которых следует название профессии из класса слов «professions» (например, «Владислав Антонов, аналитик»). Правило «цитаты» находит два слова с большой буквы после выражения «по словам» (например, «по словам Владислава Антонова»).

xpdl conflict partlyoverlap rule rus NEW
Изображение 2. Правила для поиска имен людей

В тексте:

xpdl conflict partlyoverlap input rus

первое правило находит результат «Владислава Антонова, аналитика», который частично пересекается с найденным вторым правилом результатом «по словам Владислава Антонова». Правила возвращают оба результата.

3) Если несколько правил извлекают одну и ту же фразу, правило с наибольшим значением достоверности (confidence) является предпочтительным. Раздел confidence не является обязательным.

Синтаксис

confidence: <значение_достоверности>

где <значение_достоверности> - любое число в диапазоне от 0 (самая низкая достоверность) до 1 (самая высокая достоверность).

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

Значение достоверности НЕ рассчитывается статистически. Оно устанавливается автором правила вручную и отражает субъективную оценку способности правила извлекать корректные результаты.

Если несколько правил имеют одинаковое значение достоверности, программа выбирает правило, которое выводит больше атрибутов. Если количество атрибутов одинаково — правило, объявленное первым.

Пример

На Изображении 5 приведены правила для поиска авиарейсов. Правило «рейсы» находит слово рейс, за которым следуют два географических названия (например, «рейс Москва-Прага»). Правило также выводит атрибуты «Пункт отправления» и «Пункт назначения» в отдельные колонки. Правило «рейсы_копия» является копией правила «рейсы», но не заполняет атрибуты.

xpdl conflict diffconf rule rus NEW
Изображение 3. Правила для поиска авиарейсов

В тексте

xpdl conflict diffconf input rus

оба правила извлекают фразу «рейсом Минск - Прага». Однако результат правила «рейсы_копия» является приоритетным из-за более высокой достоверности правила (0.9), поэтому колонки «Пункт отправления» и «Пункт назначения» остаются пустыми.

Если бы достоверность правила «рейсы» была выше или равна достоверности правила «рейсы_копия», то колонки «Пункт отправления» и «Пункт назначения» были бы заполнены.

4) Если правила извлекают совпадающие результаты под разными именами, сохраняются оба результата.

Пример

Правила для поиска авиарейсов на Изображении 8 почти идентичны правилам на Изображении 5, но теперь у правил совпадает значение достоверности, а результаты выводятся в колонки «Результат» и «Результат1».

xpdl conflict diffnames rule rus NEW
Изображение 4. Правила для поиска авиарейсов

В тексте

xpdl conflict diffconf input rus

оба правила находят один и тот же результат «рейсом Минск - Прага». Но так как у результатов разные имена, они оба сохраняются.