【问题标题】:Iterate Dependency Graph items generated by Stanford Dependency Parser迭代由 Stanford Dependency Parser 生成的 Dependency Graph 项
【发布时间】:2016-06-08 22:49:51
【问题描述】:

我正在努力查看 Stanford Dependency Parser 的结果。它成功打印了信息,但我无法访问它。这是我打印结果时看到的内容。

defaultdict(<function DependencyGraph.__init__.<locals>.<lambda> at 0x075078A0>,
                        {0: {'address': 0,
                             'ctag': 'TOP',
                             'deps': defaultdict(<class 'list'>, {'root': [2]}),
                             'feats': None,
                             'head': None,
                             'lemma': None,
                             'rel': None,
                             'tag': 'TOP',
                             'word': None},
                         1: {'address': 1,
                             'ctag': 'CD',
                             'deps': defaultdict(<class 'list'>, {}),
                             'feats': '_',
                             'head': 2,
                             'lemma': '_',
                             'rel': 'nummod',
                             'tag': 'CD',
                             'word': 'seven'},
                    

如何访问这些项目?

【问题讨论】:

  • result = parser.parse('七叶') print(result[0])
  • 以上返回TypeError: 'list_iterator' object is not subscriptable
  • 既然它说它是一个迭代器,你有没有试过print(result.next())?很奇怪,因为结果应该是你问题中的默认字典......

标签: python nltk stanford-nlp dependency-parsing


【解决方案1】:

依赖图的输出是DependencyGraph类的对象。如果你跑

dir(result) # assuming result contains the parser output

您将能够看到result 对象的所有属性和方法。

['__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__unicode__',
 '__weakref__',
 '_hd',
 '_parse',
 '_rel',
 '_repr_svg_',
 '_tree',
 '_word',
 'add_arc',
 'add_node',
 'connect_graph',
 'contains_address',
 'contains_cycle',
 'get_by_address',
 'get_cycle_path',
 'left_children',
 'load',
 'nodes',
 'nx_graph',
 'redirect_arcs',
 'remove_by_address',
 'right_children',
 'root',
 'to_conll',
 'to_dot',
 'top_relation_label',
 'tree',
 'triples',
 'unicode_repr']

然后你可以遍历所有节点来访问你想要的项目。

for i in range(len(result.nodes)):
    print(f"Word: {result.nodes[i]['word']}\tLemma: {result.nodes[i]['lemma']}\tTag: {result.nodes[i]['tag']}\tHead: {result.nodes[i]['head']}\tRel: {result.nodes[i]['rel']}")

【讨论】:

    猜你喜欢
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2023-03-21
    • 2012-03-25
    • 2011-10-22
    • 2016-09-24
    相关资源
    最近更新 更多