论文来源:
This repo contains the source code and datasets of WWW' 19 paper: Cross-Network Embedding for Multi-Network Alignment.
代码结构不难,整个算法流程没有什么特殊的trick。简单的介绍一下CrossMNA的代码;
首先是数据处理的split.py
这个文件还是用了一些小trick的,这个代码分为两个板块,但是读了才知道,其实transfer并没有作用....只是给读者做一个观看而已
重点介绍一下他的分割split.py 这里有一些坑,这里最主要是生成了两个文件,network.pk,和new_network.txt, 但是i两个存储的内容是不同的,我们可以看到他的注释,他在pk文件中是删除了train 节点的,network.txt中没有删除 包含所有的边,生成新network的方式,主要是为了保持节点的唯一性,首先获取最大节点的数量,然后 新网络的最小id=之前最大节点id+1。
然后利用set的加减异或操作,很快得到了test和ground文件,所以其实根本不需要transfer文件代码(不信你可以删除试试,无影响)
然后是400个epoch的操作,比较简单
‘
model可以看一下:model里面的公式和论文中的一样,通过生成不同网络层的一个网络embedding 计算 r=uw+l,loss用负对数
eval_emb:
但是整个代码跑完并没有达到论文中的准确率,跑了几次 差不多相差1.5%-2%,如果只是为了得到最后的结果 建议将if epoch==50改为200 那个处理实在是太慢了。