如何分别获得Noun,Verb,Adjective synset?

时间:2014-01-13 05:31:44

标签: java parsing stanford-nlp wordnet

我正在使用stanford解析器进行POS标记,而我的魔杖则从标记器所做的标记中获取名词,形容词动词,副词的单独synset。 e.g。

如果我的输入查询是

Ganga是印度最大的河流,人们过去认为它是上帝

标记器的输出是:

Ganga / NNP是/ VBZ India / NNP / POS最大/ JJS河/ NN和/ CC人/ NNS使用/ VBN / /考虑/ VB it / PRP as / IN a / DT上帝/ NNP

由此我想分开名词,动词,副词和形容词,并希望分别获得相应的同义词。

如何使用JAVA编程实现这一目标?

1 个答案:

答案 0 :(得分:0)

private void btnShowTagActionPerformed(java.awt.event.ActionEvent evt) {                                           
Pattern NounPat=Pattern.compile("[A-Za-z]+/NN");
Pattern AdvPat=Pattern.compile("[A-Za-z]+/RB");
Pattern AdjPat=Pattern.compile("[A-Za-z]+/JJ");
Pattern VerbPat=Pattern.compile("[A-Za-z]+/VB.");
String StrToken;
Matcher mat;
StringTokenizer PosToken;
String TempStr;  
int j;
for(int line=0;line<SAPosTagging.tagedReview.length;line++)
{
   try{

   PosToken=new StringTokenizer(SAPosTagging.tagedReview[line]);
   while(PosToken.hasMoreTokens())
   {
       StrToken=PosToken.nextToken();
       mat=NounPat.matcher(StrToken);
       if(mat.matches())
       {
           TempStr=StrToken;
           txtareaExTagText.append("Noun=>"+StrToken);   //textarea to be appended
           j=TempStr.indexOf("/");
           TempStr=TempStr.substring(0,j);
           System.out.print("\tNoun=>"+TempStr);
       }
       mat=VerbPat.matcher(StrToken);
       if(mat.matches())
       {

           txtareaExTagText.append("\tVerb=>"+StrToken);
           TempStr=StrToken;
           j=TempStr.indexOf("/");
           TempStr=TempStr.substring(0,j);
           System.out.print("\tVerb=>"+TempStr);

       }
       mat=AdvPat.matcher(StrToken);
       if(mat.matches())
       {

           txtareaExTagText.append("\tAdverb=>"+StrToken);
           TempStr=StrToken;
           j=TempStr.indexOf("/");
           TempStr=TempStr.substring(0,j);
           System.out.print("\tAdVerb=>"+TempStr);

       }
       mat=AdjPat.matcher(StrToken);
       if(mat.matches())
       {

          txtareaExTagText.append("\tAdjective=>"+StrToken);
           TempStr=StrToken;
           j=TempStr.indexOf("/");
           TempStr=TempStr.substring(0,j);
           System.out.print("\tAdjective=>"+TempStr);

       }  
   }
   System.out.println();
   txtareaExTagText.append("\n\n");
  }catch(Exception e){}
}

}