package fna.parsing.state;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WordNetWrapper {
Hashtable<String, Integer> pos = new Hashtable<String, Integer>();
public boolean formchange = false;
public WordNetWrapper(String word){
String command = "wn " + word + " -over";
// String output = "";
String s = null;
String ptnpos = "Overview of (\\w+) (\\w+)";
Pattern ppos = Pattern.compile(ptnpos);
String ptncount = "^\\d+\\. \\((\\d+)\\) .*";
Pattern pcount = Pattern.compile(ptncount);
try{
Process r = Runtime.getRuntime().exec(command);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(r.getInputStream()));
/*BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));*/
String tag = "";
int count = 0;
while ((s= stdInput.readLine()) != null) {
//output += s;
Matcher mpos = ppos.matcher(s);
Matcher mcount = pcount.matcher(s);
if(mpos.find()){
if(tag.compareTo("") != 0){
pos.put(tag, new Integer(count));
count = 0;
}
tag = mpos.group(1);
if(mpos.group(2).compareToIgnoreCase(word) != 0){
this.formchange = true;
}
}
if(mcount.find()){
count += Integer.parseInt(mcount.group(1));
}
}
pos.put(tag, new Integer(count));
/*if(output.length() > 0){
Pattern p = Pattern.compile(ptn);
Matcher m = p.matcher(output);
while(m.find()){
pos.add(m.group(1));
}
}*/
}catch(Exception e){
e.printStackTrace();
}
}
public boolean isN(){
return pos.containsKey("noun");
}
public boolean isAdj(){
return pos.containsKey("adj");
}
public boolean isAdv(){
return pos.containsKey("adv");
}
public boolean isV(){
return pos.containsKey("verb");
}
public String mostlikelyPOS(){
int max = 0;
String tag = null;
Enumeration<String> en = pos.keys();
while(en.hasMoreElements()){
String k = en.nextElement();
Integer count = pos.get(k);
int c = count.intValue();
if(c>=max){
max = c;
tag = k;
}
}
return tag;
}
public static void main(String[] args) {
WordNetWrapper wnw = new WordNetWrapper("overlaping");
System.out.println(wnw.isAdj());
System.out.println(wnw.isAdv());
System.out.println(wnw.isN());
System.out.println(wnw.isV());
System.out.println(wnw.mostlikelyPOS());
}
}