package tathya.semantics;
import java.util.ArrayList;
import java.util.List;
public class Event {
private List<String> words;
private List<String> posTags;
public Event(ArrayList<String> lines) {
this.words = new ArrayList<String>();
this.posTags = new ArrayList<String>();
this.parseLines(lines);
}
public List<String> getWords() {
return words;
}
public List<String> getPosTags() {
return posTags;
}
public List<String> getEntities() {
List<String> entities = new ArrayList<String>();
int sindex = -1;
int eindex = -1;
boolean nnpFlag = false;
for(int i=0; i<this.posTags.size(); i++) {
String tag = this.posTags.get(i);
if(tag.equals("NNP") || tag.equals("NN") || tag.equals("DT")) {
if(tag.equals("DT") && !nnpFlag) {
continue;
}
if(!nnpFlag) {
sindex = i;
}
nnpFlag = true;
continue;
}
if(nnpFlag) {
eindex = i-1;
entities.add(this.substring(sindex, eindex));
sindex = -1;
eindex = -1;
nnpFlag = false;
}
}
return entities;
}
private String substring(int sindex, int eindex) {
StringBuffer buf = new StringBuffer();
for(int i=sindex; i<=eindex; i++) {
buf.append(this.words.get(i) + " ");
}
return buf.toString().trim();
}
private void parseLines(ArrayList<String> lines) {
for(String line : lines) {
String[] tokens = line.split("[ \t]+");
if(tokens.length <2)
continue;
this.words.add(tokens[0]);
this.posTags.add(tokens[1]);
}
}
}