【问题标题】:Assigning indexes to each node in a connected component of a networkx graph为networkx图的连接组件中的每个节点分配索引
【发布时间】:2019-05-03 08:54:02
【问题描述】:

我显示了一些连接的组件。其中一个组件具有五个节点,其中中间节点是公共节点。如何获取该组件中每个节点的索引,以便可以将其他节点与连词合并。

for component in nx.connected_components(graph):
    num_nodes=len(component)

    print num_nodes
    g=(
        filter(
            lambda x: x[0] in component and x[1] in component,
            graph.edges
        )
    ) 
    if num_nodes == 5:
        pl = []
        pl =  ''.join(item for tuple_ in g for item in tuple_)
        print 'Merged nodes'
        print pl
        sentences.append(pl)

输入句子是:शर्मान एक विकेट घेतली。 मयंकान तीन विकेट घेतली

输出是:घेतलीघेतलीतीनविकेटघेतलीएकविकेटएकविकेटशर्मानतीनविकेटमयंकानमयंकानमयंकानमयंकानमयंकानमयंकानमयंकानमयंकान

预期输出:शर्मान एक विकेट आनी मयंकान तीन विकेट घेतली

आनी 必须添加以组合节点。 Output of connected components

【问题讨论】:

    标签: python-2.7 jupyter-notebook networkx connected-components


    【解决方案1】:

    您使用单词作为唯一标识符,因此您没有索引数据。您的每个节点都由单词编码。此外,您首先构建了您未正确使用的图表(在所有问题之后,我真的可以说您不需要它)并丢失语言信息,然后您尝试使用一些丢失的信息重新创建数据。在您当前的问题中,您已经丢失了单词位置信息,因此您无法做您想做的事情(除非您正在索引所有节点,正如我在对您上一个问题的回答中所写的那样)。

    我建议您将NLTKIndian corpus 一起使用(它已经准备好、过滤和标记):

    from nltk.corpus import indian
    nltk.corpus.indian.words('hindi.pos')
    

    它有印地语、梵文和其他语言。您可以train Punkt tokenizer(它是可自动训练的)并完成所有工作。此外,还有 NLTK 修改 for Indian languages 或特殊的 Hindi tokenizer 存在。您不需要手动完成整个工作。你不需要networkx。一切都已经由其他程序员编写了。

    【讨论】:

    • 非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多