Как построить правила Jape в воротах

Мне нужно создать правило, в котором Lhs проверяет, начинается ли первый символ слова с b, а затем проверяет все слово без первого символа, найденного при поиске.


person user3672011    schedule 19.01.2015    source источник
comment
Добро пожаловать на Stack Overflow, этот веб-сайт предназначен для энтузиастов и программистов, и мы будем рады помочь всем, кто застрял в программировании. Но для того, чтобы обратиться за помощью сюда, вам нужно продемонстрировать некоторый прогресс, которого вы добились в решении проблемы. С нуля вам никто не поможет.   -  person RicoRicochet    schedule 19.01.2015


Ответы (1)


Это пример кода для чего-то похожего на то, что вы хотите (скопировано из https://gate.ac.uk/wiki/jape-repository/strings.html#section-1.). Вы можете прочитать немного больше и получить точное решение:

Rule:GetMobile
(
 {Phone}
):tag
-->
:tag{

// get the offsets
 Long phoneStart = tagAnnots.firstNode().getOffset();
 Long phoneEnd = tagAnnots.lastNode().getOffset();

// check the number is longer than or equal to 2 characters (just in case)
 if(phoneEnd - phoneStart >= 2) {
   try {
     String firstTwoChars = doc.getContent()
         .getContent(tagAnnots.firstNode().getOffset(),
                     tagAnnots.firstNode().getOffset() + 2).toString();

// check it matches 07
     if("07".equals(firstTwoChars)) {
       // create the new annotation

    gate.FeatureMap features = Factory.newFeatureMap();
    features.put("kind", "mobile");
    outputAS.add(tagAS.firstNode(),
                           tagAS.lastNode(), "Phone", features);
     }
   }
   catch(InvalidOffsetException e) {
     // not possible
     throw new LuckyException("Invalid offset from annotation");
   }
 }
}

Вот некоторые места, где вы можете прочитать:

https://gate.ac.uk/wiki/jape-repository/

https://gate.ac.uk/sale/talks/gate-course-jun14/module-1-jape/module-1-jape.pdf

person pnv    schedule 17.02.2015