如何使用Stanford NLP解析器获取依赖关系树

时间:2012-11-20 08:03:02

标签: stanford-nlp

如何获得依赖树,如下图所示。我可以将依赖关系作为纯文本,并在dependencysee工具的帮助下获得依赖图。但是依赖树如何将单词作为节点和依赖作为边缘。非常感谢!

Standard Stanford dependencies (collapsed and propagated)

4 个答案:

答案 0 :(得分:8)

这些图是使用最初来自AT& T Research的开源图绘图包GraphViz生成的。您可以在toDotFormat()中找到一种方法edu.stanford.nlp.trees.semgraph.SemanticGraph,该方法会将SemanticGraph转换为dot输入语言格式,该格式可由dot / GraphViz呈现。目前,没有提供此功能的命令行工具,但使用该方法非常简单。

答案 1 :(得分:3)

以下是您将如何做到这一点(在python中

安装所有必需的依赖项(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 ,读好,如果您需要有关基于依赖的解析的更多信息,请参考。

答案 2 :(得分:2)

我正在处理类似的事情。这不是一个理想的解决方案,但它可能会有所帮助。如上面的答案所述,使用toDotFormat()以点语言获取解析树。然后使用众多工具之一(我使用python-graph)读取这些数据并将其渲染为图片。这个链接上有一个例子http://code.google.com/p/python-graph/wiki/Example

答案 3 :(得分:2)

我也非常需要它;现在很高兴看到我们也有一个在线工具。使用此:http://graphs.grevian.org/graph(如此处所述:http://graphs.grevian.org/

步骤如下:

  1. 解析句子:

    c = a
    a = b
    b = b + c
    
  2. 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()
  3. 将输出复制粘贴到http://graphs.grevian.org/graph,然后按“生成”按钮。

  4. 您应该看到所需的图表。