blob: 61e8f130e7881950b3ca2f2197a004020b477e3f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package opennlp.tools.parse_thicket.external_rst;
import org.apache.commons.lang.StringUtils;
import opennlp.tools.similarity.apps.utils.Pair;
public class RstNode {
Boolean isNucleus;
Pair<Integer, Integer> span;
Integer leaf;
String rel2par;
String text;
Integer level;
public Boolean getIsNucleus() {
return isNucleus;
}
public void setIsNucleus(Boolean isNucleus) {
this.isNucleus = isNucleus;
}
public Pair<Integer, Integer> getSpan() {
return span;
}
public void setSpan(Pair<Integer, Integer> span) {
this.span = span;
}
public Integer getLeaf() {
return leaf;
}
public void setLeaf(Integer leaf) {
this.leaf = leaf;
}
public String getRel2par() {
return rel2par;
}
public void setRel2par(String rel2par) {
this.rel2par = rel2par;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String toString() {
String ret = "";
if (isNucleus!=null && isNucleus)
ret+="Nucleus ";
if (span!=null)
ret+="["+span.getFirst()+" "+ span.getSecond()+"]";
ret += " >> "+ rel2par;
if (text!=null)
ret+= " >> "+text;
return ret;
}
public RstNode(String line) {
if (StringUtils.trim(line).startsWith(")"))
return;
level = line.indexOf("(");
line = line.substring(line.indexOf("(")+2);
isNucleus = line.substring(0, line.indexOf("(")).indexOf("Nucleus")>-1;
line = line.substring(line.indexOf("(")+1);
if (line.startsWith("span")){
line = line.substring(5);
try {
span = new Pair<Integer, Integer>();
String[] spanStr = line.substring(0, line.indexOf(")")).split(" ");
span.setFirst(Integer.parseInt(spanStr[0]));
span.setSecond(Integer.parseInt(spanStr[1]));
} catch (Exception e) {
e.printStackTrace();
}
} else if (line.startsWith("leaf")){
try {
String leafStr = line.substring(5, line.indexOf(")"));
leaf = Integer.parseInt(leafStr);
} catch (Exception e) {
e.printStackTrace();
}
} else System.err.println("Problem parsing RST results: '"+line);
line = line.substring(line.indexOf("rel2par")+8);
rel2par = line.substring(0, line.indexOf(")")).trim();
text = StringUtils.substringBetween(line, "_!", "_!)");
}
public static void main(String[] args){
RstNode n1 = new RstNode(" ( Nucleus (leaf 7) (rel2par span) (text _!that it usually takes a day_!) )"),
n2 = new RstNode(" )"),
n3 = new RstNode(" ( Satellite (span 15 16) (rel2par Explanation)");
}
}