2012-06-11 15 views
13

Ich habe einen Text, den ich die Nominalphrasen daraus extrahieren möchte. Ich kann leicht den getippten Parser für den Text erhalten, den ich habe, aber mich wundernd, wie ich die Nominalphrasen im Text extrahieren kann?Extrahieren von Nominalphrasen aus einer Textdatei mit Stanford typisierten Parser

+1

Ich habe versucht, Stanford getippt Parser zu bekommen, aber immer noch Fragen, die die Nominalphrase repräsentiert Tags ist! –

+0

U benötigen NLP-Tools. Überprüfen Sie diese Frage http://stackoverflow.com/questions/1889675/extract-nouns-from-text-java –

+0

Warum verwenden Sie an erster Stelle einen Abhängigkeitsparser? Ein normaler Parse-Baum-Generator scheint so zu sein für das, was Sie wollen. –

Antwort

0

Sie können Stanford Core NLP für das POS-Tagging verwenden. Sie können einen Beispielcode unter http://nlp.stanford.edu/software/corenlp.shtml#Usage finden, der ein guter Ausgangspunkt für Experimente sein könnte. Sie müssten Tokenize, Split und Pos als Eigenschaften angeben. Dies gibt eine Liste von Token mit ihren entsprechenden Tags aus.

Die gesamte Tag-Liste kann unter http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html angezeigt werden. Alle Nomen-Tags würden mit NN beginnen. Wenn Sie diese Prüfung durchführen, erhalten Sie die erforderlichen Token.

7

Versuchen Sie diese link auch. Ich bin mir nicht sicher, ob der Stanford POS-Tagger und der Tagger im corenlp identisch sind oder nicht, aber ich fand diesen Link nützlicher.

Nach dem PoS-Tagging müssen Sie Muster wie diese erkennen (Adjektiv | Substantiv) * (Substantiv)? (Adjektiv | Nomen) * Nomen

Probieren Sie diese link für einige Details zur Erkennung der Substantivphrase.

9

Sie können Nominalphrasen aus Tree extrahieren, indem Sie den folgenden Code verwenden. Es wird davon ausgegangen Sie Satz in Parse gespeichert analysiert haben (das heißt Parse ausgegeben von LexicalizedParser Klasse gelten Methode)

public static List<Tree> GetNounPhrases() 
{ 

    List<Tree> phraseList=new ArrayList<Tree>(); 
    for (Tree subtree: parse) 
    { 

     if(subtree.label().value().equals("NP")) 
     { 

     phraseList.add(subtree); 
     System.out.println(subtree); 

     } 
    } 

     return phraseList; 

} 
Verwandte Themen