|
AnnotationSetTransfer |
|
1 /* 2 * AnnotationSetTransfer.java 3 * 4 * Copyright (c) 1998-2001, The University of Sheffield. 5 * 6 * This file is part of GATE (see http://gate.ac.uk/), and is free 7 * software, licenced under the GNU Library General Public License, 8 * Version 2, June 1991 (in the distribution as file licence.html, 9 * and also available at http://gate.ac.uk/gate/licence.html). 10 * 11 * Kalina Bontcheva, 6/8/2001 12 * 13 * $Id: AnnotationSetTransfer.java,v 1.8 2001/11/08 17:23:30 cursu Exp $ 14 */ 15 16 package gate.creole.annotransfer; 17 18 import java.util.*; 19 import gate.*; 20 import gate.creole.*; 21 import gate.util.*; 22 import gate.corpora.*; 23 24 /** 25 * This class is the implementation of the resource ACEPROCESSOR. 26 */ 27 public class AnnotationSetTransfer extends AbstractLanguageAnalyser 28 implements ProcessingResource { 29 30 protected String tagASName = GateConstants.ORIGINAL_MARKUPS_ANNOT_SET_NAME; 31 protected String outputASName = "Filtered"; 32 protected String inputASName = null; 33 protected String textTagName = "BODY"; 34 protected gate.AnnotationSet bodyAnnotations = null; 35 36 /** Initialise this resource, and return it. */ 37 public Resource init() throws ResourceInstantiationException 38 { 39 return super.init(); 40 } // init() 41 42 /** 43 * Reinitialises the processing resource. After calling this method the 44 * resource should be in the state it is after calling init. 45 * If the resource depends on external resources (such as rules files) then 46 * the resource will re-read those resources. If the data used to create 47 * the resource has changed since the resource has been created then the 48 * resource will change too after calling reInit(). 49 */ 50 public void reInit() throws ResourceInstantiationException 51 { 52 init(); 53 } // reInit() 54 55 /** Run the resource. */ 56 public void execute() throws ExecutionException { 57 58 if(document == null) 59 throw new GateRuntimeException("No document to process!"); 60 61 if(inputASName != null && inputASName.equals("")) 62 inputASName = null; 63 if(outputASName != null && outputASName.equals("")) 64 outputASName = null; 65 66 //get the input annotation set and the output one 67 AnnotationSet inputAS = (inputASName == null) ? 68 document.getAnnotations() : 69 document.getAnnotations(inputASName); 70 AnnotationSet outputAS = (outputASName == null) ? 71 document.getAnnotations() : 72 document.getAnnotations(outputASName); 73 AnnotationSet tagAS = (tagASName == null) ? 74 document.getAnnotations() : 75 document.getAnnotations(tagASName); 76 77 //check if we have a BODY annotation 78 //if not, just copy all 79 if (textTagName == null || textTagName.equals("")) { 80 outputAS.addAll(inputAS); 81 return; 82 } 83 84 //get the BODY annotation 85 bodyAnnotations = tagAS.get(textTagName); 86 if (bodyAnnotations == null || bodyAnnotations.isEmpty()) { 87 Out.prln("AST Warning: No text annotations of type " + textTagName + 88 " found, so transferring all annotations to the target set"); 89 outputAS.addAll(inputAS); 90 return; 91 } 92 93 Iterator bodyIter = bodyAnnotations.iterator(); 94 while (bodyIter.hasNext()) { 95 Annotation bodyAnn = (Annotation)bodyIter.next(); 96 Long start = bodyAnn.getStartNode().getOffset(); 97 Long end = bodyAnn.getEndNode().getOffset(); 98 99 //get all annotations we want transferred 100 AnnotationSet annots2Copy = inputAS.getContained(start, end); 101 //copy them to the new set and delete them from the old one 102 outputAS.addAll(annots2Copy); 103 inputAS.removeAll(annots2Copy); 104 } 105 106 107 } // execute() 108 109 public void setTagASName(String newTagASName) { 110 tagASName = newTagASName; 111 } 112 113 public String getTagASName() { 114 return tagASName; 115 } 116 117 public void setInputASName(String newInputASName) { 118 inputASName = newInputASName; 119 } 120 121 public String getInputASName() { 122 return inputASName; 123 } 124 125 public void setOutputASName(String newOutputASName) { 126 outputASName = newOutputASName; 127 } 128 129 public String getOutputASName() { 130 return outputASName; 131 } 132 133 public void setTextTagName(String newTextTagName) { 134 textTagName = newTextTagName; 135 } 136 137 public String getTextTagName() { 138 return textTagName; 139 } 140 141 142 } // class AnnotationSetTransfer 143
|
AnnotationSetTransfer |
|