как получить дерево зависимостей с парсером Stanford NLP

Как я могу получить дерево зависимостей, как показано на рисунке ниже. Я могу получить отношение зависимости как чистый текст, а также график зависимости с помощью инструмента dependencysee. Но как насчет дерева зависимостей, которое имеет слова как узлы и зависимость как ребра. Огромное спасибо!

Standard Stanford dependencies (collapsed and propagated)

Ответ 1

Эти графики создаются с использованием GraphViz, пакета чертежей с открытым исходным кодом, первоначально из AT & T Research. Вы можете найти метод toDotFormat() в edu.stanford.nlp.trees.semgraph.SemanticGraph, который преобразует SemanticGraph в формат ввода toDotFormat() в edu.stanford.nlp.trees.semgraph.SemanticGraph dot, который может отображаться dot/GraphViz. В настоящее время нет инструмента командной строки, который предоставляет эту функциональность, но довольно просто с использованием этого метода.

Ответ 2

На данный момент я имею дело с чем-то подобным. Это не идеальное решение, но это может быть полезно. как указано в ответе выше, используйте toDotFormat(), чтобы получить деревья разбора в точечном языке. затем используйте один из многих инструментов (я использую python-graph), чтобы прочитать эти данные и отобразить их как изображение. есть пример по этой ссылке http://code.google.com/p/python-graph/wiki/Example

Ответ 3

Я также очень нуждался в этом; теперь приятно видеть, что у нас есть онлайн-инструмент. Используйте это: http://graphs.grevian.org/graph (как указано здесь: http://graphs.grevian.org/)

Шаги:

  1. Разберите предложение:

    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. Распечатайте формат .to_dot() следующим образом:

    print(p.to_dot())
    
  3. Скопируйте вставку на страницу http://graphs.grevian.org/graph и нажмите кнопку "Создать".

Вы должны увидеть нужный граф.

Ответ 4

Вот как вы будете делать именно это (в 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

Я использовал это при чтении текстовой аналитики с помощью Python: CH3, прочитайте, пожалуйста, обратитесь, если вам нужна дополнительная информация о синтаксическом анализе на основе зависимостей.