2012-11-20 10 views
11

Wie bekomme ich den Abhängigkeitsbaum wie Abbildung unten. Ich kann die Abhängigkeitsbeziehung als reinen Text und auch den Abhängigkeitsgraphen mit Hilfe des Abhängigkeitswerkzeugs erhalten. Aber wie steht es mit dem Abhängigkeitsbaum, der Wörter als Knoten und Abhängigkeiten als Kanten hat? Vielen Dank!Wie bekomme ich einen Abhängigkeitsbaum mit Stanford NLP Parser

Standard Stanford dependencies (collapsed and propagated)

Antwort

8

Diese Diagramme werden mit GraphViz hergestellt, Paket eine Open-Source-Zeichnen von Graphen, die ursprünglich von AT & T Research. Sie können eine Methode toDotFormat() in edu.stanford.nlp.trees.semgraph.SemanticGraph finden, die ein SemanticGraph in ein dot Eingabesprachformat konvertiert, das von dot/GraphViz gerendert werden kann. Gegenwärtig gibt es kein Befehlszeilentool, das diese Funktionalität bereitstellt, aber es ist ziemlich einfach, diese Methode zu verwenden.

2

Ich habe im Moment etwas ähnliches. Dies ist keine ideale Lösung, kann aber hilfreich sein. Wie in der obigen Antwort erwähnt, verwenden Sie die toDotFormat(), um die Parsebäume in Punktsprache zu erhalten. dann benutze eines der vielen tools (ich benutze python-graph) um diese daten zu lesen und als bild zu rendern. Es gibt ein Beispiel für diesen Link http://code.google.com/p/python-graph/wiki/Example

1

Ich auch dringend benötigt; Jetzt ist es schön zu sehen, dass wir auch ein Online-Tool haben. Verwenden Sie diese Option: http://graphs.grevian.org/graph (wie hier erwähnt: http://graphs.grevian.org/)

Die Schritte sind:

  1. den Satz Parse:

    sent = 'What is the step by step guide to invest in share market in india?' 
    p = dep_parser.raw_parse(sent) 
    for e in p: 
        p = e 
        break 
    
  2. Drucken Sie die .to_dot() Format:

    print(p.to_dot()) 
    
  3. Kopieren Sie die Paste Ausgabe an http://graphs.grevian.org/graph und drücken Sie die Schaltfläche Generieren.

Sie sollten das gewünschte Diagramm sehen.

+0

Danke Christopher. Wirklich nett von dir. – user1953366

1

Hier ist, wie Sie genau das tun würde (in Python)

alle benötigten Abhängigkeiten installieren (OS X):

# assuming you have java installed and available in PATH 
# and homebrew installed 

brew install stanford-parser 
brew install graphviz 
pip install nltk 
pip install graphviz 

Code:

import os 
from nltk.parse.stanford import StanfordDependencyParser 
from graphviz import Source 

# make sure nltk can find stanford-parser 
# please check your stanford-parser version from brew output (in my case 3.6.0) 
os.environ['CLASSPATH'] = r'/usr/local/Cellar/stanford-parser/3.6.0/libexec' 

sentence = 'The brown fox is quick and he is jumping over the lazy dog' 

sdp = StanfordDependencyParser() 
result = list(sdp.raw_parse(sentence)) 

dep_tree_dot_repr = [parse for parse in result][0].to_dot() 
source = Source(dep_tree_dot_repr, filename="dep_tree", format="png") 
source.view() 

was ergibt:

enter image description here

habe ich dies beim Lesen Text Analytics With Python: CH3, gut zu lesen, Referenz bitte, wenn Sie weitere Informationen über abhängigkeitsbasierte Analyse benötigen.

Verwandte Themen