为networkx图的连接组件中的每个节点分配索引

时间:2019-05-03 08:54:02

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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