Можем ли мы группировать аннотации в GATE

Как мы можем сгруппировать все аннотации между двумя аннотациями?

Я новичок в GATE и пытаюсь сгруппировать аннотации. Не уверен, сможем ли мы это сделать. Пожалуйста, помогите. Например, в следующем тексте:

Page-1
Age:53 
Person: Nathan

Page-2
Treatment : Initial Evaluation
History: Yes

Page-3
..........

Если мой список Gazetteer состоит из разных тегов, тега страницы для каждого номера страницы, возраста, человека, лечения, истории и т. д., я хочу сгруппировать все теги со страницы-1 до страницы-2 в аннотации страницы-1 и все теги между страницей- 2 и стр.-3 под стр.-2.

Пожалуйста, дайте мне знать, если требуется дополнительная информация по этому вопросу.

Заранее спасибо.


person Sanjeev    schedule 06.01.2014    source источник


Ответы (1)


Я не совсем уверен, что вы подразумеваете под «группировкой», но вы, безусловно, можете создавать аннотации, охватывающие содержимое каждой «страницы». Предполагая, что у вас есть аннотация PageNumber на каждой "Странице-1", "Странице-2" и т. д., вы можете использовать что-то подобное для создания аннотаций, охватывающих одну PageNumber на другую. Я использую control = once JAPE для этого, вы можете использовать сценарий Groovy или собственный PR

Imports: { import static gate.Utils.*; }
Phase: PageSpans
Input: PageNumber
Options: control = once

Rule: PageSpan
({PageNumber})
-->
{
  try {
    List<Annotation> numbers = inDocumentOrder(inputAS.get("PageNumber"));
    for(int i = 0; i < numbers.size(); i++) {
      outputAS.add(start(numbers.get(i)), // from start of this PageNumber, to...
                   (i+1 < numbers.size()
                     ? start(numbers.get(i+1)) // start of the next number, or...
                     : end(doc) // ...if no more PageNumbers then end of document
                   ),
                   "Page",
                   // store the text under the PageNumber as a feature of Page
                   featureMap("id", stringFor(doc, numbers.get(i))));
    }
  } catch(InvalidOffsetException e) {
    throw new JapeException("Invalid offset from existing annotation", e);
  }
}

В своем комментарии вы спрашиваете о перемещении всех аннотаций под каждой «страницей» в отдельный набор аннотаций. Это будет относительно просто, как только вы сделаете все вышеперечисленное, и если у вас есть номер страницы в качестве функции в ваших аннотациях Page, как я сделал с функцией «id». Затем вы можете определить другой JAPE, который делает что-то вроде этого:

Imports: { import static gate.Utils.*; }
Phase: SetPerPage
Input: Age X Y // and whatever other annotation types you want to copy
Options: control = all

Rule: MoveToPageSet
({Age}|{X}|{Y}):entity
-->
:entity {
  try {
    for(Annotation e : entityAnnots) {
      // find the (only) Page annotation that covers this entity
      Annotation thePage = getOnlyAnn(getCoveringAnnotations(inputAS, e, "Page"));
      // get the corresponding annotation set
      AnnotationSet pageSet = doc.getAnnotations(
              (String)thePage.getFeatures().get("id"));
      // and copy the annotation into it
      pageSet.add(start(e), end(e), e.getType(), e.getFeatures());
    }
  } catch(InvalidOffsetException e) {
    throw new JapeException("Invalid offset from existing annotation", e);
  }
  // optionally remove from input set
  // inputAS.removeAll(entityAnnots);
}
person Ian Roberts    schedule 06.01.2014
comment
Спасибо, Ян, ты всегда здорово помогаешь. Позвольте мне дать вам более подробную информацию о том, что я пытаюсь сделать. Я использую следующий текст 'PAGE-1 Имя и возраст, специальность врача/провайдера, оказывающего услугу Номер ИНН врача/провайдера, оказывающего услугу. СТРАНИЦА-2 РЕНТГЕНОВСКОЕ ОБСЛЕДОВАНИЕ ВРАЧА ШЕИ РЕНТГЕНОВСКОЕ ОБСЛЕДОВАНИЕ ГОЛЕНИ РЕНТГЕНОВСКОЕ ОБСЛЕДОВАНИЕ ПАЛЬЦА(-ЕЙ) ПОСЕЩЕНИЕ ОТДЕЛЕНИЯ СКОРОЙ ПОМОЩИ СТРАНИЦА-3 СЧЕТ ПО ЗАПРОСУ Возраст СТРАНИЦА-4 ----- Я хочу создать отдельные наборы аннотаций с именами PAGE-1, PAGE-2 и т. д. и включать все аннотации внутри каждого набора. Например, возраст должен быть в наборе аннотаций Страница-1 и Страница-3. - person Sanjeev; 06.01.2014
comment
@user2752734 user2752734 Я предполагаю, что у вас уже есть способ создавать интересующие вас аннотации (похоже, это должна быть простая комбинация географических справочников и основных правил JAPE, которые вы найдете в учебных материалах на gate.ac.uk/wiki), но я добавил пример того, как вы можете переместить их в наборы аннотаций с динамическими именами на странице. - person Ian Roberts; 06.01.2014