首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Graph_tool的find_vertex()会引发异常

Graph_tool的find_vertex()会引发异常
EN

Stack Overflow用户
提问于 2012-07-02 18:21:48
回答 1查看 375关注 0票数 0

我生成了一个以句子的单词为标记,以依存关系为边的图。

此信息来自((word,index),(word,index),(word,index),relation.tuple)格式的外部工具。每个单词可以有许多依赖项,我希望每个单词只有一个节点。

当我处理每个依赖项时,我想通过它们的ID来搜索它,但是当我尝试使用find_vertex()时,我得到了下一个异常:

代码语言:javascript
复制
TypeError: No registered converter was able to extract a C++ reference to type graph_tool::GraphInterface from this Python object of type Graph

代码如下:

代码语言:javascript
复制
def graph(self, sentence, sentenceNamespace="sentence", separator="_"):
    graph = Graph()
    root_node = graph.add_vertex()
    # Create a link to Root Node
    graph.graph_properties['root'] = graph.new_graph_property("python::object", root_node)
    # Create Node's properties
    graph.vertex_properties['id'] = graph.new_vertex_property("string")
    graph.vertex_properties['form'] = graph.new_vertex_property("string")
    graph.vertex_properties['ord'] = graph.new_vertex_property("int64_t")
    # Create edge's properties
    graph.edge_properties['type'] = graph.new_edge_property("string")
    # Create the root node
    graph.vertex_properties['form'][root_node] = "S"
    graph.vertex_properties['ord'][root_node] = -1
    # Find or create the dependant and governor nodes and link with a new edge
    for dependency in self.dependency(sentence):
        dependency_governor = dependency[0]
        # Governor's generated ID
        governor_name = "{1}{0}{2[0]}{0}{1[1]}".format(separator, sentenceNamespace,dependency_governor )
        dependency_dependant = dependency[1]
        # Dependant's generated ID
        dependant_name = "{1}{0}{2[0]}{0}{1[1]}".format(separator, sentenceNamespace, dependency_dependant)
        # Relation Type
        relation = dependency[2]

# This is the problematic Line ################################################

        governor = find_vertex(graph, graph.vertex_properties['id'], governor_name)

##############################################################
        # If search is successful use the first node else create a new one
        if governor :
            governor = governor[0]
        else:
            governor = graph.add_vertex()
            graph.vertex_properties['id'][governor] = governor_name
            graph.vertex_properties['form'][governor] = dependency_governor[0]
            graph.vertex_properties['ord'][governor] = dependency_governor[1]

        dependant = find_vertex(graph, 'id', dependant_name)
        # If search is successful use the first node else create a new one
        if dependant :
            dependant = dependant[0]
        else:
            dependant = graph.add_vertex()
            graph.vertex_properties['id'][dependant] = dependant_name
            graph.vertex_properties['form'][dependant] = dependant_dependant[0]
            graph.vertex_properties['ord'][dependant] = dependency_dependant[1]
        # Link the nodes with the new dependency relation
        dependency_edge = graph.add_edge(governor, dependant)
        graph.edge_properties['type'][dependency_edge]= relation
    return graph
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-10 23:48:34

此错误已在git版本中修复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11291783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档