public Communication convertToConcrete() { if (comm != null) return comm; AnalyticUUIDGeneratorFactory f = new AnalyticUUIDGeneratorFactory(); AnalyticUUIDGenerator g = f.create(); comm = new Communication(); comm.setId(id); comm.setUuid(g.next()); comm.setType(communicationType); comm.setMetadata(Conll2011.META_GENERAL); // Tokenization for the words // TokenTagging for the POS tags // Parse for the constituency parse // TokenTagging for NER labels String sectionNum = null; Section section = null; for (Conll2011Sentence sent : sentences) { if (sectionNum == null || !sent.getPart().equals(sectionNum)) { if (section != null) comm.addToSectionList(section); section = new Section(); section.setUuid(g.next()); section.setKind(Conll2011.SECTION_TYPE); sectionNum = sent.getPart(); } section.addToSentenceList(sent.convertToConcrete(g)); } assert section != null; comm.addToSectionList(section); // SituationMentionSet for the SRL labels propBankSrlSituationMentions = new SituationMentionSet(); propBankSrlSituationMentions.setUuid(g.next()); propBankSrlSituationMentions.setMetadata(Conll2011.META_SRL); propBankSrlSituationMentions.setMentionList(new ArrayList<>()); for (Conll2011Sentence s : sentences) { for (int pai = 0; pai < s.getNumPredicates(); pai++) { SituationMention sm = s.getPredArg(pai, g); assert sm.getTokens() != null || sm.getConstituent() != null; propBankSrlSituationMentions.addToMentionList(sm); } } comm.addToSituationMentionSetList(propBankSrlSituationMentions); // EntitySet and EntityMentionSet for the coref labels addCoref(comm); // EntityMentionSet for the NER labels if (this.conll2011.addNerAsEntityMentionSet) { nerEms = new EntityMentionSet(); nerEms.setUuid(g.next()); nerEms.setMetadata(Conll2011.META_NER); nerEms.setMentionList(new ArrayList<>()); for (Conll2011Sentence s : sentences) for (EntityMention em : s.getNerEntityMentions()) nerEms.addToMentionList(em); comm.addToEntityMentionSetList(nerEms); } return comm; }
public MergedSection(Section left, Section right) { this.union = new Section(left); int nsentence = left.getSentenceListSize(); if (nsentence != right.getSentenceListSize()) throw new IllegalArgumentException( "left section has " + nsentence + " sentences but right has " + right.getSentenceListSize()); for (int i = 0; i < nsentence; i++) { Sentence sl = left.getSentenceList().get(i); Sentence sr = right.getSentenceList().get(i); MergedSentence m; try { m = new MergedSentence(sl, sr); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("in sentence " + i, e); } union.getSentenceList().set(i, m.getUnion()); } }