static void writeDoc1(Document doc, PrintStream out) throws IOException { Vector<Annotation> entities = doc.annotationsOfType("entity"); if (entities == null) { System.err.println("No Entity: " + doc); return; } Iterator<Annotation> entityIt = entities.iterator(); int i = 0; while (entityIt.hasNext()) { Annotation entity = entityIt.next(); Vector mentions = (Vector) entity.get("mentions"); Iterator mentionIt = mentions.iterator(); String nameType = (String) entity.get("nameType"); while (mentionIt.hasNext()) { Annotation mention1 = (Annotation) mentionIt.next(); Annotation mention2 = new Annotation("refobj", mention1.span(), new FeatureSet()); mention2.put("objid", Integer.toString(i)); if (nameType != null) { mention2.put("netype", nameType); } doc.addAnnotation(mention2); } i++; } // remove other annotations. String[] annotypes = doc.getAnnotationTypes(); for (i = 0; i < annotypes.length; i++) { String t = annotypes[i]; if (!(t.equals("tagger") || t.equals("refobj") || t.equals("ENAMEX"))) { doc.removeAnnotationsOfType(t); } } writeDocRaw(doc, out); return; }
/** * performs the action, adding the specified Annotation. Returns the position of the end of the * Annotation. */ @Override public int perform(Document doc, PatternApplication patap) { Span span; HashMap bindings = patap.bestBindings; // System.out.println ("bindings (for new annotation): " + bindings); if (spanVariable == null) { span = new Span(patap.startPosition, patap.bestPosition); } else if (spanVariable.name.toString() == "0") { span = new Span(patap.startPosition, patap.startPosition); } else { Object value = bindings.get(spanVariable.name); if (value instanceof Span) { span = (Span) value; } else if (value instanceof Annotation) { span = ((Annotation) value).span(); } else { System.out.println("Value of " + spanVariable.toString() + " is not a span.or annotation"); return -1; } } if (Pat.trace) Console.println( "Annotating " + doc.text(span) + " as " + type + " " + features.substitute(bindings).toSGMLString()); hideAnnotations(doc, type, span); hideAnnotations(doc, "token", span); Annotation newAnnotation = new Annotation(type, span, features.substitute(bindings)); doc.addAnnotation(newAnnotation); if (bindingVariable != null) bindings.put(bindingVariable.name, newAnnotation); return span.end(); }