package com.personalityextractor.entity.extractor; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import senna.Senna; import senna.Verb; public class SRLExtractor{ /* * returns a ArrayList of lists containing Noun phrases in the arguments of each verb in the line */ public static List<List<String>> extract(String text) { List<List<String>> entities = new ArrayList<List<String>>(); Senna senna = new Senna(); String[] lines = text.split("[:;'\"?/><,\\.!@#$%^&()-+=~`{}|]+"); for (String line : lines) { if((line=line.trim()).length()==0) continue; String allLines = senna.getSennaOutput(line); HashMap<String, Verb> verbArgs = senna.parseSennaLines(allLines, line); for (String s : verbArgs.keySet()) { Verb verb = verbArgs.get(s); List<String> argEntities = new ArrayList<String>(); for (String arg : verb.argumentToNPs.keySet()) { for(String np : verb.argumentToNPs.get(arg)){ argEntities.add(np); } } entities.add(argEntities); } } return entities; } public static void main(String args[]){ String line = "Spending 9$ on an album purchase is considered atrocious while paying 15$ for a Chilies dinner once a week - doesn't even warrant a mention!"; List<List<String>> entities = extract(line); for(List<String> arr : entities){ System.out.println("Args for verb"); for(String s : arr){ System.out.println(s); } } } }