/** * Populates specified nodes array with left-most right frontier * node with a unique head. If the right frontier doesn't contain * enough nodes, then nulls are placed in the array elements. * @param rf The current right frontier. * @param nodes The array to be populated. */ protected void getFrontierNodes(List<Parse> rf, Parse[] nodes) { int leftIndex = 0; int prevHeadIndex = -1; for (int fi = 0; fi < rf.size(); fi++) { Parse fn = rf.get(fi); int headIndex = fn.getHeadIndex(); if (headIndex != prevHeadIndex) { nodes[leftIndex] = fn; leftIndex++; prevHeadIndex = headIndex; if (leftIndex == nodes.length) { break; } } } for (int ni = leftIndex; ni < nodes.length; ni++) { nodes[ni] = null; } }
int headDistance = (p0.getHeadIndex() - fn.getHeadIndex()); features.add("hd=" + headDistance); features.add("nd=" + rfi);
/** * Converts the parse from the tagger back. * * @param parseFromTagger * @return the final parse */ Parse transformParseFromTagger(Parse parseFromTagger) { int start = parseFromTagger.getSpan().getStart(); int end = parseFromTagger.getSpan().getEnd(); Parse transformedParse = new Parse(mSentence, new Span( mIndexMap.get(start), mIndexMap.get(end)), parseFromTagger.getType(), parseFromTagger.getProb(), parseFromTagger.getHeadIndex()); Parse[] parseFromTaggerChildrens = parseFromTagger.getChildren(); for (Parse child : parseFromTaggerChildrens) { transformedParse.insert(transformParseFromTagger(child)); } return transformedParse; } }
Span nameSpan = new Span(startToken.getSpan().getStart(), endToken.getSpan().getEnd()); if (nameSpan.equals(commonParent.getSpan())) { commonParent.insert(new Parse(commonParent.getText(), nameSpan, tag, 1.0, endToken.getHeadIndex())); } else { Parse[] kids = commonParent.getChildren(); tag, 1.0, endToken.getHeadIndex())); } else { if (commonParent.getType().equals("NP")) { if (grandKids.length > 1 && nameSpan.contains(grandKids[grandKids.length - 1].getSpan())) { commonParent.insert(new Parse(commonParent.getText(), commonParent.getSpan(), tag, 1.0, commonParent.getHeadIndex()));
/** * Populates specified nodes array with left-most right frontier * node with a unique head. If the right frontier doesn't contain * enough nodes, then nulls are placed in the array elements. * @param rf The current right frontier. * @param nodes The array to be populated. */ protected void getFrontierNodes(List<Parse> rf, Parse[] nodes) { int leftIndex = 0; int prevHeadIndex = -1; for (int fi = 0; fi < rf.size(); fi++) { Parse fn = rf.get(fi); int headIndex = fn.getHeadIndex(); if (headIndex != prevHeadIndex) { nodes[leftIndex] = fn; leftIndex++; prevHeadIndex = headIndex; if (leftIndex == nodes.length) { break; } } } for (int ni = leftIndex; ni < nodes.length; ni++) { nodes[ni] = null; } }
/** * Populates specified nodes array with left-most right frontier * node with a unique head. If the right frontier doesn't contain * enough nodes, then nulls are placed in the array elements. * @param rf The current right frontier. * @param nodes The array to be populated. */ protected void getFrontierNodes(List<Parse> rf, Parse[] nodes) { int leftIndex = 0; int prevHeadIndex = -1; for (int fi = 0; fi < rf.size(); fi++) { Parse fn = rf.get(fi); int headIndex = fn.getHeadIndex(); if (headIndex != prevHeadIndex) { nodes[leftIndex] = fn; leftIndex++; prevHeadIndex = headIndex; if (leftIndex == nodes.length) { break; } } } for (int ni = leftIndex; ni < nodes.length; ni++) { nodes[ni] = null; } }
int headDistance = (p0.getHeadIndex() - fn.getHeadIndex()); features.add("hd=" + headDistance); features.add("nd=" + rfi);
int headDistance = (p0.getHeadIndex() - fn.getHeadIndex()); features.add("hd=" + headDistance); features.add("nd=" + rfi);
/** * Converts the parse from the tagger back. * * @param parseFromTagger * @return the final parse */ Parse transformParseFromTagger(Parse parseFromTagger) { int start = parseFromTagger.getSpan().getStart(); int end = parseFromTagger.getSpan().getEnd(); Parse transformedParse = new Parse(mSentence, new Span( mIndexMap.get(start), mIndexMap.get(end)), parseFromTagger.getType(), parseFromTagger.getProb(), parseFromTagger.getHeadIndex()); Parse[] parseFromTaggerChildrens = parseFromTagger.getChildren(); for (Parse child : parseFromTaggerChildrens) { transformedParse.insert(transformParseFromTagger(child)); } return transformedParse; } }
p.insert(new Parse(p.getText(), parseTokens[i].getSpan(), tags[i], 1d, parseTokens[i].getHeadIndex())); p.insert(new Parse(p.getText(), new Span(0,0), chunk.getType(), 1d, p.getHeadIndex()));
1d, parseTokens[i].getHeadIndex())); p.insert(new Parse(p.getText(), new Span(0,0), chunk.getType(), 1d, p.getHeadIndex()));
Span nameSpan = new Span(startToken.getSpan().getStart(), endToken.getSpan().getEnd()); if (nameSpan.equals(commonParent.getSpan())) { commonParent.insert(new Parse(commonParent.getText(), nameSpan, tag, 1.0, endToken.getHeadIndex())); } else { Parse[] kids = commonParent.getChildren(); tag, 1.0, endToken.getHeadIndex())); } else { if (commonParent.getType().equals("NP")) { if (grandKids.length > 1 && nameSpan.contains(grandKids[grandKids.length - 1].getSpan())) { commonParent.insert(new Parse(commonParent.getText(), commonParent.getSpan(), tag, 1.0, commonParent.getHeadIndex()));
Span nameSpan = new Span(startToken.getSpan().getStart(), endToken.getSpan().getEnd()); if (nameSpan.equals(commonParent.getSpan())) { commonParent.insert(new Parse(commonParent.getText(), nameSpan, tag, 1.0, endToken.getHeadIndex())); } else { Parse[] kids = commonParent.getChildren(); tag, 1.0, endToken.getHeadIndex())); } else { if (commonParent.getType().equals("NP")) { if (grandKids.length > 1 && nameSpan.contains(grandKids[grandKids.length - 1].getSpan())) { commonParent.insert(new Parse(commonParent.getText(), commonParent.getSpan(), tag, 1.0, commonParent.getHeadIndex()));
parent.setHeadIndex(parse.getHeadIndex()); if(subtree.getChildCount() == 1 && subtree.getChildren()[0].getChildCount() == 0){ TerminalTreebankNode term = root.getTerminals(subtree.getHeadIndex()); term.setNodeType(subtree.getType()); children.set(i,term);
parent.setHeadIndex(parse.getHeadIndex()); if(subtree.getChildCount() == 1 && subtree.getChildren()[0].getChildCount() == 0){ TerminalTreebankNode term = root.getTerminals(subtree.getHeadIndex()); term.setNodeType(subtree.getType()); children.set(i,term);