JsonObject writeTextAnnotation(TextAnnotation ta, boolean doWriteTokenOffsets) { // get rid of the views that are empty Set<String> viewNames = new HashSet<>(ta.getAvailableViews()); for (String vu : viewNames) { if (ta.getView(vu) == null) { logger.warn("View " + vu + " is null"); ta.removeView(vu); } } JsonObject json = new JsonObject(); writeString("corpusId", ta.getCorpusId(), json); writeString("id", ta.getId(), json); writeString("text", ta.getText(), json); writeStringArray("tokens", ta.getTokens(), json); if (doWriteTokenOffsets) writeTokenOffsets(TOKENOFFSETS, ta.getView(ViewNames.TOKENS), json); writeSentences(ta, json); JsonArray views = new JsonArray(); for (String viewName : Sorters.sortSet(ta.getAvailableViews())) { if (viewName.equals(ViewNames.SENTENCE)) continue; JsonObject view = new JsonObject(); writeString("viewName", viewName, view); views.add(view); JsonArray viewData = new JsonArray(); List<View> topKViews = ta.getTopKViews(viewName); for (View topKView : topKViews) { JsonObject kView = new JsonObject(); writeView(topKView, kView); viewData.add(kView); } view.add("viewData", viewData); } json.add("views", views); writeAttributes(ta, json); return json; }
protected String getNERString() { List<Constituent> constituents = new ArrayList<>(view.getConstituents()); Collections.sort(constituents, TextAnnotationUtilities.constituentStartComparator); StringBuilder sb = new StringBuilder(); String text = textAnnotation.getText(); int where = 0; for (Constituent c : constituents) { int start = c.getStartCharOffset(); String startstring = text.substring(where, start); sb.append(startstring) .append("[") .append(c.getLabel()) .append(" ") .append(c.getTokenizedSurfaceForm()) .append(" ] "); where = c.getEndCharOffset(); } return sb.toString(); }