Как сделать граф на Python, описывающий синтаксис WordNet (NLTK) - PullRequest
2 голосов
/ 06 июля 2019

Я здесь совершенно нуб, так что прости меня за мои грехи. Вот в чем проблема: хотя я только скопировал код из руководства под названием «Обработка естественного языка с Python», я не могу найти способ создать график для кода, который я опубликую ниже. Моя "единственная" цель - показать в моей диссертации, как коды взаимодействуют с графиками в WordNet. Вот код:

# Natural Language Toolkit: code_networkx

import networkx as nx
import matplotlib
from nltk.corpus import wordnet as wn

def traverse(graph, start, node):
    graph.depth[node.name] = node.shortest_path_distance(start)
    for child in node.hyponyms():
        graph.add_edge(node.name, child.name) # [_add-edge]
        traverse(graph, start, child) # [_recursive-traversal]

def hyponym_graph(start):
    G = nx.Graph() # [_define-graph]
    G.depth = {}
    traverse(G, start, start)
    return G

def graph_draw(graph):
    nx.draw_graphviz(graph,
         node_size = [16 * graph.degree(n) for n in graph],
         node_color = [graph.depth[n] for n in graph],
         with_labels = False)
    matplotlib.pyplot.show()



>>> dog = wn.synset('dog.n.01')
>>> graph = hyponym_graph(dog)
>>> graph_draw(graph)

Никаких ошибок не появилось, но все же здесь нет графика. Извините за длину сообщения, но я действительно в ваших руках! : /

1 Ответ

0 голосов
/ 08 июля 2019

Это не работает, потому что вы полагаетесь на graphviz. Вот пример использования, который работает:

import networkx as nx 
import matplotlib.pyplot as plt 

G = nx.petersen_graph()
nx.draw(G)
plt.show()

Итак, вы должны сделать что-то вроде следующего:

def graph_draw(graph):
    nx.draw_shell(graph)
    matplotlib.pyplot.show()

Ссылка на официальную документацию .

...