2014-01-13 68 views
1

我正在使用斯坦福分析器进行POS标记,并使用魔杖为tagger所做的标记获取名词,形容词动词,副词的单独synset。 例如如何分别获取名词,动词,形容词synset?

如果我输入查询

恒河是印度用来考虑它作为一个神最大的河流和人民”

输出恶搞的是:

恒河/ NNP是/ VBZ印度/ NNP's/POS最大/ JJS河/ NN和/ CC人/使用NNS/VBN至/ TO考虑/ VB it/PRP as/IN a/DT God/NNP

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

如何使用JAVA编程来做到这一点?

+0

如果两个字母后跟'/'表示动词或名词,你可以试试'的​​indexOf( “/ VB”)','的indexOf( “/ NN”)'等等。 – Astrobleme

+0

indexOf(“/ VB”)是什么意思?它会输出什么? – user3189037

回答

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){} 
} 

}

+0

我认为你没有使用wordnet来获取synset。我想从POS标签中获得单独的动词,副词,名词和形容词 – user3189037

相关问题