2012-11-20 6 views
11

次の図のように依存関係ツリーを取得するにはどうすればよいですか。私は純粋なテキストとして依存関係を得ることができ、依存関係の助けを借りて依存グラフを得ることもできます。しかし、ノードとしての単語とエッジとしての依存関係を持つ依存関係ツリーはどうでしょうか?どうもありがとう!スタンフォードNLPパーサーを使用して依存ツリーを取得する方法

Standard Stanford dependencies (collapsed and propagated)

答えて

8

これらのグラフは、もともと& T研究ATから、GraphViz、オープンソースのグラフ描画パッケージを用いて製造されます。 dot/GraphVizでレンダリングできるdot入力言語形式にSemanticGraphを変換するtoDotFormat()edu.stanford.nlp.trees.semgraph.SemanticGraphに見つけることができます。現在のところ、この機能を提供するコマンドラインツールはありませんが、その方法を使用するとかなり簡単です。

2

私は現時点で同様のものを扱っています。これは理想的な解決策ではありませんが、参考になるかもしれません。上の答えで述べたように、toDotFormat()を使用して、ドット言語で解析木を取得します。多くのツール(私はpython-graphを使っています)の一つを使って、このデータを読んで絵として描画します。このリンクの例がありますhttp://code.google.com/p/python-graph/wiki/Example

1

私もそれが大いに必要でした。オンラインツールがあることを確認することは素晴らしいことです。これを使用します。http://graphs.grevian.org/graphを(ここで述べたように:http://graphs.grevian.org/)は

手順は次のとおりです。

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 
  • 印刷.to_dot()フォーマットとして:

    print(p.to_dot()) 
    
    1. が文を解析します

    2. コピー貼り付けhttp://graphs.grevian.org/graphに出力し、Generateボタンを押します。

    希望のグラフが表示されます。ここで

    +0

    Thanks Christopher。本当にあなたの素敵です。 – user1953366

    1

    はあなたが必要なすべての依存関係(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 
    

    コード:

    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() 
    

    この結果:

    enter image description here

    Text Analytics With Pythonを読んだとき、私はこれを使用:あなたは依存ベースの解析についての詳細情報が必要な場合CH3、良い読み取りは、参照してください。