2014-02-14 4 views
-1

** 나는 정서 분석에 관한 프로젝트를 만들고 있습니다. 그래서 나는 stanford POS tagger를 사용하여 문장에 태그를 붙였습니다. 문장에서 명사구를 추출하고 싶지만 명사를 붙이기 만했습니다. 어떻게 명사구를 얻을 수 있습니까? 내가 자바에서 코드. 내가 웹 사이트에 검색하고 난 명사구 만들기위한이 발견 : | * (명사 전치사)스탠포드 POS 태거를 사용하여 정서 분석에서 명사 구하기

(명사 형용사) : 명사구를 들어 을,이 패턴 또는 정규 표현식은 다음과 같다? (형용사 | 명사) * 명사 즉, 0 개 이상의 형용사 또는 명사, 명사와 전치사의 옵션 그룹, 0 개 이상의 형용사 또는 명사 다음에 단일 명사가옵니다.

저는 java의 reguler 표현 라이브러리를 사용하여 코드를 작성하려고했습니다. ie regex. 그러나 couldnt는 원하는 결과를 발견한다. 누군가 코드를 가지고 있습니까? **

답변

1

나는 이것을 코드화했다. 그리고 해결책은 .. 명사 만 포함하는 문장에서 명사구를 모두 초과 작성합니다. 예 : NP와 같습니다 : 흰 호랑이. 그것은 "흰 호랑이"를 추출합니다.

public static void maketree(String sent, int sno, Sentences sen) 
{ 
    try 
    { 
     LexicalizedParser parser = LexicalizedParser.loadModel("stanford-parser-full-2014-01-04\\stanford-parser-3.3.1-models\\edu\\stanford\\nlp\\models\\lexparser\\englishPCFG.ser.gz"); 
     String sent2 = "Picture Quality of this camera is very good"; 
     String sent1[] = sent2.split(" "); 
     List<CoreLabel> rawWords = Sentence.toCoreLabelList(sent1); 
     Tree x = parser.apply(rawWords); 
     x.indexLeaves(); 
     System.out.println(x); 
     findNP(x,sen); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

public static void findNP(Tree t, Sentences sent) 
{ 
    if (t.label().value().equals("NP")) 
    { 
     noun(t,sent); 
    } 
    else 
    { 
     for (Tree child : t.children()) 
     {     
      findNP(child,sent); 
     } 
    } 

} 

    public static void noun(Tree t,Sentences sent) 
{  
    String noun=""; 
    for(Tree temp : t.children()) 
    { 
     String val = temp.label().value(); 
     if(val.equals("NN") || val.equals("NNS") || val.equals("NNP") || val.equals("NNPS")) 
     { 
      Tree nn[] = temp.children(); 
      String ss = Sentence.listToString(nn[0].yield()); 
      if(noun=="") 
      { 
       noun = ss; 
      } 
      else 
      { 
       noun = noun+" "+ss; 
      } 
     } 
     else 
     { 
      if(noun!="") 
      { 
       sent.nouns[i++] = noun; 
       noun = ""; 
      } 
      noun(temp,sent); 
     } 
    } 
    if(noun!="") 
    { 
     sent.nouns[i++] = noun; 
    } 
} 
0

링크를 확인하고 이에 대한 의견을 보내주십시오. "white tiger"가 위의 code.probably와 같은 결과를 얻을 것이면 코드가 완전하지 않으며 thats 왜 내가 약간의 오류가 발생하는지. 예 용

:

sent.nouns [내가 ++] = 명사는; // sent.nouns ????? 그것은 정의되지 않은 것으로 보인다. 전체 코드를 얻을 수 있을까요, 아니면 아래 링크에서 커넷을 할 수 있습니까? 여기

링크에게 도움을

Extract Noun phrase using stanford NLP

감사입니다

관련 문제