title: NetworkX and Wordnet
body: <p>Managed to create a hypernym graph but keep on getting bound method Synset.name of Synset('dog.n') instead of dog.n in the graph. Where is the mistake?</p>
  
  <pre><code>from nltk.corpus import wordnet as wn
  import networkx as nx
  import matplotlib.pyplot as plt
  
  def closure_graph(synset, fn):
      seen = set()
      graph = nx.DiGraph()
  
      def recurse(s):
          if not s in seen:
              seen.add(s)
              graph.add_node(s.name)
              for s1 in fn(s):
                  graph.add_node(s1.name)
                  graph.add_edge(s.name, s1.name)
                  recurse(s1)
  
      recurse(synset)
      return graph
  
  
  dog = wn.synsets('dog')[0]
  G = closure_graph(dog,
                        lambda s: s.hypernyms())
  index = nx.betweenness_centrality(G)
  plt.rc('figure', figsize=(12, 7))
  node_size = [index[n]*1000 for n in G]
  pos = nx.spring_layout(G)
  nx.draw_networkx(G, pos, node_size=node_size, edge_color='r', alpha=.3, linewidths=0)
  plt.show()
  </code></pre>
  
  <p><strong>Edit 1:</strong></p>
  
  <p>Managed to create a hypernym graph but keep on getting bound method Synset.name of Synset('dog.n') instead of dog.n in the graph. Where is the mistake?</p>