как получить дерево зависимостей с парсером 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/)
Шаги:
-
Разберите предложение:
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())
-
Скопируйте вставку на страницу 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, прочитайте, пожалуйста, обратитесь, если вам нужна дополнительная информация о синтаксическом анализе на основе зависимостей.