" graph2vec"输入数据格式

时间:2018-02-02 20:25:45

标签: python-3.x tensorflow graph word2vec gensim

我想申请" graph2vec"代码到我自己的数据集。但是,我无法弄清楚如何正确格式化输入数据,也无法理解" github"中可用的示例的输入数据格式。作者的页面。我的数据集中的网络具有整数节点和二进制标签,因此它是具有三列的数据帧。如果有人能指出我正确的方向,我感激不尽。

" graph2vec"在github上:https://github.com/MLDroid/graph2vec_tf

" graph2vec"在arxiv:https://arxiv.org/pdf/1707.05005.pdf

1 个答案:

答案 0 :(得分:1)

make_graph2vec_corpus.py文件graph2vec中,您可以阅读

graphs = [nx.read_gexf(fname) for fname in fnames]

表示图形文件是通过read_gexf包的networkx方法读取的。实际上,除非您更改该代码,否则数据必须位于GEXF format

GEXF文件以XML格式编码,它们包含一个名为gexf的主要元素,其中包含一个元素graph,该元素同样包含三个子元素:attributes,{{1} }和nodes

在我们的例子中,edges元素只有一个子元素:

attributes

这意味着对于包含节点的数字属性的属性,您需要属性编号<attribute id="0" title="Label" type="string" /> (例如,如果您的图形是句子的依赖关系树,那么该属性可以是您的单词的索引嵌入,或再次其POS标签,或其他)。 0元素包含一个

nodes

图表的每个节点的子节点。其中, <node id="0" label="0"> <attvalues> <attvalue for="0" value="3" /> </attvalues> </node> 子元素包含节点的数字属性。最后,attvalue元素包含一个孩子

edges

对于图的每个边缘:这里我们将边的标签作为属性 <edge id="0" source="0" target="1" /> ,将源节点的标签作为id,将目标节点的标签作为source }。

如果您想查看示例GEXF文件,它们位于target包内的data.tar.gz存档中。

除了每个单独图形的数据(由具有数字属性和边缘的节点组成)之外,您还需要在训练数据中提供图形类。这些文件存储在扩展名为graph2vec的文件中,每个图表包含一行:

.Labels

其中0.gexf 6 是包含图表的GEXF文件的名称,0.gexf是其类。