Пока я просматриваю учебные ресурсы JAPE (GATE), я наткнулся на нижеследующее правило JAPE, которое исключает (выделенный жирным шрифтом) текст из аннотации.
Правило JAPE: ({!Lookup.minorType == страна})
Текст: Университет Шеффилда, США.
Каков именно смысл приведенного выше утверждения? Моя короткая интерпретация: minorType не должен совпадать с типом страны. Но если это правда, почему приведенные ниже утверждения не работают так же, как и выше?
({Lookup.minorType != страна})
({Lookup.minorType == !country})
Будем признательны за любые полезные ссылки для подробного понимания синтаксиса правил LHS и RHS.
@dedek похоже, что теоретически между всеми тремя сценариями, упомянутыми в вопросе, нет большой разницы. Я нашел объяснение, почему они практически не совпадают, и добавил его в качестве ответа.
Наконец, нашел объяснение сам по ссылке ниже.
https://gate.ac.uk/userguide/sec:jape:negation
Rule: SurnameNotStartingWithDe
(
{Surname, !Token.string ==~ "[Dd]e"}
):name
-->
:name.NotDe = {}
Это будет соответствовать любой аннотации фамилии, которая не начинается в том же месте, что и токен со строкой «de» или «De». Обратите внимание, что это немного отличается от {Surname, Token.string !=~ "[Dd]e"}
, так как вторая форма требует присутствия аннотации Token, тогда как первая форма (!Token...) будет соответствовать, если в этом месте вообще нет аннотации Token.
Согласно примеру в вопросе, Университет Шеффилда должен быть аннотацией поиска (которой на самом деле нет), чтобы он работал во всех трех разных сценариях.
Большой! Идеальный ответ! Последний недостающий бит IMO — это ({Lookup.minorType == !country})
. Что здесь означает !country
? Это какое-то логическое выражение? Или это даже синтаксически правильно?
Это три совершенно разных оператора с разным смыслом и семантикой. Это хороший вопрос, может быть, я найду время для ответа позже...