/** @generated * @param jcas JCas to which this Feature Structure belongs * @param begin offset to the begin spot in the SofA * @param end offset to the end spot in the SofA */ public TerminalTreebankNode(JCas jcas, int begin, int end) { super(jcas); setBegin(begin); setEnd(end); readObject(); }
private static void addPhraseHead(List<TerminalTreebankNode> headList, TerminalTreebankNode newHead) { int insertPos = 0; for(int i=headList.size();i>0;i--) { if(newHead.getEnd() > headList.get(i-1).getEnd()) { insertPos = i; break; } else if(newHead.getEnd() == headList.get(i-1).getEnd()) { insertPos = -1; break; } } if(insertPos >=0 ) headList.add(insertPos, newHead); }
while (iter.hasNext()) { TerminalTreebankNode ttn = (TerminalTreebankNode) iter.next(); if (ttn.getCoveredText().equalsIgnoreCase("it")) if (isPleonastic(ttn, modalAdj, cogved, othervb)) logger.info("Pleonastic \"it\" at position "+ ttn.getIndex()+" of \""+ MarkableTreeUtils.getRoot(ttn).getCoveredText()+"\""); else ret.add(offset2token.get(ttn.getBegin()+"-"+ttn.getEnd()));
public static ConllDependencyNode markableNode(JCas jcas, int begin, int end, TreebankNode n) { // Find head of markable using treebanknode TerminalTreebankNode term = MarkableTreeUtils.getHead(n); FSIterator<Annotation> iter = jcas.getAnnotationIndex(ConllDependencyNode.type).iterator(); ConllDependencyNode best = null; while(iter.hasNext()){ Annotation a = iter.next(); if(a.getBegin() == term.getBegin() && a.getEnd() == term.getEnd()){ best = (ConllDependencyNode) a; break; } } return best; }
/** @generated * @param jcas JCas to which this Feature Structure belongs */ public TerminalTreebankNode(JCas jcas) { super(jcas); readObject(); }
features.add(new Feature("PhraseChunk_Between_FirstHead", headList.get(0).getNodeValue())); features.add(new Feature("PhraseChunk_Between_LastHead", headList.get(headList.size()-1).getNodeValue())); if(i>1) inBetweenValue += "_"; inBetweenValue += headList.get(i).getNodeValue(); if(headList.get(i).getEnd() < arg1.getBegin()) { if(!isFirst) { features.add(new Feature("PhraseChunk_Before_FirstHead", headList.get(i).getNodeValue())); isFirst = true; features.add(new Feature("PhraseChunk_Before_SecondHead", headList.get(i).getNodeValue())); break; if(headList.get(i).getBegin() > arg2.getEnd() ) { if(!isFirst) { features.add(new Feature("PhraseChunk_After_FirstHead", headList.get(i).getNodeValue())); isFirst = true; features.add(new Feature("PhraseChunk_After_SecondHead", headList.get(i).getNodeValue())); break;
List<TerminalTreebankNode> extractPhraseHeadByTreenode(JCas jCas, List<TreebankNode> treenodesList) { List<TerminalTreebankNode> rTNodeList = new ArrayList<TerminalTreebankNode>(); // get head index from phrase for(TreebankNode tb : treenodesList) { if(tb.getHeadIndex() > 0 && tb.getNodeType().endsWith("P") && !tb.getNodeType().equals("NNP")) { int headIndex = tb.getHeadIndex(); for(TerminalTreebankNode ttb : JCasUtil.selectCovered(jCas, TerminalTreebankNode.class, tb)) { if(ttb.getIndex() == headIndex) { addPhraseHead(rTNodeList, ttb); break; } } } } return rTNodeList; }
private static boolean isPleonastic (TerminalTreebankNode ttn, Set<String> modalAdj, Set<String> cogved, Set<String> othervb) { if (!ttn.getCoveredText().equalsIgnoreCase("it")) return false; if (ttn.getNodeType().equals("PRP")) { TreebankNode tn = ttn.getParent(); while (tn.getNodeType().startsWith("NP")) tn = tn.getParent();
private static TreebankNode getExpandedEvent(JCas jCas, IdentifiedAnnotation mention){ // since events are single words, we are at a terminal node: List<TerminalTreebankNode> terms = JCasUtil.selectCovered(TerminalTreebankNode.class, mention); if(terms == null || terms.size() == 0){ return null; } TreebankNode coveringNode = AnnotationTreeUtils.annotationNode(jCas, mention); if(coveringNode == null) return terms.get(0); String pos =terms.get(0).getNodeType(); // do not expand Verbs if(pos.startsWith("V")) return coveringNode; if(pos.startsWith("N")){ // get first NP node: while(coveringNode != null && !coveringNode.getNodeType().equals("NP")){ coveringNode = coveringNode.getParent(); } }else if(pos.startsWith("J")){ while(coveringNode != null && !coveringNode.getNodeType().equals("ADJP")){ coveringNode = coveringNode.getParent(); } } if(coveringNode == null) coveringNode = terms.get(0); return coveringNode; } }
public String number (Markable m){ TreebankNode node = MarkableTreeUtils.markableNode(jcas, m.getBegin(), m.getEnd()); if(node == null) return basicNumber(m); try{ TerminalTreebankNode termNode = MarkableTreeUtils.getHead(node); String pos = termNode.getNodeType(); if(pos.equals("NN") || pos.equals("NNP")) return "S"; else if(pos.equals("NNS") || pos.equals("NNPS")) return "P"; else{ // obviously there are many other pronouns but we don't cover personal pronouns and so // these are all we need. String word = termNode.getCoveredText(); if(word.equalsIgnoreCase("it")) return "S"; else if(word.equalsIgnoreCase("its")) return "S"; else if(word.equalsIgnoreCase("they")) return "P"; else if(word.equalsIgnoreCase("their")) return "P"; else return "U"; } }catch(NullPointerException e){ return basicNumber(m); } }
public static String getSplitSentence( final FSArray terminalArray ) { // int offset = 0; // what was this for? final StringBuilder sb = new StringBuilder(); for ( int i = 0; i < terminalArray.size(); i++ ) { final TerminalTreebankNode ttn = (TerminalTreebankNode)terminalArray.get( i ); final String word = WHITESPACE_PATTERN.matcher( ttn.getNodeValue() ).replaceAll( "" ); // if(i == 0) offset = ttn.getBegin(); if ( !word.isEmpty() ) { sb.append( " " ).append( word ); } } // Do we want to trim the first whitespace? return sb.toString(); }
while (iter.hasNext()) { TerminalTreebankNode ttn = (TerminalTreebankNode) iter.next(); if (ttn.getCoveredText().equalsIgnoreCase("it")) if (isPleonastic(ttn, modalAdj, cogved, othervb)) logger.info("Pleonastic \"it\" at position "+ ttn.getIndex()+" of \""+ MarkableTreeUtils.getRoot(ttn).getCoveredText()+"\""); else ret.add(offset2token.get(ttn.getBegin()+"-"+ttn.getEnd()));
public static ConllDependencyNode markableNode(JCas jcas, int begin, int end, TreebankNode n) { // Find head of markable using treebanknode TerminalTreebankNode term = MarkableTreeUtils.getHead(n); FSIterator<Annotation> iter = jcas.getAnnotationIndex(ConllDependencyNode.type).iterator(); ConllDependencyNode best = null; while(iter.hasNext()){ Annotation a = iter.next(); if(a.getBegin() == term.getBegin() && a.getEnd() == term.getEnd()){ best = (ConllDependencyNode) a; break; } } return best; }
/** Internal - constructor used by generator * @generated * @param addr low level Feature Structure reference * @param type the type of this Feature Structure */ public TerminalTreebankNode(int addr, TOP_Type type) { super(addr, type); readObject(); }
features.add(new Feature("PhraseChunk_Between_FirstHead", headList.get(0).getNodeValue())); features.add(new Feature("PhraseChunk_Between_LastHead", headList.get(headList.size()-1).getNodeValue())); if(i>1) inBetweenValue += "_"; inBetweenValue += headList.get(i).getNodeValue(); if(headList.get(i).getEnd() < arg1.getBegin()) { if(!isFirst) { features.add(new Feature("PhraseChunk_Before_FirstHead", headList.get(i).getNodeValue())); isFirst = true; features.add(new Feature("PhraseChunk_Before_SecondHead", headList.get(i).getNodeValue())); break; if(headList.get(i).getBegin() > arg2.getEnd() ) { if(!isFirst) { features.add(new Feature("PhraseChunk_After_FirstHead", headList.get(i).getNodeValue())); isFirst = true; features.add(new Feature("PhraseChunk_After_SecondHead", headList.get(i).getNodeValue())); break;
List<TerminalTreebankNode> extractPhraseHeadByTreenode(JCas jCas, List<TreebankNode> treenodesList) { List<TerminalTreebankNode> rTNodeList = new ArrayList<TerminalTreebankNode>(); // get head index from phrase for(TreebankNode tb : treenodesList) { if(tb.getHeadIndex() > 0 && tb.getNodeType().endsWith("P") && !tb.getNodeType().equals("NNP")) { int headIndex = tb.getHeadIndex(); for(TerminalTreebankNode ttb : JCasUtil.selectCovered(jCas, TerminalTreebankNode.class, tb)) { if(ttb.getIndex() == headIndex) { addPhraseHead(rTNodeList, ttb); break; } } } } return rTNodeList; }
private static boolean isPleonastic (TerminalTreebankNode ttn, Set<String> modalAdj, Set<String> cogved, Set<String> othervb) { if (!ttn.getCoveredText().equalsIgnoreCase("it")) return false; if (ttn.getNodeType().equals("PRP")) { TreebankNode tn = ttn.getParent(); while (tn.getNodeType().startsWith("NP")) tn = tn.getParent();
private static TreebankNode getExpandedEvent(JCas jCas, IdentifiedAnnotation mention){ // since events are single words, we are at a terminal node: List<TerminalTreebankNode> terms = JCasUtil.selectCovered(TerminalTreebankNode.class, mention); if(terms == null || terms.size() == 0){ return null; } TreebankNode coveringNode = AnnotationTreeUtils.annotationNode(jCas, mention); if(coveringNode == null) return terms.get(0); String pos =terms.get(0).getNodeType(); // do not expand Verbs if(pos.startsWith("V")) return coveringNode; if(pos.startsWith("N")){ // get first NP node: while(coveringNode != null && !coveringNode.getNodeType().equals("NP")){ coveringNode = coveringNode.getParent(); } }else if(pos.startsWith("J")){ while(coveringNode != null && !coveringNode.getNodeType().equals("ADJP")){ coveringNode = coveringNode.getParent(); } } if(coveringNode == null) coveringNode = terms.get(0); return coveringNode; } }
public String number (Markable m){ TreebankNode node = MarkableTreeUtils.markableNode(jcas, m.getBegin(), m.getEnd()); if(node == null) return basicNumber(m); try{ TerminalTreebankNode termNode = MarkableTreeUtils.getHead(node); String pos = termNode.getNodeType(); if(pos.equals("NN") || pos.equals("NNP")) return "S"; else if(pos.equals("NNS") || pos.equals("NNPS")) return "P"; else{ // obviously there are many other pronouns but we don't cover personal pronouns and so // these are all we need. String word = termNode.getCoveredText(); if(word.equalsIgnoreCase("it")) return "S"; else if(word.equalsIgnoreCase("its")) return "S"; else if(word.equalsIgnoreCase("they")) return "P"; else if(word.equalsIgnoreCase("their")) return "P"; else return "U"; } }catch(NullPointerException e){ return basicNumber(m); } }
public static String getSplitSentence( final FSArray terminalArray ) { // int offset = 0; // what was this for? final StringBuilder sb = new StringBuilder(); for ( int i = 0; i < terminalArray.size(); i++ ) { final TerminalTreebankNode ttn = (TerminalTreebankNode)terminalArray.get( i ); final String word = WHITESPACE_PATTERN.matcher( ttn.getNodeValue() ).replaceAll( "" ); // if(i == 0) offset = ttn.getBegin(); if ( !word.isEmpty() ) { sb.append( " " ).append( word ); } } // Do we want to trim the first whitespace? return sb.toString(); }